diff --git a/Android.bp b/Android.bp
index 052bb595a53a1944855638589d99f190427e0764..97fd3e7c0844fa30ec1d00f49bd6209225a8ccf7 100755
--- a/Android.bp
+++ b/Android.bp
@@ -1759,6 +1759,7 @@ droidstubs {
last_released: {
api_file: ":last-released-public-api",
removed_api_file: "api/removed.txt",
+ baseline_file: ":public-api-incompatibilities-with-last-released",
},
},
jdiff_enabled: true,
@@ -1784,6 +1785,7 @@ droidstubs {
last_released: {
api_file: ":last-released-system-api",
removed_api_file: "api/system-removed.txt",
+ baseline_file: ":system-api-incompatibilities-with-last-released"
},
},
jdiff_enabled: true,
diff --git a/api/test-current.txt b/api/test-current.txt
index 6f0b6a809c9c7449ffc5523b1c62cf41e7726be0..d3bea18fb9447cdb904c5d4126d836c20875de06 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -54,6 +54,7 @@ package android.app {
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
method public long getTotalRam();
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
+ method public static boolean isHighEndGfx();
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public void removeOnUidImportanceListener(android.app.ActivityManager.OnUidImportanceListener);
method public static void resumeAppSwitches() throws android.os.RemoteException;
method @RequiresPermission(android.Manifest.permission.CHANGE_CONFIGURATION) public void scheduleApplicationInfoChanged(java.util.List, int);
@@ -2343,6 +2344,7 @@ package android.provider {
field public static final String LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST = "location_ignore_settings_package_whitelist";
field public static final String LOW_POWER_MODE = "low_power";
field public static final String LOW_POWER_MODE_STICKY = "low_power_sticky";
+ field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
field public static final String OVERLAY_DISPLAY_DEVICES = "overlay_display_devices";
field public static final String USE_OPEN_WIFI_PACKAGE = "use_open_wifi_package";
}
@@ -2366,7 +2368,7 @@ package android.provider {
field public static final String LOCATION_ACCESS_CHECK_DELAY_MILLIS = "location_access_check_delay_millis";
field public static final String LOCATION_ACCESS_CHECK_INTERVAL_MILLIS = "location_access_check_interval_millis";
field public static final String NOTIFICATION_BADGING = "notification_badging";
- field public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+ field @Deprecated public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
field @RequiresPermission(android.Manifest.permission.WRITE_SECURE_SETTINGS) public static final String SYNC_PARENT_SOUNDS = "sync_parent_sounds";
field public static final String USER_SETUP_COMPLETE = "user_setup_complete";
field public static final String VOICE_INTERACTION_SERVICE = "voice_interaction_service";
@@ -3255,10 +3257,13 @@ package android.view {
}
@UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
+ method @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, to="auto"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES, to="yes"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO, to="no"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS, to="yesExcludeDescendants"), @android.view.ViewDebug.IntToString(from=android.view.View.IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS, to="noExcludeDescendants")}) public int getImportantForContentCapture();
method public android.view.View getTooltipView();
method public boolean isAutofilled();
method public static boolean isDefaultFocusHighlightEnabled();
method public boolean isDefaultFocusHighlightNeeded(android.graphics.drawable.Drawable, android.graphics.drawable.Drawable);
+ method public final boolean isImportantForContentCapture();
+ method public void onProvideContentCaptureStructure(@NonNull android.view.ViewStructure, int);
method protected void resetResolvedDrawables();
method public void resetResolvedLayoutDirection();
method public void resetResolvedPadding();
@@ -3269,7 +3274,13 @@ package android.view {
method public boolean restoreFocusNotInCluster();
method public void setAutofilled(boolean);
method public final void setFocusedInCluster();
+ method public void setImportantForContentCapture(int);
method public void setIsRootNamespace(boolean);
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0; // 0x0
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 2; // 0x2
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 8; // 0x8
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 1; // 0x1
+ field public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 4; // 0x4
}
public class ViewConfiguration {
diff --git a/cmds/bootanimation/bootanim.rc b/cmds/bootanimation/bootanim.rc
index 469c9646a4aa8af3fca0d2154af48d32b33c6eac..9f4f314a4324d736c6f3049041891a7d01fea2ce 100644
--- a/cmds/bootanimation/bootanim.rc
+++ b/cmds/bootanimation/bootanim.rc
@@ -4,4 +4,5 @@ service bootanim /system/bin/bootanimation
group graphics audio
disabled
oneshot
+ ioprio rt 0
writepid /dev/stune/top-app/tasks
diff --git a/cmds/incidentd/src/WorkDirectory.cpp b/cmds/incidentd/src/WorkDirectory.cpp
index 0570c3a039ae336d0938b7a3fba90d3c49c62b6f..8dcb8653748796971642c8e5ae45ee77461ca0d3 100644
--- a/cmds/incidentd/src/WorkDirectory.cpp
+++ b/cmds/incidentd/src/WorkDirectory.cpp
@@ -664,7 +664,7 @@ int64_t WorkDirectory::make_timestamp_ns_locked() {
nanosleep(&spec, nullptr);
}
clock_gettime(CLOCK_REALTIME, &spec);
- timestampNs = (spec.tv_sec) * 1000 + spec.tv_nsec;
+ timestampNs = int64_t(spec.tv_sec) * 1000 + spec.tv_nsec;
} while (file_exists_locked(timestampNs));
return timestampNs;
}
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index eed7f62eac348d62ba0f32d340a4a25f307b5aa5..1fd9caf6f7ab568f697e0685df218ada14b1711e 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -319,6 +319,8 @@ message Atom {
217 [(log_from_module) = "permissioncontroller"];
PermissionAppsFragmentViewed permission_apps_fragment_viewed =
218 [(log_from_module) = "permissioncontroller"];
+ ExclusionRectStateChanged exclusion_rect_state_changed = 223;
+ BackGesture back_gesture_reported_reported = 224;
}
// Pulled events will start at field 10000.
@@ -2500,6 +2502,41 @@ message PhoneStateChanged {
optional State state = 1;
}
+message BackGesture {
+ enum BackType {
+ DEFAULT_BACK_TYPE = 0;
+ COMPLETED = 1;
+ COMPLETED_REJECTED = 2; // successful because coming from rejected area
+ INCOMPLETE_EXCLUDED = 3; // would have been successful but in the exclusion area
+ INCOMPLETE = 4;
+ }
+ optional BackType type = 1;
+
+ optional int32 y_coordinate = 2; // y coordinate for ACTION_DOWN event
+ enum WindowHorizontalLocation {
+ DEFAULT_LOCATION = 0;
+ LEFT = 1;
+ RIGHT = 2;
+ }
+ optional WindowHorizontalLocation x_location = 3;
+}
+
+message ExclusionRectStateChanged {
+ optional string component_name = 1; // if not available, simply packageName
+ optional int32 requested_height = 2; // px
+ optional int32 rejected_height = 3; // px
+
+ enum WindowHorizontalLocation {
+ DEFAULT_LOCATION = 0;
+ LEFT = 1;
+ RIGHT = 2;
+ }
+ optional WindowHorizontalLocation x_location = 4;
+ optional bool landscape = 5;
+ optional bool splitscreen = 6;
+ optional int32 duration_millis = 7;
+}
+
message LauncherUIChanged {
optional android.stats.launcher.LauncherAction action = 1;
optional android.stats.launcher.LauncherState src_state = 2;
@@ -3291,6 +3328,8 @@ message BiometricErrorOccurred {
optional int32 error_info_vendor = 7;
// Dictates if this message should trigger additional debugging.
optional bool debug = 8;
+ // Time spent during the authentication attempt.
+ optional int64 latency_millis = 9;
}
/**
@@ -5299,7 +5338,7 @@ message NetworkDnsEventReported {
// Only valid for event_type = EVENT_RESNSEND.
optional int32 res_nsend_flags = 5;
- optional android.stats.dnsresolver.Transport network_type = 6;
+ optional android.stats.dnsresolver.NetworkType network_type = 6;
// The DNS over TLS mode on a specific netId.
optional android.stats.dnsresolver.PrivateDnsModes private_dns_modes = 7;
@@ -5307,6 +5346,9 @@ message NetworkDnsEventReported {
// Additional pass-through fields opaque to statsd.
// The DNS resolver Mainline module can add new fields here without requiring an OS update.
optional android.stats.dnsresolver.DnsQueryEvents dns_query_events = 8 [(log_mode) = MODE_BYTES];
+
+ // The sample rate of DNS stats (to statsd) is 1/sampling_rate_denom.
+ optional int32 sampling_rate_denom = 9;
}
/**
@@ -5882,7 +5924,8 @@ message BubbleUIChanged {
optional bool is_ongoing = 10;
// Whether the bubble is produced by an app running in foreground.
- optional bool is_foreground = 11;
+ // This is deprecated and the value should be ignored.
+ optional bool is_foreground = 11 [deprecated = true];
}
/**
diff --git a/cmds/statsd/src/external/PowerStatsPuller.cpp b/cmds/statsd/src/external/PowerStatsPuller.cpp
index c56f9a27086e39a7c57df1d90ae946261bc93177..b142caca3acce180f6b0d8bd70b07c63baa8da07 100644
--- a/cmds/statsd/src/external/PowerStatsPuller.cpp
+++ b/cmds/statsd/src/external/PowerStatsPuller.cpp
@@ -85,7 +85,6 @@ bool PowerStatsPuller::PullInternal(vector>* data) {
std::lock_guard lock(gPowerStatsHalMutex);
if (!getPowerStatsHalLocked()) {
- ALOGE("power.stats Hal not loaded");
return false;
}
@@ -116,6 +115,7 @@ bool PowerStatsPuller::PullInternal(vector>* data) {
if (gRailInfo.empty()) {
ALOGE("power.stats has no rail information");
gPowerStatsExist = false; // No rail info, so never try again.
+ gPowerStatsHal = nullptr;
return false;
}
}
diff --git a/cmds/statsd/src/main.cpp b/cmds/statsd/src/main.cpp
index 68082c2dc4d2f42ec61db994a164be4f09e28e37..42132ee0daae61505e9fb3e3f30e2412d4892d31 100644
--- a/cmds/statsd/src/main.cpp
+++ b/cmds/statsd/src/main.cpp
@@ -78,7 +78,7 @@ int main(int /*argc*/, char** /*argv*/) {
ps->giveThreadPoolName();
IPCThreadState::self()->disableBackgroundScheduling(true);
- ::android::hardware::configureRpcThreadpool(1 /*threads*/, false /*willJoin*/);
+ ::android::hardware::configureRpcThreadpool(4 /*threads*/, false /*willJoin*/);
std::shared_ptr eventQueue =
std::make_shared(2000 /*buffer limit. Buffer is NOT pre-allocated*/);
diff --git a/config/hiddenapi-greylist-max-p.txt b/config/hiddenapi-greylist-max-p.txt
index 141e8e669dac4e280dc5b847426bb8c69ecf2662..25d45b0e65707b7206f5c11701142d54526156cf 100644
--- a/config/hiddenapi-greylist-max-p.txt
+++ b/config/hiddenapi-greylist-max-p.txt
@@ -70,6 +70,8 @@ Lcom/android/internal/R$styleable;->MenuView:[I
Lcom/android/internal/R$styleable;->Searchable:[I
Lcom/android/internal/R$styleable;->SearchableActionKey:[I
Lcom/android/internal/telephony/IPhoneSubInfo$Stub;->()V
+Lcom/android/internal/telephony/ITelephony;->getDataActivity()I
+Lcom/android/internal/telephony/ITelephony;->getDataState()I
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyCallForwardingChanged(Z)V
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyCellLocation(Landroid/os/Bundle;)V
Lcom/android/internal/telephony/ITelephonyRegistry;->notifyDataActivity(I)V
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index cebe6e1211e07f7e312236422640cf7c4ec30f33..90b80e73c323062079073ba8fc3ce2d1def1899a 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -309,7 +309,7 @@ public abstract class AccessibilityService extends Service {
* Name under which an AccessibilityService component publishes information
* about itself. This meta-data must reference an XML resource containing an
* <{@link android.R.styleable#AccessibilityService accessibility-service}>
- * tag. This is a a sample XML file configuring an accessibility service:
+ * tag. This is a sample XML file configuring an accessibility service:
*
<accessibility-service
* android:accessibilityEventTypes="typeViewClicked|typeViewFocused"
* android:packageNames="foo.bar, foo.baz"
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index dc52c52cca1fbfa688207e0ffd3ed891bba103ea..5bc0647159a3b84f5998b6bb72b30f737cae5457 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -146,6 +146,7 @@ import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.lang.ref.WeakReference;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
@@ -943,6 +944,10 @@ public class Activity extends ContextThemeWrapper
/** @hide */
boolean mEnterAnimationComplete;
+ /** Track last dispatched multi-window and PiP mode to client, internal debug purpose **/
+ private Boolean mLastDispatchedIsInMultiWindowMode;
+ private Boolean mLastDispatchedIsInPictureInPictureMode;
+
private static native String getDlWarning();
/** Return the intent that started this activity. */
@@ -1547,7 +1552,9 @@ public class Activity extends ContextThemeWrapper
* had previously been frozen by {@link #onSaveInstanceState}.
*
*
This method is called between {@link #onStart} and
- * {@link #onPostCreate}.
+ * {@link #onPostCreate}. This method is called only when recreating
+ * an activity; the method isn't invoked if {@link #onStart} is called for
+ * any other reason.
*
* @param savedInstanceState the data most recently supplied in {@link #onSaveInstanceState}.
*
@@ -3654,6 +3661,22 @@ public class Activity extends ContextThemeWrapper
return false;
}
+ private static final class RequestFinishCallback extends IRequestFinishCallback.Stub {
+ private final WeakReference mActivityRef;
+
+ RequestFinishCallback(WeakReference activityRef) {
+ mActivityRef = activityRef;
+ }
+
+ @Override
+ public void requestFinish() {
+ Activity activity = mActivityRef.get();
+ if (activity != null) {
+ activity.mHandler.post(activity::finishAfterTransition);
+ }
+ }
+ }
+
/**
* Called when the activity has detected the user's press of the back
* key. The default implementation simply finishes the current activity,
@@ -3679,11 +3702,7 @@ public class Activity extends ContextThemeWrapper
// while at the root of the task. This call allows ActivityTaskManager
// to intercept or defer finishing.
ActivityTaskManager.getService().onBackPressedOnTaskRoot(mToken,
- new IRequestFinishCallback.Stub() {
- public void requestFinish() {
- mHandler.post(() -> finishAfterTransition());
- }
- });
+ new RequestFinishCallback(new WeakReference<>(this)));
} catch (RemoteException e) {
finishAfterTransition();
}
@@ -6984,6 +7003,10 @@ public class Activity extends ContextThemeWrapper
writer.print(mResumed); writer.print(" mStopped=");
writer.print(mStopped); writer.print(" mFinished=");
writer.println(mFinished);
+ writer.print(innerPrefix); writer.print("mLastDispatchedIsInMultiWindowMode=");
+ writer.print(mLastDispatchedIsInMultiWindowMode);
+ writer.print(" mLastDispatchedIsInPictureInPictureMode=");
+ writer.println(mLastDispatchedIsInPictureInPictureMode);
writer.print(innerPrefix); writer.print("mChangingConfigurations=");
writer.println(mChangingConfigurations);
writer.print(innerPrefix); writer.print("mCurrentConfig=");
@@ -8063,6 +8086,7 @@ public class Activity extends ContextThemeWrapper
if (mWindow != null) {
mWindow.onMultiWindowModeChanged();
}
+ mLastDispatchedIsInMultiWindowMode = isInMultiWindowMode;
onMultiWindowModeChanged(isInMultiWindowMode, newConfig);
}
@@ -8075,6 +8099,7 @@ public class Activity extends ContextThemeWrapper
if (mWindow != null) {
mWindow.onPictureInPictureModeChanged(isInPictureInPictureMode);
}
+ mLastDispatchedIsInPictureInPictureMode = isInPictureInPictureMode;
onPictureInPictureModeChanged(isInPictureInPictureMode, newConfig);
}
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 17368b78964518a42317bcd5d811331ce49a060f..91b98c71a613b6888e5bd1e1ae982e5edc69a2a0 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -925,7 +925,7 @@ public class ActivityManager {
* (which tends to consume a lot more RAM).
* @hide
*/
- @UnsupportedAppUsage
+ @TestApi
static public boolean isHighEndGfx() {
return !isLowRamDeviceStatic()
&& !RoSystemProperties.CONFIG_AVOID_GFX_ACCEL
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index f4b1d5311728ea4b90025d81e0fecd11587521d8..c666bb257684023c94f11a5a926eb63214aabb15 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -119,17 +119,6 @@ public abstract class ActivityManagerInternal {
*/
public abstract void setHasOverlayUi(int pid, boolean hasOverlayUi);
- /**
- * Sets if the given pid is currently running a remote animation, which is taken a signal for
- * determining oom adjustment and scheduling behavior.
- *
- * @param pid The pid we are setting overlay UI for.
- * @param runningRemoteAnimation True if the process is running a remote animation, false
- * otherwise.
- * @see RemoteAnimationAdapter
- */
- public abstract void setRunningRemoteAnimation(int pid, boolean runningRemoteAnimation);
-
/**
* Called after the network policy rules are updated by
* {@link com.android.server.net.NetworkPolicyManagerService} for a specific {@param uid} and
diff --git a/core/java/android/app/ActivityView.java b/core/java/android/app/ActivityView.java
index 4771f9f6ad04974c16cc7a1dfc6530b8eff01990..2b4ff0111ab30866ce9db0c82d0e3b463963ed85 100644
--- a/core/java/android/app/ActivityView.java
+++ b/core/java/android/app/ActivityView.java
@@ -120,6 +120,10 @@ public class ActivityView extends ViewGroup {
mActivityTaskManager = ActivityTaskManager.getService();
mSurfaceView = new SurfaceView(context);
+ // Since ActivityView#getAlpha has been overridden, we should use parent class's alpha
+ // as master to synchronize surface view's alpha value.
+ mSurfaceView.setAlpha(super.getAlpha());
+ mSurfaceView.setUseAlpha();
mSurfaceCallback = new SurfaceCallback();
mSurfaceView.getHolder().addCallback(mSurfaceCallback);
addView(mSurfaceView);
@@ -346,6 +350,27 @@ public class ActivityView extends ViewGroup {
mSurfaceView.layout(0 /* left */, 0 /* top */, r - l /* right */, b - t /* bottom */);
}
+ /**
+ * Sets the alpha value when the content of {@link SurfaceView} needs to show or hide.
+ *
Note: The surface view may ignore the alpha value in some cases. Refer to
+ * {@link SurfaceView#setAlpha} for more details.
+ *
+ * @param alpha The opacity of the view.
+ */
+ @Override
+ public void setAlpha(float alpha) {
+ super.setAlpha(alpha);
+
+ if (mSurfaceView != null) {
+ mSurfaceView.setAlpha(alpha);
+ }
+ }
+
+ @Override
+ public float getAlpha() {
+ return mSurfaceView.getAlpha();
+ }
+
@Override
public boolean gatherTransparentRegion(Region region) {
// The tap exclude region may be affected by any view on top of it, so we detect the
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index fb72e651cebd427289c6896daf7b896e89be8200..77875354d732bc4bf8bbfbdd7117db034a027382 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -834,9 +834,12 @@ public class AppOpsManager {
public static final int OP_ACCESS_ACCESSIBILITY = 88;
/** @hide Read the device identifiers (IMEI / MEID, IMSI, SIM / Build serial) */
public static final int OP_READ_DEVICE_IDENTIFIERS = 89;
+ /** @hide Read location metadata from media */
+ public static final int OP_ACCESS_MEDIA_LOCATION = 90;
+
/** @hide */
@UnsupportedAppUsage
- public static final int _NUM_OP = 90;
+ public static final int _NUM_OP = 91;
/** Access to coarse location information. */
public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
@@ -1107,6 +1110,9 @@ public class AppOpsManager {
@TestApi
@SystemApi
public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
+ /** @hide Read location metadata from media */
+ public static final String OPSTR_ACCESS_MEDIA_LOCATION = "android:access_media_location";
+
/** @hide Interact with accessibility. */
@SystemApi
public static final String OPSTR_ACCESS_ACCESSIBILITY = "android:access_accessibility";
@@ -1134,6 +1140,7 @@ public class AppOpsManager {
// Storage
OP_READ_EXTERNAL_STORAGE,
OP_WRITE_EXTERNAL_STORAGE,
+ OP_ACCESS_MEDIA_LOCATION,
// Location
OP_COARSE_LOCATION,
OP_FINE_LOCATION,
@@ -1273,6 +1280,7 @@ public class AppOpsManager {
OP_LEGACY_STORAGE, // LEGACY_STORAGE
OP_ACCESS_ACCESSIBILITY, // ACCESS_ACCESSIBILITY
OP_READ_DEVICE_IDENTIFIERS, // READ_DEVICE_IDENTIFIERS
+ OP_ACCESS_MEDIA_LOCATION, // ACCESS_MEDIA_LOCATION
};
/**
@@ -1369,6 +1377,7 @@ public class AppOpsManager {
OPSTR_LEGACY_STORAGE,
OPSTR_ACCESS_ACCESSIBILITY,
OPSTR_READ_DEVICE_IDENTIFIERS,
+ OPSTR_ACCESS_MEDIA_LOCATION,
};
/**
@@ -1466,6 +1475,7 @@ public class AppOpsManager {
"LEGACY_STORAGE",
"ACCESS_ACCESSIBILITY",
"READ_DEVICE_IDENTIFIERS",
+ "ACCESS_MEDIA_LOCATION",
};
/**
@@ -1564,6 +1574,7 @@ public class AppOpsManager {
null, // no permission for OP_LEGACY_STORAGE
null, // no permission for OP_ACCESS_ACCESSIBILITY
null, // no direct permission for OP_READ_DEVICE_IDENTIFIERS
+ Manifest.permission.ACCESS_MEDIA_LOCATION,
};
/**
@@ -1662,6 +1673,7 @@ public class AppOpsManager {
null, // LEGACY_STORAGE
null, // ACCESS_ACCESSIBILITY
null, // READ_DEVICE_IDENTIFIERS
+ null, // ACCESS_MEDIA_LOCATION
};
/**
@@ -1759,6 +1771,7 @@ public class AppOpsManager {
false, // LEGACY_STORAGE
false, // ACCESS_ACCESSIBILITY
false, // READ_DEVICE_IDENTIFIERS
+ false, // ACCESS_MEDIA_LOCATION
};
/**
@@ -1855,6 +1868,7 @@ public class AppOpsManager {
AppOpsManager.MODE_DEFAULT, // LEGACY_STORAGE
AppOpsManager.MODE_ALLOWED, // ACCESS_ACCESSIBILITY
AppOpsManager.MODE_ERRORED, // READ_DEVICE_IDENTIFIERS
+ AppOpsManager.MODE_ALLOWED, // ALLOW_MEDIA_LOCATION
};
/**
@@ -1955,6 +1969,7 @@ public class AppOpsManager {
false, // LEGACY_STORAGE
false, // ACCESS_ACCESSIBILITY
false, // READ_DEVICE_IDENTIFIERS
+ false, // ACCESS_MEDIA_LOCATION
};
/**
@@ -2587,7 +2602,7 @@ public class AppOpsManager {
* @return The proxy UID.
*/
public int getProxyUid() {
- return (int) findFirstNonNegativeForFlagsInStates(mDurations,
+ return (int) findFirstNonNegativeForFlagsInStates(mProxyUids,
MAX_PRIORITY_UID_STATE, MIN_PRIORITY_UID_STATE, OP_FLAGS_ALL);
}
@@ -2609,7 +2624,7 @@ public class AppOpsManager {
* @return The proxy UID.
*/
public int getProxyUid(@UidState int uidState, @OpFlags int flags) {
- return (int) findFirstNonNegativeForFlagsInStates(mDurations,
+ return (int) findFirstNonNegativeForFlagsInStates(mProxyUids,
uidState, uidState, flags);
}
@@ -4169,8 +4184,8 @@ public class AppOpsManager {
* end UID states.
*
* @param counts The data array.
- * @param beginUidState The beginning UID state (exclusive).
- * @param endUidState The end UID state.
+ * @param beginUidState The beginning UID state (inclusive).
+ * @param endUidState The end UID state (inclusive).
* @param flags The UID flags.
* @return The sum.
*/
@@ -4199,13 +4214,13 @@ public class AppOpsManager {
* end UID states.
*
* @param counts The data array.
+ * @param beginUidState The beginning UID state (inclusive).
+ * @param endUidState The end UID state (inclusive).
* @param flags The UID flags.
- * @param beginUidState The beginning UID state (exclusive).
- * @param endUidState The end UID state.
* @return The non-negative value or -1.
*/
private static long findFirstNonNegativeForFlagsInStates(@Nullable LongSparseLongArray counts,
- @OpFlags int flags, @UidState int beginUidState, @UidState int endUidState) {
+ @UidState int beginUidState, @UidState int endUidState, @OpFlags int flags) {
if (counts == null) {
return -1;
}
@@ -4231,14 +4246,14 @@ public class AppOpsManager {
* end UID states.
*
* @param counts The data array.
+ * @param beginUidState The beginning UID state (inclusive).
+ * @param endUidState The end UID state (inclusive).
* @param flags The UID flags.
- * @param beginUidState The beginning UID state (exclusive).
- * @param endUidState The end UID state.
* @return The non-negative value or -1.
*/
private static @Nullable String findFirstNonNullForFlagsInStates(
- @Nullable LongSparseArray counts, @OpFlags int flags,
- @UidState int beginUidState, @UidState int endUidState) {
+ @Nullable LongSparseArray counts, @UidState int beginUidState,
+ @UidState int endUidState, @OpFlags int flags) {
if (counts == null) {
return null;
}
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index e57738fbbfdd2340164916f04b261bc50e96e5a6..9f51db88e7dc6315fd77dffdf8cde29ede6f6584 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -108,6 +108,8 @@ interface INotificationManager
ParceledListSlice getNotificationChannelsBypassingDnd(String pkg, int userId);
boolean isPackagePaused(String pkg);
+ void silenceNotificationSound();
+
// TODO: Remove this when callers have been migrated to the equivalent
// INotificationListener method.
@UnsupportedAppUsage
diff --git a/core/java/android/app/ITaskStackListener.aidl b/core/java/android/app/ITaskStackListener.aidl
index 0df3bbe42c7e082778637bb1f9902dd0b98e88e0..6fd43a61f2dd4daf2837cb2f29496126781a95d8 100644
--- a/core/java/android/app/ITaskStackListener.aidl
+++ b/core/java/android/app/ITaskStackListener.aidl
@@ -170,6 +170,21 @@ oneway interface ITaskStackListener {
*/
void onBackPressedOnTaskRoot(in ActivityManager.RunningTaskInfo taskInfo);
+ /*
+ * Called when contents are drawn for the first time on a display which can only contain one
+ * task.
+ *
+ * @param displayId the id of the display on which contents are drawn.
+ */
+ void onSingleTaskDisplayDrawn(int displayId);
+
+ /*
+ * Called when the last task is removed from a display which can only contain one task.
+ *
+ * @param displayId the id of the display from which the window is removed.
+ */
+ void onSingleTaskDisplayEmpty(int displayId);
+
/**
* Called when a task is reparented to a stack on a different display.
*
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 789351e0d157680d3db00660b7399fd7460503c3..a4c98e88cbc7832b5574259dcc7a7f04e86ed3ee 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -3386,11 +3386,7 @@ public class Notification implements Parcelable
*/
private int mCachedContrastColor = COLOR_INVALID;
private int mCachedContrastColorIsFor = COLOR_INVALID;
- /**
- * Caches a ambient version of {@link #mCachedAmbientColorIsFor}.
- */
- private int mCachedAmbientColor = COLOR_INVALID;
- private int mCachedAmbientColorIsFor = COLOR_INVALID;
+
/**
* A neutral color color that can be used for icons.
*/
@@ -5441,26 +5437,14 @@ public class Notification implements Parcelable
/**
* Construct a RemoteViews for the display in public contexts like on the lockscreen.
*
+ * @param isLowPriority is this notification low priority
* @hide
*/
@UnsupportedAppUsage
- public RemoteViews makePublicContentView() {
- return makePublicView(false /* ambient */);
- }
-
- /**
- * Construct a RemoteViews for the display in public contexts like on the lockscreen.
- *
- * @hide
- */
- public RemoteViews makePublicAmbientNotification() {
- return makePublicView(true /* ambient */);
- }
-
- private RemoteViews makePublicView(boolean ambient) {
+ public RemoteViews makePublicContentView(boolean isLowPriority) {
if (mN.publicVersion != null) {
final Builder builder = recoverBuilder(mContext, mN.publicVersion);
- return ambient ? builder.makeAmbientNotification() : builder.createContentView();
+ return builder.createContentView();
}
Bundle savedBundle = mN.extras;
Style style = mStyle;
@@ -5484,7 +5468,11 @@ public class Notification implements Parcelable
}
mN.extras = publicExtras;
RemoteViews view;
- view = makeNotificationHeader();
+ StandardTemplateParams params = mParams.reset().fillTextsFrom(this);
+ if (isLowPriority) {
+ params.forceDefaultColor();
+ }
+ view = makeNotificationHeader(params);
view.setBoolean(R.id.notification_header, "setExpandOnlyOnButton", true);
mN.extras = savedBundle;
mN.mLargeIcon = largeIcon;
@@ -8118,8 +8106,7 @@ public class Notification implements Parcelable
*/
@Override
public RemoteViews makeHeadsUpContentView(boolean increasedHeight) {
- RemoteViews expanded = makeMediaBigContentView();
- return expanded != null ? expanded : makeMediaContentView();
+ return makeMediaContentView();
}
/** @hide */
@@ -8552,24 +8539,34 @@ public class Notification implements Parcelable
* If set and the app creating the bubble is in the foreground, the bubble will be posted
* in its expanded state, with the contents of {@link #getIntent()} in a floating window.
*
- *
If the app creating the bubble is not in the foreground this flag has no effect.
+ *
This flag has no effect if the app posting the bubble is not in the foreground.
+ * The app is considered foreground if it is visible and on the screen, note that
+ * a foreground service does not qualify.
+ *
*
*
Generally this flag should only be set if the user has performed an action to request
* or create a bubble.
+ *
+ * @hide
*/
- private static final int FLAG_AUTO_EXPAND_BUBBLE = 0x00000001;
+ public static final int FLAG_AUTO_EXPAND_BUBBLE = 0x00000001;
/**
* If set and the app posting the bubble is in the foreground, the bubble will
* be posted without the associated notification in the notification shade.
*
- *
If the app posting the bubble is not in the foreground this flag has no effect.
+ *
This flag has no effect if the app posting the bubble is not in the foreground.
+ * The app is considered foreground if it is visible and on the screen, note that
+ * a foreground service does not qualify.
+ *
*
*
Generally this flag should only be set if the user has performed an action to request
* or create a bubble, or if the user has seen the content in the notification and the
* notification is no longer relevant.
+ *
+ * @hide
*/
- private static final int FLAG_SUPPRESS_NOTIFICATION = 0x00000002;
+ public static final int FLAG_SUPPRESS_NOTIFICATION = 0x00000002;
private BubbleMetadata(PendingIntent expandIntent, PendingIntent deleteIntent,
Icon icon, int height, @DimenRes int heightResId) {
@@ -8685,10 +8682,20 @@ public class Notification implements Parcelable
out.writeInt(mDesiredHeightResId);
}
- private void setFlags(int flags) {
+ /**
+ * @hide
+ */
+ public void setFlags(int flags) {
mFlags = flags;
}
+ /**
+ * @hide
+ */
+ public int getFlags() {
+ return mFlags;
+ }
+
/**
* Builder to construct a {@link BubbleMetadata} object.
*/
@@ -8805,6 +8812,8 @@ public class Notification implements Parcelable
* {@link #getIntent()} in a floating window).
*
*
This flag has no effect if the app posting the bubble is not in the foreground.
+ * The app is considered foreground if it is visible and on the screen, note that
+ * a foreground service does not qualify.
*
*
*
Generally, this flag should only be set if the user has performed an action to
@@ -8823,6 +8832,8 @@ public class Notification implements Parcelable
* the notification shade.
*
*
This flag has no effect if the app posting the bubble is not in the foreground.
+ * The app is considered foreground if it is visible and on the screen, note that
+ * a foreground service does not qualify.
*
*
*
Generally, this flag should only be set if the user has performed an action to
@@ -10497,12 +10508,7 @@ public class Notification implements Parcelable
final StandardTemplateParams fillTextsFrom(Builder b) {
Bundle extras = b.mN.extras;
this.title = b.processLegacyText(extras.getCharSequence(EXTRA_TITLE));
-
- CharSequence text = extras.getCharSequence(EXTRA_BIG_TEXT);
- if (TextUtils.isEmpty(text)) {
- text = extras.getCharSequence(EXTRA_TEXT);
- }
- this.text = b.processLegacyText(text);
+ this.text = b.processLegacyText(extras.getCharSequence(EXTRA_TEXT));
this.summaryText = extras.getCharSequence(EXTRA_SUB_TEXT);
return this;
}
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index dd39376f80caa43c7882810a8354b9b63f167131..b13a34faab6be11b1bd03a28dbc4043cf6b4b697 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -1094,6 +1094,25 @@ public class NotificationManager {
}
}
+ /**
+ * Silences the current notification sound, if ones currently playing.
+ *
+ * It is intended to handle use-cases such as silencing a ringing call
+ * when the user presses the volume button during ringing.
+ *
+ * If this method is called prior to when the notification begins playing, the sound will not be
+ * silenced. As such it is not intended as a means to avoid playing of a sound.
+ * @hide
+ */
+ public void silenceNotificationSound() {
+ INotificationManager service = getService();
+ try {
+ service.silenceNotificationSound();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
/**
* Returns whether notifications from this package are temporarily hidden. This
* could be done because the package was marked as distracting to the user via
diff --git a/core/java/android/app/StatusBarManager.java b/core/java/android/app/StatusBarManager.java
index af2d774508c42e41a791809a909beb5c1377f0cd..205e7a13092b785d831deaae7bf4337a919f0546 100644
--- a/core/java/android/app/StatusBarManager.java
+++ b/core/java/android/app/StatusBarManager.java
@@ -433,6 +433,9 @@ public class StatusBarManager {
private boolean mNotificationPeeking;
private boolean mRecents;
private boolean mSearch;
+ private boolean mSystemIcons;
+ private boolean mClock;
+ private boolean mNotificationIcons;
/** @hide */
public DisableInfo(int flags1, int flags2) {
@@ -441,6 +444,9 @@ public class StatusBarManager {
mNotificationPeeking = (flags1 & DISABLE_NOTIFICATION_ALERTS) != 0;
mRecents = (flags1 & DISABLE_RECENT) != 0;
mSearch = (flags1 & DISABLE_SEARCH) != 0;
+ mSystemIcons = (flags1 & DISABLE_SYSTEM_INFO) != 0;
+ mClock = (flags1 & DISABLE_CLOCK) != 0;
+ mNotificationIcons = (flags1 & DISABLE_NOTIFICATION_ICONS) != 0;
}
/** @hide */
@@ -526,6 +532,48 @@ public class StatusBarManager {
mSearch = disabled;
}
+ /**
+ * @return {@code true} if system icons are disabled
+ *
+ * @hide
+ */
+ public boolean areSystemIconsDisabled() {
+ return mSystemIcons;
+ }
+
+ /** * @hide */
+ public void setSystemIconsDisabled(boolean disabled) {
+ mSystemIcons = disabled;
+ }
+
+ /**
+ * @return {@code true} if the clock icon is disabled
+ *
+ * @hide
+ */
+ public boolean isClockDisabled() {
+ return mClock;
+ }
+
+ /** * @hide */
+ public void setClockDisabled(boolean disabled) {
+ mClock = disabled;
+ }
+
+ /**
+ * @return {@code true} if notification icons are disabled
+ *
+ * @hide
+ */
+ public boolean areNotificationIconsDisabled() {
+ return mNotificationIcons;
+ }
+
+ /** * @hide */
+ public void setNotificationIconsDisabled(boolean disabled) {
+ mNotificationIcons = disabled;
+ }
+
/**
* @return {@code true} if no components are disabled (default state)
*
@@ -535,7 +583,7 @@ public class StatusBarManager {
@TestApi
public boolean areAllComponentsEnabled() {
return !mStatusBarExpansion && !mNavigateHome && !mNotificationPeeking && !mRecents
- && !mSearch;
+ && !mSearch && !mSystemIcons && !mClock && !mNotificationIcons;
}
/** @hide */
@@ -545,6 +593,9 @@ public class StatusBarManager {
mNotificationPeeking = false;
mRecents = false;
mSearch = false;
+ mSystemIcons = false;
+ mClock = false;
+ mNotificationIcons = false;
}
/**
@@ -554,7 +605,7 @@ public class StatusBarManager {
*/
public boolean areAllComponentsDisabled() {
return mStatusBarExpansion && mNavigateHome && mNotificationPeeking
- && mRecents && mSearch;
+ && mRecents && mSearch && mSystemIcons && mClock && mNotificationIcons;
}
/** @hide */
@@ -564,6 +615,9 @@ public class StatusBarManager {
mNotificationPeeking = true;
mRecents = true;
mSearch = true;
+ mSystemIcons = true;
+ mClock = true;
+ mNotificationIcons = true;
}
@Override
@@ -576,6 +630,9 @@ public class StatusBarManager {
.append(mNotificationPeeking ? "disabled" : "enabled");
sb.append(" mRecents=").append(mRecents ? "disabled" : "enabled");
sb.append(" mSearch=").append(mSearch ? "disabled" : "enabled");
+ sb.append(" mSystemIcons=").append(mSystemIcons ? "disabled" : "enabled");
+ sb.append(" mClock=").append(mClock ? "disabled" : "enabled");
+ sb.append(" mNotificationIcons=").append(mNotificationIcons ? "disabled" : "enabled");
return sb.toString();
@@ -596,6 +653,9 @@ public class StatusBarManager {
if (mNotificationPeeking) disable1 |= DISABLE_NOTIFICATION_ALERTS;
if (mRecents) disable1 |= DISABLE_RECENT;
if (mSearch) disable1 |= DISABLE_SEARCH;
+ if (mSystemIcons) disable1 |= DISABLE_SYSTEM_INFO;
+ if (mClock) disable1 |= DISABLE_CLOCK;
+ if (mNotificationIcons) disable1 |= DISABLE_NOTIFICATION_ICONS;
return new Pair(disable1, disable2);
}
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index d32b6b516a7d88ca82e1497da1d684ca5c11f635..fe4b0d52b13372f12e1de35f026f1b79ec9fda08 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -1162,7 +1162,8 @@ final class SystemServiceRegistry {
@Override
public AppPredictionManager createService(ContextImpl ctx)
throws ServiceNotFoundException {
- return new AppPredictionManager(ctx);
+ IBinder b = ServiceManager.getService(Context.APP_PREDICTION_SERVICE);
+ return b == null ? null : new AppPredictionManager(ctx);
}
});
diff --git a/core/java/android/app/TaskStackListener.java b/core/java/android/app/TaskStackListener.java
index 73fc7a3db6c7ec38cc75d2212ec3fa5f80fdfefb..b4b7df970493fabe294eedb59e8326561822277f 100644
--- a/core/java/android/app/TaskStackListener.java
+++ b/core/java/android/app/TaskStackListener.java
@@ -175,6 +175,14 @@ public abstract class TaskStackListener extends ITaskStackListener.Stub {
throws RemoteException {
}
+ @Override
+ public void onSingleTaskDisplayDrawn(int displayId) throws RemoteException {
+ }
+
+ @Override
+ public void onSingleTaskDisplayEmpty(int displayId) throws RemoteException {
+ }
+
@Override
public void onTaskDisplayChanged(int taskId, int newDisplayId) throws RemoteException {
}
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index 441ff6ba4643b8f19290c1f058ed2c49e31e0ae8..a17b2ddd7215614261f7bc6ef93ce6b69c2b6d1d 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -1551,7 +1551,8 @@ public class DevicePolicyManager {
* scopes will be sent in an {@code ArrayList} extra identified by the
* {@link #EXTRA_DELEGATION_SCOPES} key.
*
- *
Note: This is a protected intent that can only be sent by the system.
+ *
Note: This is a protected intent that can only be sent by the
+ * system.
*/
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_APPLICATION_DELEGATION_SCOPES_CHANGED =
@@ -2610,6 +2611,7 @@ public class DevicePolicyManager {
*
* @param admin Which {@link DeviceAdminReceiver} this request is associated with.
* @param quality The new desired quality. One of {@link #PASSWORD_QUALITY_UNSPECIFIED},
+ * {@link #PASSWORD_QUALITY_BIOMETRIC_WEAK},
* {@link #PASSWORD_QUALITY_SOMETHING}, {@link #PASSWORD_QUALITY_NUMERIC},
* {@link #PASSWORD_QUALITY_NUMERIC_COMPLEX}, {@link #PASSWORD_QUALITY_ALPHABETIC},
* {@link #PASSWORD_QUALITY_ALPHANUMERIC} or {@link #PASSWORD_QUALITY_COMPLEX}.
diff --git a/core/java/android/bluetooth/BluetoothPan.java b/core/java/android/bluetooth/BluetoothPan.java
index fb78789ba8adee3b3720486ede3fec003a64ba38..cfb363a0834c7bc2d7b23f776b6948bac10d474b 100644
--- a/core/java/android/bluetooth/BluetoothPan.java
+++ b/core/java/android/bluetooth/BluetoothPan.java
@@ -118,6 +118,8 @@ public final class BluetoothPan implements BluetoothProfile {
*/
public static final int PAN_OPERATION_SUCCESS = 1004;
+ private final Context mContext;
+
private BluetoothAdapter mAdapter;
private final BluetoothProfileConnector mProfileConnector =
new BluetoothProfileConnector(this, BluetoothProfile.PAN,
@@ -136,6 +138,7 @@ public final class BluetoothPan implements BluetoothProfile {
@UnsupportedAppUsage
/*package*/ BluetoothPan(Context context, ServiceListener listener) {
mAdapter = BluetoothAdapter.getDefaultAdapter();
+ mContext = context;
mProfileConnector.connect(context, listener);
}
@@ -287,11 +290,12 @@ public final class BluetoothPan implements BluetoothProfile {
@UnsupportedAppUsage
public void setBluetoothTethering(boolean value) {
- if (DBG) log("setBluetoothTethering(" + value + ")");
+ String pkgName = mContext.getOpPackageName();
+ if (DBG) log("setBluetoothTethering(" + value + "), calling package:" + pkgName);
final IBluetoothPan service = getService();
if (service != null && isEnabled()) {
try {
- service.setBluetoothTethering(value);
+ service.setBluetoothTethering(value, pkgName);
} catch (RemoteException e) {
Log.e(TAG, "Stack:" + Log.getStackTraceString(new Throwable()));
}
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index c3dd82729d6d3a5a386310888d705e1288bcf8b5..414cc39f53105e86822b475dbe4f12ff9c04e216 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -852,11 +852,16 @@ public abstract class Context {
* to any callers for the same name, meaning they will see each other's
* edits as soon as they are made.
*
- * This method is thead-safe.
+ *
This method is thread-safe.
*
- * @param name Desired preferences file. If a preferences file by this name
- * does not exist, it will be created when you retrieve an
- * editor (SharedPreferences.edit()) and then commit changes (Editor.commit()).
+ *
If the preferences directory does not already exist, it will be created when this method
+ * is called.
+ *
+ *
If a preferences file by this name does not exist, it will be created when you retrieve an
+ * editor ({@link SharedPreferences#edit()}) and then commit changes ({@link
+ * SharedPreferences.Editor#commit()} or {@link SharedPreferences.Editor#apply()}).
+ *
+ * @param name Desired preferences file.
* @param mode Operating mode.
*
* @return The single {@link SharedPreferences} instance that can be used
@@ -4106,6 +4111,9 @@ public abstract class Context {
/**
* Official published name of the app prediction service.
*
+ *
NOTE: this service is optional; callers of
+ * {@code Context.getSystemServiceName(APP_PREDICTION_SERVICE)} should check for {@code null}.
+ *
* @hide
* @see #getSystemService(String)
*/
diff --git a/core/java/android/content/IntentFilter.java b/core/java/android/content/IntentFilter.java
index 9d523633feb6603e1923efae8b089aa4d2ae9ce5..099dea29eaf7f29cf17e823374fb798a4b1d8169 100644
--- a/core/java/android/content/IntentFilter.java
+++ b/core/java/android/content/IntentFilter.java
@@ -60,9 +60,7 @@ import java.util.Set;
* multiple possible matching values (via {@link #addAction},
* {@link #addDataType}, {@link #addDataScheme}, {@link #addDataSchemeSpecificPart},
* {@link #addDataAuthority}, {@link #addDataPath}, and {@link #addCategory}, respectively).
- * For actions, the field
- * will not be tested if no values have been given (treating it as a wildcard);
- * if no data characteristics are specified, however, then the filter will
+ * For actions, if no data characteristics are specified, then the filter will
* only match intents that contain no data.
*
*
The data characteristic is
diff --git a/core/java/android/content/PermissionChecker.java b/core/java/android/content/PermissionChecker.java
index 6fe6e991fb1e72d4c6e7a72088bc0357e8762098..95286e4bc1dbf83263292f9128e97183ebcfdb8d 100644
--- a/core/java/android/content/PermissionChecker.java
+++ b/core/java/android/content/PermissionChecker.java
@@ -50,6 +50,19 @@ import java.lang.annotation.RetentionPolicy;
* permission model for which the user had disabled the "permission"
* which is achieved by disallowing the corresponding app op.
*
+ *
+ * This class has two types of methods and you should be careful which
+ * type to call based on whether permission protected data is being
+ * passed to the app or you are just checking whether the app holds a
+ * permission. The reason is that a permission check requires checking
+ * the runtime permission and if it is granted checking the corresponding
+ * app op as for apps not supporting the runtime mode we never revoke
+ * permissions but disable app ops. Since there are two types of app op
+ * checks, one that does not leave a record an action was performed and
+ * another the does, one needs to call the preflight flavor of the checks
+ * named xxxForPreflight only if no private data is being delivered but
+ * a permission check is what is needed and the xxxForDataDelivery where
+ * the permission check is right before private data delivery.
*
* @hide
*/
@@ -63,6 +76,9 @@ public final class PermissionChecker {
/** Permission result: The permission is denied because the app op is not allowed. */
public static final int PERMISSION_DENIED_APP_OP = PackageManager.PERMISSION_DENIED - 1;
+ /** Constant when the PID for which we check permissions is unknown. */
+ public static final int PID_UNKNOWN = -1;
+
/** @hide */
@IntDef({PERMISSION_GRANTED,
PERMISSION_DENIED,
@@ -78,47 +94,127 @@ public final class PermissionChecker {
* Checks whether a given package in a UID and PID has a given permission
* and whether the app op that corresponds to this permission is allowed.
*
+ * NOTE: Use this method only for permission checks at the
+ * point where you will deliver the permission protected data to clients.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use {@link #checkPermissionForPreflight(Context, String, int, int, String)}
+ * to determine if the app has or may have location permission (if app has only foreground
+ * location the grant state depends on the app's fg/gb state) and this check will not
+ * leave a trace that permission protected data was delivered. When you are about to
+ * deliver the location data to a registered listener you should use this method which
+ * will evaluate the permission access based on the current fg/bg state of the app and
+ * leave a record that the data was accessed.
+ *
* @param context Context for accessing resources.
* @param permission The permission to check.
- * @param pid The process id for which to check.
+ * @param pid The process id for which to check. Use {@link #PID_UNKNOWN} if the PID
+ * is not known.
* @param uid The uid for which to check.
* @param packageName The package name for which to check. If null the
* the first package for the calling UID will be used.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkPermissionForPreflight(Context, String, int, int, String)
*/
@PermissionResult
- public static int checkPermission(@NonNull Context context, @NonNull String permission,
- int pid, int uid, @Nullable String packageName) {
- if (context.checkPermission(permission, pid, uid) == PackageManager.PERMISSION_DENIED) {
- return PERMISSION_DENIED;
- }
-
- AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
- String op = appOpsManager.permissionToOp(permission);
- if (op == null) {
- return PERMISSION_GRANTED;
- }
-
- if (packageName == null) {
- String[] packageNames = context.getPackageManager().getPackagesForUid(uid);
- if (packageNames == null || packageNames.length <= 0) {
- return PERMISSION_DENIED;
- }
- packageName = packageNames[0];
- }
+ public static int checkPermissionForDataDelivery(@NonNull Context context,
+ @NonNull String permission, int pid, int uid, @Nullable String packageName) {
+ return checkPermissionCommon(context, permission, pid, uid, packageName,
+ true /*forDataDelivery*/);
+ }
- if (appOpsManager.noteProxyOpNoThrow(op, packageName, uid) != AppOpsManager.MODE_ALLOWED) {
- return PERMISSION_DENIED_APP_OP;
- }
+ /**
+ * Checks whether a given package in a UID and PID has a given permission
+ * and whether the app op that corresponds to this permission is allowed.
+ *
+ * NOTE: Use this method only for permission checks at the
+ * preflight point where you will not deliver the permission protected data
+ * to clients but schedule permission data delivery, apps register listeners,
+ * etc.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use this method to determine if the app has or may have location
+ * permission (if app has only foreground location the grant state depends on the app's
+ * fg/gb state) and this check will not leave a trace that permission protected data
+ * was delivered. When you are about to deliver the location data to a registered
+ * listener you should use {@link #checkPermissionForDataDelivery(Context, String,
+ * int, int, String)} which will evaluate the permission access based on the current
+ * fg/bg state of the app and leave a record that the data was accessed.
+ *
+ * @param context Context for accessing resources.
+ * @param permission The permission to check.
+ * @param pid The process id for which to check.
+ * @param uid The uid for which to check.
+ * @param packageName The package name for which to check. If null the
+ * the first package for the calling UID will be used.
+ * @return The permission check result which is either {@link #PERMISSION_GRANTED}
+ * or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkPermissionForDataDelivery(Context, String, int, int, String)
+ */
+ @PermissionResult
+ public static int checkPermissionForPreflight(@NonNull Context context,
+ @NonNull String permission, int pid, int uid, @Nullable String packageName) {
+ return checkPermissionCommon(context, permission, pid, uid, packageName,
+ false /*forDataDelivery*/);
+ }
- return PERMISSION_GRANTED;
+ /**
+ * Checks whether your app has a given permission and whether the app op
+ * that corresponds to this permission is allowed.
+ *
+ * NOTE: Use this method only for permission checks at the
+ * point where you will deliver the permission protected data to clients.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use {@link #checkSelfPermissionForPreflight(Context, String)}
+ * to determine if the app has or may have location permission (if app has only foreground
+ * location the grant state depends on the app's fg/gb state) and this check will not
+ * leave a trace that permission protected data was delivered. When you are about to
+ * deliver the location data to a registered listener you should use this method
+ * which will evaluate the permission access based on the current fg/bg state of the
+ * app and leave a record that the data was accessed.
+ *
+ *
This API assumes the the {@link Binder#getCallingUid()} is the same as
+ * {@link Process#myUid()}.
+ *
+ * @param context Context for accessing resources.
+ * @param permission The permission to check.
+ * @return The permission check result which is either {@link #PERMISSION_GRANTED}
+ * or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkSelfPermissionForPreflight(Context, String)
+ */
+ @PermissionResult
+ public static int checkSelfPermissionForDataDelivery(@NonNull Context context,
+ @NonNull String permission) {
+ return checkPermissionForDataDelivery(context, permission, Process.myPid(),
+ Process.myUid(), context.getPackageName());
}
/**
* Checks whether your app has a given permission and whether the app op
* that corresponds to this permission is allowed.
*
+ * NOTE: Use this method only for permission checks at the
+ * preflight point where you will not deliver the permission protected data
+ * to clients but schedule permission data delivery, apps register listeners,
+ * etc.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use this method to determine if the app has or may have location
+ * permission (if app has only foreground location the grant state depends on the
+ * app's fg/gb state) and this check will not leave a trace that permission protected
+ * data was delivered. When you are about to deliver the location data to a registered
+ * listener you should use this method which will evaluate the permission access based
+ * on the current fg/bg state of the app and leave a record that the data was accessed.
+ *
*
This API assumes the the {@link Binder#getCallingUid()} is the same as
* {@link Process#myUid()}.
*
@@ -126,11 +222,13 @@ public final class PermissionChecker {
* @param permission The permission to check.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkSelfPermissionForDataDelivery(Context, String)
*/
@PermissionResult
- public static int checkSelfPermission(@NonNull Context context,
+ public static int checkSelfPermissionForPreflight(@NonNull Context context,
@NonNull String permission) {
- return checkPermission(context, permission, Process.myPid(),
+ return checkPermissionForPreflight(context, permission, Process.myPid(),
Process.myUid(), context.getPackageName());
}
@@ -138,20 +236,106 @@ public final class PermissionChecker {
* Checks whether the IPC you are handling has a given permission and whether
* the app op that corresponds to this permission is allowed.
*
+ * NOTE: Use this method only for permission checks at the
+ * point where you will deliver the permission protected data to clients.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use {@link #checkCallingPermissionForPreflight(Context, String, String)}
+ * to determine if the app has or may have location permission (if app has only foreground
+ * location the grant state depends on the app's fg/gb state) and this check will not
+ * leave a trace that permission protected data was delivered. When you are about to
+ * deliver the location data to a registered listener you should use this method which
+ * will evaluate the permission access based on the current fg/bg state of the app and
+ * leave a record that the data was accessed.
+ *
* @param context Context for accessing resources.
* @param permission The permission to check.
* @param packageName The package name making the IPC. If null the
* the first package for the calling UID will be used.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkCallingPermissionForPreflight(Context, String, String)
*/
@PermissionResult
- public static int checkCallingPermission(@NonNull Context context,
+ public static int checkCallingPermissionForDataDelivery(@NonNull Context context,
@NonNull String permission, @Nullable String packageName) {
if (Binder.getCallingPid() == Process.myPid()) {
return PERMISSION_DENIED;
}
- return checkPermission(context, permission, Binder.getCallingPid(),
+ return checkPermissionForDataDelivery(context, permission, Binder.getCallingPid(),
+ Binder.getCallingUid(), packageName);
+ }
+
+ /**
+ * Checks whether the IPC you are handling has a given permission and whether
+ * the app op that corresponds to this permission is allowed.
+ *
+ * NOTE: Use this method only for permission checks at the
+ * preflight point where you will not deliver the permission protected data
+ * to clients but schedule permission data delivery, apps register listeners,
+ * etc.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use this method to determine if the app has or may have location
+ * permission (if app has only foreground location the grant state depends on the app's
+ * fg/gb state) and this check will not leave a trace that permission protected data
+ * was delivered. When you are about to deliver the location data to a registered
+ * listener you should use {@link #checkCallingOrSelfPermissionForDataDelivery(Context,
+ * String)} which will evaluate the permission access based on the current fg/bg state
+ * of the app and leave a record that the data was accessed.
+ *
+ * @param context Context for accessing resources.
+ * @param permission The permission to check.
+ * @param packageName The package name making the IPC. If null the
+ * the first package for the calling UID will be used.
+ * @return The permission check result which is either {@link #PERMISSION_GRANTED}
+ * or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkCallingPermissionForDataDelivery(Context, String, String)
+ */
+ @PermissionResult
+ public static int checkCallingPermissionForPreflight(@NonNull Context context,
+ @NonNull String permission, @Nullable String packageName) {
+ if (Binder.getCallingPid() == Process.myPid()) {
+ return PERMISSION_DENIED;
+ }
+ return checkPermissionForPreflight(context, permission, Binder.getCallingPid(),
+ Binder.getCallingUid(), packageName);
+ }
+
+ /**
+ * Checks whether the IPC you are handling or your app has a given permission
+ * and whether the app op that corresponds to this permission is allowed.
+ *
+ * NOTE: Use this method only for permission checks at the
+ * point where you will deliver the permission protected data to clients.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use {@link #checkCallingOrSelfPermissionForPreflight(Context, String)}
+ * to determine if the app has or may have location permission (if app has only foreground
+ * location the grant state depends on the app's fg/gb state) and this check will not
+ * leave a trace that permission protected data was delivered. When you are about to
+ * deliver the location data to a registered listener you should use this method which
+ * will evaluate the permission access based on the current fg/bg state of the app and
+ * leave a record that the data was accessed.
+ *
+ * @param context Context for accessing resources.
+ * @param permission The permission to check.
+ * @return The permission check result which is either {@link #PERMISSION_GRANTED}
+ * or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkCallingOrSelfPermissionForPreflight(Context, String)
+ */
+ @PermissionResult
+ public static int checkCallingOrSelfPermissionForDataDelivery(@NonNull Context context,
+ @NonNull String permission) {
+ String packageName = (Binder.getCallingPid() == Process.myPid())
+ ? context.getPackageName() : null;
+ return checkPermissionForDataDelivery(context, permission, Binder.getCallingPid(),
Binder.getCallingUid(), packageName);
}
@@ -159,17 +343,69 @@ public final class PermissionChecker {
* Checks whether the IPC you are handling or your app has a given permission
* and whether the app op that corresponds to this permission is allowed.
*
+ * NOTE: Use this method only for permission checks at the
+ * preflight point where you will not deliver the permission protected data
+ * to clients but schedule permission data delivery, apps register listeners,
+ * etc.
+ *
+ *
For example, if an app registers a location listener it should have the location
+ * permission but no data is actually sent to the app at the moment of registration
+ * and you should use this method to determine if the app has or may have location
+ * permission (if app has only foreground location the grant state depends on the
+ * app's fg/gb state) and this check will not leave a trace that permission protected
+ * data was delivered. When you are about to deliver the location data to a registered
+ * listener you should use {@link #checkCallingOrSelfPermissionForDataDelivery(Context,
+ * String)} which will evaluate the permission access based on the current fg/bg state
+ * of the app and leave a record that the data was accessed.
+ *
* @param context Context for accessing resources.
* @param permission The permission to check.
* @return The permission check result which is either {@link #PERMISSION_GRANTED}
* or {@link #PERMISSION_DENIED} or {@link #PERMISSION_DENIED_APP_OP}.
+ *
+ * @see #checkCallingOrSelfPermissionForDataDelivery(Context, String)
*/
@PermissionResult
- public static int checkCallingOrSelfPermission(@NonNull Context context,
+ public static int checkCallingOrSelfPermissionForPreflight(@NonNull Context context,
@NonNull String permission) {
String packageName = (Binder.getCallingPid() == Process.myPid())
? context.getPackageName() : null;
- return checkPermission(context, permission, Binder.getCallingPid(),
+ return checkPermissionForPreflight(context, permission, Binder.getCallingPid(),
Binder.getCallingUid(), packageName);
}
+
+ private static int checkPermissionCommon(@NonNull Context context, @NonNull String permission,
+ int pid, int uid, @Nullable String packageName, boolean forDataDelivery) {
+ if (context.checkPermission(permission, pid, uid) == PackageManager.PERMISSION_DENIED) {
+ return PERMISSION_DENIED;
+ }
+
+ AppOpsManager appOpsManager = context.getSystemService(AppOpsManager.class);
+ String op = appOpsManager.permissionToOp(permission);
+ if (op == null) {
+ return PERMISSION_GRANTED;
+ }
+
+ if (packageName == null) {
+ String[] packageNames = context.getPackageManager().getPackagesForUid(uid);
+ if (packageNames == null || packageNames.length <= 0) {
+ return PERMISSION_DENIED;
+ }
+ packageName = packageNames[0];
+ }
+
+ if (forDataDelivery) {
+ if (appOpsManager.noteProxyOpNoThrow(op, packageName, uid)
+ != AppOpsManager.MODE_ALLOWED) {
+ return PERMISSION_DENIED_APP_OP;
+ }
+ } else {
+ final int mode = appOpsManager.unsafeCheckOpRawNoThrow(op, uid, packageName);
+ if (mode != AppOpsManager.MODE_ALLOWED && mode != AppOpsManager.MODE_FOREGROUND) {
+ return PERMISSION_DENIED_APP_OP;
+ }
+ }
+
+ return PERMISSION_GRANTED;
+ }
}
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index a7eecd7f4306a8e2124b11e37f3871dfc5dd9437..abcf77b64b87df09d1ed2d6078c3e46f132ad460 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -44,6 +44,7 @@ import android.content.pm.PermissionGroupInfo;
import android.content.pm.PermissionInfo;
import android.content.pm.ResolveInfo;
import android.content.pm.ServiceInfo;
+import android.content.pm.permission.SplitPermissionInfoParcelable;
import android.content.pm.SuspendDialogInfo;
import android.content.pm.UserInfo;
import android.content.pm.VerifierDeviceIdentity;
@@ -772,4 +773,6 @@ interface IPackageManager {
void setRuntimePermissionsVersion(int version, int userId);
void notifyPackagesReplacedReceived(in String[] packages);
+
+ List getSplitPermissions();
}
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index 037a149bfe37165dece0dc7effc9ae072523ace9..3933e81c732a08b93929fda368f80f51b32116d9 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -503,9 +503,38 @@ public class LauncherApps {
}
/**
- * Retrieves a list of launchable activities that match {@link Intent#ACTION_MAIN} and
- * {@link Intent#CATEGORY_LAUNCHER}, for a specified user. Result may include
- * synthesized activities like app details Activity injected by system.
+ * Retrieves a list of activities that specify {@link Intent#ACTION_MAIN} and
+ * {@link Intent#CATEGORY_LAUNCHER}, across all apps, for a specified user. If an app doesn't
+ * have any activities that specify ACTION_MAIN or CATEGORY_LAUNCHER,
+ * the system adds a synthesized activity to the list. This synthesized activity represents the
+ * app's details page within system settings.
+ *
+ *
Note: It's possible for system apps, such as app stores, to prevent
+ * the system from adding synthesized activities to the returned list.
+ *
+ *
As of Android Q, at least
+ * one of the app's activities or synthesized activities appears in the returned list unless the
+ * app satisfies at least one of the following conditions:
The app doesn't have a launcher activity that is enabled by default. A launcher
+ * activity has an intent containing the ACTION_MAIN action and the
+ * CATEGORY_LAUNCHER category.
+ *
+ *
+ *
Additionally, the system hides synthesized activities for some or all apps in the
+ * following enterprise-related cases:
+ *
+ *
If the device is a
+ * fully
+ * managed device, no synthesized activities for any app appear in the returned list.
+ *
If the current user has a
+ * work
+ * profile, no synthesized activities for the user's work apps appear in the returned
+ * list.
+ *
*
* @param packageName The specific package to query. If null, it checks all installed packages
* in the profile.
diff --git a/core/java/android/content/pm/PackageList.java b/core/java/android/content/pm/PackageList.java
index f78175868860e28d7f985dd9ccf91caf9076b374..e3eb2c55a2bb526df8d76e904c7cb89dee1e929b 100644
--- a/core/java/android/content/pm/PackageList.java
+++ b/core/java/android/content/pm/PackageList.java
@@ -51,6 +51,13 @@ public class PackageList implements PackageListObserver, AutoCloseable {
}
}
+ @Override
+ public void onPackageChanged(String packageName, int uid) {
+ if (mWrappedObserver != null) {
+ mWrappedObserver.onPackageChanged(packageName, uid);
+ }
+ }
+
@Override
public void onPackageRemoved(String packageName, int uid) {
if (mWrappedObserver != null) {
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index b3776787cc2bd8d34ee0d5ca471c0c07e9d8e46a..535a8bc9db75492c5dc019704d517d44ba0fa10b 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -57,6 +57,7 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageParserCacheHelper.ReadHelper;
import android.content.pm.PackageParserCacheHelper.WriteHelper;
+import android.content.pm.permission.SplitPermissionInfoParcelable;
import android.content.pm.split.DefaultSplitAssetLoader;
import android.content.pm.split.SplitAssetDependencyLoader;
import android.content.pm.split.SplitAssetLoader;
@@ -104,6 +105,7 @@ import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.os.ClassLoaderFactory;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.XmlUtils;
+import com.android.server.SystemConfig;
import libcore.io.IoUtils;
import libcore.util.EmptyArray;
@@ -2482,11 +2484,10 @@ public class PackageParser {
Slog.i(TAG, newPermsMsg.toString());
}
-
- final int NS = PermissionManager.SPLIT_PERMISSIONS.size();
- for (int is=0; is splitPermissions = getSplitPermissions();
+ final int listSize = splitPermissions.size();
+ for (int is = 0; is < listSize; is++) {
+ final SplitPermissionInfoParcelable spi = splitPermissions.get(is);
if (pkg.applicationInfo.targetSdkVersion >= spi.getTargetSdk()
|| !pkg.requestedPermissions.contains(spi.getSplitPermission())) {
continue;
@@ -2540,6 +2541,23 @@ public class PackageParser {
return pkg;
}
+ private List getSplitPermissions() {
+ // PackageManager runs this code during initialization prior to registering with
+ // ServiceManager, so we can't use the PackageManager API. Instead, just read from
+ // SystemConfig directly when in any SystemProcess and only use PackageManager when not in
+ // one.
+ if (ActivityThread.isSystem()) {
+ return PermissionManager.splitPermissionInfoListToParcelableList(
+ SystemConfig.getInstance().getSplitPermissions());
+ } else {
+ try {
+ return ActivityThread.getPackageManager().getSplitPermissions();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ }
+
private boolean checkOverlayRequiredSystemProperty(String propName, String propValue) {
if (TextUtils.isEmpty(propName) || TextUtils.isEmpty(propValue)) {
diff --git a/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.aidl b/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.aidl
new file mode 100644
index 0000000000000000000000000000000000000000..d84454ce744b1ac5739b3ef9dd1a51414cc95452
--- /dev/null
+++ b/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.aidl
@@ -0,0 +1,19 @@
+/**
+ * Copyright (c) 2019, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ package android.content.pm.permission;
+
+ parcelable SplitPermissionInfoParcelable;
\ No newline at end of file
diff --git a/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.java b/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.java
new file mode 100644
index 0000000000000000000000000000000000000000..6537fbc373986deeeb78b5c2f72ad7e243f2af90
--- /dev/null
+++ b/core/java/android/content/pm/permission/SplitPermissionInfoParcelable.java
@@ -0,0 +1,178 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.content.pm.permission;
+
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.Preconditions;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Parcelable version of {@link android.permission.PermissionManager.SplitPermissionInfo}
+ * @hide
+ */
+public class SplitPermissionInfoParcelable implements Parcelable {
+
+ /**
+ * The permission that is split.
+ */
+ @NonNull
+ private final String mSplitPermission;
+
+ /**
+ * The permissions that are added.
+ */
+ @NonNull
+ private final List mNewPermissions;
+
+ /**
+ * The target API level when the permission was split.
+ */
+ @IntRange(from = 0)
+ private final int mTargetSdk;
+
+ private void onConstructed() {
+ Preconditions.checkCollectionElementsNotNull(mNewPermissions, "newPermissions");
+ }
+
+
+
+ // Code below generated by codegen v1.0.0.
+ //
+ // DO NOT MODIFY!
+ //
+ // To regenerate run:
+ // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/content/pm/SplitPermissionInfoParcelable.java
+ //
+ // CHECKSTYLE:OFF Generated code
+
+ /**
+ * Creates a new SplitPermissionInfoParcelable.
+ *
+ * @param splitPermission
+ * The permission that is split.
+ * @param newPermissions
+ * The permissions that are added.
+ * @param targetSdk
+ * The target API level when the permission was split.
+ */
+ public SplitPermissionInfoParcelable(
+ @NonNull String splitPermission,
+ @NonNull List newPermissions,
+ @IntRange(from = 0) int targetSdk) {
+ this.mSplitPermission = splitPermission;
+ Preconditions.checkNotNull(mSplitPermission);
+ this.mNewPermissions = newPermissions;
+ Preconditions.checkNotNull(mNewPermissions);
+ this.mTargetSdk = targetSdk;
+ Preconditions.checkArgumentNonnegative(mTargetSdk);
+
+ onConstructed();
+ }
+
+ /**
+ * The permission that is split.
+ */
+ public @NonNull String getSplitPermission() {
+ return mSplitPermission;
+ }
+
+ /**
+ * The permissions that are added.
+ */
+ public @NonNull List getNewPermissions() {
+ return mNewPermissions;
+ }
+
+ /**
+ * The target API level when the permission was split.
+ */
+ public @IntRange(from = 0) int getTargetSdk() {
+ return mTargetSdk;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ // You can override field equality logic by defining either of the methods like:
+ // boolean fieldNameEquals(SplitPermissionInfoParcelable other) { ... }
+ // boolean fieldNameEquals(FieldType otherValue) { ... }
+
+ if (this == o) return true;
+ if (o == null || getClass() != o.getClass()) return false;
+ @SuppressWarnings("unchecked")
+ SplitPermissionInfoParcelable that = (SplitPermissionInfoParcelable) o;
+ //noinspection PointlessBooleanExpression
+ return true
+ && Objects.equals(mSplitPermission, that.mSplitPermission)
+ && Objects.equals(mNewPermissions, that.mNewPermissions)
+ && mTargetSdk == that.mTargetSdk;
+ }
+
+ @Override
+ public int hashCode() {
+ // You can override field hashCode logic by defining methods like:
+ // int fieldNameHashCode() { ... }
+
+ int _hash = 1;
+ _hash = 31 * _hash + Objects.hashCode(mSplitPermission);
+ _hash = 31 * _hash + Objects.hashCode(mNewPermissions);
+ _hash = 31 * _hash + mTargetSdk;
+ return _hash;
+ }
+
+ @Override
+ public void writeToParcel(Parcel dest, int flags) {
+ // You can override field parcelling by defining methods like:
+ // void parcelFieldName(Parcel dest, int flags) { ... }
+
+ dest.writeString(mSplitPermission);
+ dest.writeStringList(mNewPermissions);
+ dest.writeInt(mTargetSdk);
+ }
+
+ @Override
+ public int describeContents() { return 0; }
+
+ public static final @NonNull Parcelable.Creator CREATOR
+ = new Parcelable.Creator() {
+ @Override
+ public SplitPermissionInfoParcelable[] newArray(int size) {
+ return new SplitPermissionInfoParcelable[size];
+ }
+
+ @Override
+ @SuppressWarnings({"unchecked", "RedundantCast"})
+ public SplitPermissionInfoParcelable createFromParcel(Parcel in) {
+ // You can override field unparcelling by defining methods like:
+ // static FieldType unparcelFieldName(Parcel in) { ... }
+
+ String splitPermission = in.readString();
+ List newPermissions = new java.util.ArrayList<>();
+ in.readStringList(newPermissions);
+ int targetSdk = in.readInt();
+ return new SplitPermissionInfoParcelable(
+ splitPermission,
+ newPermissions,
+ targetSdk);
+ }
+ };
+}
diff --git a/core/java/android/hardware/Sensor.java b/core/java/android/hardware/Sensor.java
index 099ae291c8f4a5ecd4400069e46000a14b845373..e78fb7f00797559d2801672592c101696b41d617 100644
--- a/core/java/android/hardware/Sensor.java
+++ b/core/java/android/hardware/Sensor.java
@@ -339,6 +339,8 @@ public final class Sensor {
* for {@link #TYPE_STEP_COUNTER} instead. It is defined as a
* {@link Sensor#REPORTING_MODE_SPECIAL_TRIGGER} sensor.
*
+ * This sensor requires permission {@code android.permission.ACTIVITY_RECOGNITION}.
+ *
* See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details.
*/
public static final int TYPE_STEP_DETECTOR = 18;
@@ -384,8 +386,6 @@ public final class Sensor {
* gyroscope. This sensor uses lower power than the other rotation vectors, because it doesn't
* use the gyroscope. However, it is more noisy and will work best outdoors.
*
- * This sensor requires permission {@code android.permission.ACTIVITY_RECOGNITION}.
- *
* See {@link android.hardware.SensorEvent#values SensorEvent.values} for more details.
*/
public static final int TYPE_GEOMAGNETIC_ROTATION_VECTOR = 20;
diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java
index 6c497d47c645e3ddb0b883aa62f4b67580d63c33..d8110f33d72322a90187664703bcdb579863518b 100644
--- a/core/java/android/hardware/biometrics/BiometricManager.java
+++ b/core/java/android/hardware/biometrics/BiometricManager.java
@@ -104,9 +104,17 @@ public class BiometricManager {
*/
@RequiresPermission(USE_BIOMETRIC)
public @BiometricError int canAuthenticate() {
+ return canAuthenticate(mContext.getUserId());
+ }
+
+ /**
+ * @hide
+ */
+ @RequiresPermission(USE_BIOMETRIC_INTERNAL)
+ public @BiometricError int canAuthenticate(int userId) {
if (mService != null) {
try {
- return mService.canAuthenticate(mContext.getOpPackageName());
+ return mService.canAuthenticate(mContext.getOpPackageName(), userId);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -120,6 +128,25 @@ public class BiometricManager {
}
}
+ /**
+ * @hide
+ * @param userId
+ * @return
+ */
+ @RequiresPermission(USE_BIOMETRIC_INTERNAL)
+ public boolean hasEnrolledBiometrics(int userId) {
+ if (mService != null) {
+ try {
+ return mService.hasEnrolledBiometrics(userId);
+ } catch (RemoteException e) {
+ Slog.w(TAG, "Remote exception in hasEnrolledBiometrics(): " + e);
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+
/**
* Listens for changes to biometric eligibility on keyguard from user settings.
* @param callback
diff --git a/core/java/android/hardware/biometrics/IBiometricEnabledOnKeyguardCallback.aidl b/core/java/android/hardware/biometrics/IBiometricEnabledOnKeyguardCallback.aidl
index d22e7e295b77447c9fe15f1b3364e9d0878e6652..62d727c080e318d158a8320aecbe523576d0b5de 100644
--- a/core/java/android/hardware/biometrics/IBiometricEnabledOnKeyguardCallback.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricEnabledOnKeyguardCallback.aidl
@@ -22,5 +22,5 @@ import android.hardware.biometrics.BiometricSourceType;
* @hide
*/
oneway interface IBiometricEnabledOnKeyguardCallback {
- void onChanged(in BiometricSourceType type, boolean enabled);
+ void onChanged(in BiometricSourceType type, boolean enabled, int userId);
}
\ No newline at end of file
diff --git a/core/java/android/hardware/biometrics/IBiometricService.aidl b/core/java/android/hardware/biometrics/IBiometricService.aidl
index 90d4921c3c189d6fe55ce9fb314800fbbf9a6944..f0a0b2f0235f20405fb4509a2a1398310551a819 100644
--- a/core/java/android/hardware/biometrics/IBiometricService.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricService.aidl
@@ -40,7 +40,10 @@ interface IBiometricService {
void cancelAuthentication(IBinder token, String opPackageName);
// Checks if biometrics can be used.
- int canAuthenticate(String opPackageName);
+ int canAuthenticate(String opPackageName, int userId);
+
+ // Checks if any biometrics are enrolled.
+ boolean hasEnrolledBiometrics(int userId);
// Register callback for when keyguard biometric eligibility changes.
void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback);
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index 5ac13d8a067d16bfdfbd3b325e689768eac71344..a0170dab9f04ddae169327758e942f7dc2560def 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -206,10 +206,16 @@ public abstract class CameraMetadata {
continue;
}
- if (filterTags == null || Arrays.binarySearch(filterTags,
- CameraMetadataNative.getTag(keyName, vendorId)) >= 0) {
+
+ if (filterTags != null && Arrays.binarySearch(filterTags,
+ CameraMetadataNative.getTag(keyName, vendorId)) < 0) {
+ // ignore vendor keys not in filterTags
+ continue;
+ }
+ if (instance == null || instance.getProtected(k) != null) {
keyList.add(k);
}
+
}
}
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index 7114c6dbba4eef06f76038305bb5e82397f04c7d..b2f3be17beaa979d5100ab90dc482583befd72e4 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -1038,34 +1038,35 @@ public class CameraDeviceImpl extends CameraDevice
// callback is valid
executor = checkExecutor(executor, callback);
- // Make sure that there all requests have at least 1 surface; all surfaces are non-null;
- // the surface isn't a physical stream surface for reprocessing request
- for (CaptureRequest request : requestList) {
- if (request.getTargets().isEmpty()) {
- throw new IllegalArgumentException(
- "Each request must have at least one Surface target");
- }
+ synchronized(mInterfaceLock) {
+ checkIfCameraClosedOrInError();
- for (Surface surface : request.getTargets()) {
- if (surface == null) {
- throw new IllegalArgumentException("Null Surface targets are not allowed");
+ // Make sure that there all requests have at least 1 surface; all surfaces are non-null;
+ // the surface isn't a physical stream surface for reprocessing request
+ for (CaptureRequest request : requestList) {
+ if (request.getTargets().isEmpty()) {
+ throw new IllegalArgumentException(
+ "Each request must have at least one Surface target");
}
- for (int i = 0; i < mConfiguredOutputs.size(); i++) {
- OutputConfiguration configuration = mConfiguredOutputs.valueAt(i);
- if (configuration.isForPhysicalCamera()
- && configuration.getSurfaces().contains(surface)) {
- if (request.isReprocess()) {
- throw new IllegalArgumentException(
- "Reprocess request on physical stream is not allowed");
+ for (Surface surface : request.getTargets()) {
+ if (surface == null) {
+ throw new IllegalArgumentException("Null Surface targets are not allowed");
+ }
+
+ for (int i = 0; i < mConfiguredOutputs.size(); i++) {
+ OutputConfiguration configuration = mConfiguredOutputs.valueAt(i);
+ if (configuration.isForPhysicalCamera()
+ && configuration.getSurfaces().contains(surface)) {
+ if (request.isReprocess()) {
+ throw new IllegalArgumentException(
+ "Reprocess request on physical stream is not allowed");
+ }
}
}
}
}
- }
- synchronized(mInterfaceLock) {
- checkIfCameraClosedOrInError();
if (repeating) {
stopRepeating();
}
@@ -2379,20 +2380,33 @@ public class CameraDeviceImpl extends CameraDevice
final CaptureCallbackHolder holder =
CameraDeviceImpl.this.mCaptureCallbackMap.get(requestId);
+ if (holder == null) {
+ Log.e(TAG, String.format("Receive capture error on unknown request ID %d",
+ requestId));
+ return;
+ }
+
final CaptureRequest request = holder.getRequest(subsequenceId);
Runnable failureDispatch = null;
if (errorCode == ERROR_CAMERA_BUFFER) {
// Because 1 stream id could map to multiple surfaces, we need to specify both
// streamId and surfaceId.
- List surfaces =
- mConfiguredOutputs.get(resultExtras.getErrorStreamId()).getSurfaces();
- for (Surface surface : surfaces) {
+ OutputConfiguration config = mConfiguredOutputs.get(
+ resultExtras.getErrorStreamId());
+ if (config == null) {
+ Log.v(TAG, String.format(
+ "Stream %d has been removed. Skipping buffer lost callback",
+ resultExtras.getErrorStreamId()));
+ return;
+ }
+ for (Surface surface : config.getSurfaces()) {
if (!request.containsTarget(surface)) {
continue;
}
if (DEBUG) {
- Log.v(TAG, String.format("Lost output buffer reported for frame %d, target %s",
+ Log.v(TAG, String.format(
+ "Lost output buffer reported for frame %d, target %s",
frameNumber, surface));
}
failureDispatch = new Runnable() {
diff --git a/core/java/android/hardware/display/AmbientDisplayConfiguration.java b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
index c45b8ed52187907f966a48a05b5ca4f898f0f8c8..3e995b6241123ed40fd1981049c5aff483b5824c 100644
--- a/core/java/android/hardware/display/AmbientDisplayConfiguration.java
+++ b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
@@ -48,7 +48,8 @@ public class AmbientDisplayConfiguration {
return pulseOnNotificationEnabled(user)
|| pulseOnLongPressEnabled(user)
|| alwaysOnEnabled(user)
- || wakeScreenGestureEnabled(user)
+ || wakeLockScreenGestureEnabled(user)
+ || wakeDisplayGestureEnabled(user)
|| pickupGestureEnabled(user)
|| tapGestureEnabled(user)
|| doubleTapGestureEnabled(user);
@@ -105,8 +106,14 @@ public class AmbientDisplayConfiguration {
}
/** {@hide} */
- public boolean wakeScreenGestureEnabled(int user) {
- return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_SCREEN_GESTURE, user)
+ public boolean wakeLockScreenGestureEnabled(int user) {
+ return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE, user)
+ && wakeScreenGestureAvailable();
+ }
+
+ /** {@hide} */
+ public boolean wakeDisplayGestureEnabled(int user) {
+ return boolSettingDefaultOn(Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE, user)
&& wakeScreenGestureAvailable();
}
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index 8a0a9c7c9d9de75c38ed1ceba3ce6e49729cd638..0b25dbd78611fd12b771d396413e1fda2026f444 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -820,4 +820,64 @@ public final class DisplayManager {
*/
void onDisplayChanged(int displayId);
}
+
+ /**
+ * Interface for accessing keys belonging to {@link
+ * android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER}.
+ * @hide
+ */
+ public interface DeviceConfig {
+
+ /**
+ * Key for refresh rate in the zone defined by thresholds.
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER
+ * @see android.R.integer#config_defaultZoneBehavior
+ */
+ String KEY_REFRESH_RATE_IN_ZONE = "refresh_rate_in_zone";
+
+ /**
+ * Key for accessing the display brightness thresholds for the configured refresh rate zone.
+ * The value will be a pair of comma separated integers representing the minimum and maximum
+ * thresholds of the zone, respectively, in display backlight units (i.e. [0, 255]).
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER
+ * @see android.R.array#config_brightnessThresholdsOfPeakRefreshRate
+ * @hide
+ */
+ String KEY_PEAK_REFRESH_RATE_DISPLAY_BRIGHTNESS_THRESHOLDS =
+ "peak_refresh_rate_brightness_thresholds";
+
+ /**
+ * Key for accessing the ambient brightness thresholds for the configured refresh rate zone.
+ * The value will be a pair of comma separated integers representing the minimum and maximum
+ * thresholds of the zone, respectively, in lux.
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER
+ * @see android.R.array#config_ambientThresholdsOfPeakRefreshRate
+ * @hide
+ */
+ String KEY_PEAK_REFRESH_RATE_AMBIENT_BRIGHTNESS_THRESHOLDS =
+ "peak_refresh_rate_ambient_thresholds";
+
+ /**
+ * Key for default peak refresh rate
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER
+ * @see android.R.integer#config_defaultPeakRefreshRate
+ * @hide
+ */
+ String KEY_PEAK_REFRESH_RATE_DEFAULT = "peak_refresh_rate_default";
+
+ /**
+ * Key for controlling which packages are explicitly blocked from running at refresh rates
+ * higher than 60hz. An app may be added to this list if they exhibit performance issues at
+ * higher refresh rates.
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_DISPLAY_MANAGER
+ * @see android.R.array#config_highRefreshRateBlacklist
+ * @hide
+ */
+ String KEY_HIGH_REFRESH_RATE_BLACKLIST = "high_refresh_rate_blacklist";
+ }
}
diff --git a/core/java/android/hardware/face/FaceManager.java b/core/java/android/hardware/face/FaceManager.java
index 8596af107ac1f569d9e8fe1eb5af9a97a32a6040..12b285a0f0ab31b5d666723a3eb18cb7fe755139 100644
--- a/core/java/android/hardware/face/FaceManager.java
+++ b/core/java/android/hardware/face/FaceManager.java
@@ -262,7 +262,7 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
* @hide
*/
@RequiresPermission(MANAGE_BIOMETRIC)
- public void enroll(byte[] token, CancellationSignal cancel,
+ public void enroll(int userId, byte[] token, CancellationSignal cancel,
EnrollmentCallback callback, int[] disabledFeatures) {
if (callback == null) {
throw new IllegalArgumentException("Must supply an enrollment callback");
@@ -281,7 +281,7 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
try {
mEnrollmentCallback = callback;
Trace.beginSection("FaceManager#enroll");
- mService.enroll(mToken, token, mServiceReceiver,
+ mService.enroll(userId, mToken, token, mServiceReceiver,
mContext.getOpPackageName(), disabledFeatures);
} catch (RemoteException e) {
Log.w(TAG, "Remote exception in enroll: ", e);
@@ -339,12 +339,13 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
* @hide
*/
@RequiresPermission(MANAGE_BIOMETRIC)
- public void setFeature(int feature, boolean enabled, byte[] token,
+ public void setFeature(int userId, int feature, boolean enabled, byte[] token,
SetFeatureCallback callback) {
if (mService != null) {
try {
mSetFeatureCallback = callback;
- mService.setFeature(feature, enabled, token, mServiceReceiver);
+ mService.setFeature(userId, feature, enabled, token, mServiceReceiver,
+ mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -355,11 +356,11 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
* @hide
*/
@RequiresPermission(MANAGE_BIOMETRIC)
- public void getFeature(int feature, GetFeatureCallback callback) {
+ public void getFeature(int userId, int feature, GetFeatureCallback callback) {
if (mService != null) {
try {
mGetFeatureCallback = callback;
- mService.getFeature(feature, mServiceReceiver);
+ mService.getFeature(userId, feature, mServiceReceiver, mContext.getOpPackageName());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -414,7 +415,8 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
try {
mRemovalCallback = callback;
mRemovalFace = face;
- mService.remove(mToken, face.getBiometricId(), userId, mServiceReceiver);
+ mService.remove(mToken, face.getBiometricId(), userId, mServiceReceiver,
+ mContext.getOpPackageName());
} catch (RemoteException e) {
Log.w(TAG, "Remote exception in remove: ", e);
if (callback != null) {
@@ -637,7 +639,7 @@ public class FaceManager implements BiometricAuthenticator, BiometricFaceConstan
}
}
Slog.w(TAG, "Invalid error message: " + errMsg + ", " + vendorCode);
- return null;
+ return "";
}
/**
diff --git a/core/java/android/hardware/face/IFaceService.aidl b/core/java/android/hardware/face/IFaceService.aidl
index 601be7595581f1c50a2f8f48040221712c6a318c..b6a0afbf716cf3ab74c613912e4f9791accbc462 100644
--- a/core/java/android/hardware/face/IFaceService.aidl
+++ b/core/java/android/hardware/face/IFaceService.aidl
@@ -50,14 +50,15 @@ interface IFaceService {
int callingUid, int callingPid, int callingUserId, boolean fromClient);
// Start face enrollment
- void enroll(IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
+ void enroll(int userId, IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
String opPackageName, in int [] disabledFeatures);
// Cancel enrollment in progress
void cancelEnrollment(IBinder token);
// Any errors resulting from this call will be returned to the listener
- void remove(IBinder token, int faceId, int userId, IFaceServiceReceiver receiver);
+ void remove(IBinder token, int faceId, int userId, IFaceServiceReceiver receiver,
+ String opPackageName);
// Rename the face specified by faceId to the given name
void rename(int faceId, String name);
@@ -98,10 +99,10 @@ interface IFaceService {
// Enumerate all faces
void enumerate(IBinder token, int userId, IFaceServiceReceiver receiver);
- void setFeature(int feature, boolean enabled, in byte [] token,
- IFaceServiceReceiver receiver);
+ void setFeature(int userId, int feature, boolean enabled, in byte [] token,
+ IFaceServiceReceiver receiver, String opPackageName);
- void getFeature(int feature, IFaceServiceReceiver receiver);
+ void getFeature(int userId, int feature, IFaceServiceReceiver receiver, String opPackageName);
void userActivity();
}
diff --git a/core/java/android/hardware/radio/TunerAdapter.java b/core/java/android/hardware/radio/TunerAdapter.java
index be2846f870799e3fa4d7e73d5a0431fd07acd768..aa5480abafb4beea97c7c3845ff34bf4d1075962 100644
--- a/core/java/android/hardware/radio/TunerAdapter.java
+++ b/core/java/android/hardware/radio/TunerAdapter.java
@@ -271,6 +271,8 @@ class TunerAdapter extends RadioTuner {
mCallback.setProgramListObserver(list, () -> {
try {
mTuner.stopProgramListUpdates();
+ } catch (IllegalStateException ex) {
+ // it's fine to not stop updates if tuner is already closed
} catch (RemoteException ex) {
Log.e(TAG, "Couldn't stop program list updates", ex);
}
diff --git a/core/java/android/hardware/radio/TunerCallbackAdapter.java b/core/java/android/hardware/radio/TunerCallbackAdapter.java
index 0fb93e532cd3f1cedbca0261a2aa151cf59c58bf..beff0f7607f810888e77267d3baf295259c9f57f 100644
--- a/core/java/android/hardware/radio/TunerCallbackAdapter.java
+++ b/core/java/android/hardware/radio/TunerCallbackAdapter.java
@@ -211,10 +211,12 @@ class TunerCallbackAdapter extends ITunerCallback.Stub {
@Override
public void onProgramListUpdated(ProgramList.Chunk chunk) {
- synchronized (mLock) {
- if (mProgramList == null) return;
- mProgramList.apply(Objects.requireNonNull(chunk));
- }
+ mHandler.post(() -> {
+ synchronized (mLock) {
+ if (mProgramList == null) return;
+ mProgramList.apply(Objects.requireNonNull(chunk));
+ }
+ });
}
@Override
diff --git a/core/java/android/inputmethodservice/SoftInputWindow.java b/core/java/android/inputmethodservice/SoftInputWindow.java
index 0513feef801f37a4e8d3a0c21105e342dd544446..356b3448430a6d7e711021f74237ce3bed8a6e5f 100644
--- a/core/java/android/inputmethodservice/SoftInputWindow.java
+++ b/core/java/android/inputmethodservice/SoftInputWindow.java
@@ -21,6 +21,7 @@ import static java.lang.annotation.RetentionPolicy.SOURCE;
import android.annotation.IntDef;
import android.app.Dialog;
import android.content.Context;
+import android.content.pm.PackageManager;
import android.graphics.Rect;
import android.os.Debug;
import android.os.IBinder;
@@ -50,6 +51,7 @@ public class SoftInputWindow extends Dialog {
final int mWindowType;
final int mGravity;
final boolean mTakesFocus;
+ final boolean mAutomotiveHideNavBarForKeyboard;
private final Rect mBounds = new Rect();
@Retention(SOURCE)
@@ -134,6 +136,8 @@ public class SoftInputWindow extends Dialog {
mWindowType = windowType;
mGravity = gravity;
mTakesFocus = takesFocus;
+ mAutomotiveHideNavBarForKeyboard = context.getResources().getBoolean(
+ com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard);
initDockWindow();
}
@@ -247,6 +251,11 @@ public class SoftInputWindow extends Dialog {
windowModFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
}
+ if (isAutomotive() && mAutomotiveHideNavBarForKeyboard) {
+ windowSetFlags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
+ windowModFlags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
+ }
+
getWindow().setFlags(windowSetFlags, windowModFlags);
}
@@ -338,6 +347,10 @@ public class SoftInputWindow extends Dialog {
mWindowState = newState;
}
+ private boolean isAutomotive() {
+ return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
+ }
+
private static String stateToString(@SoftInputWindowState int state) {
switch (state) {
case SoftInputWindowState.TOKEN_PENDING:
diff --git a/core/java/android/net/INetworkStatsService.aidl b/core/java/android/net/INetworkStatsService.aidl
index 41efc5040885f4f09053e0d93923ac6d81870c50..e5f3d26667a09a60391f74d50ee13f23ba52651f 100644
--- a/core/java/android/net/INetworkStatsService.aidl
+++ b/core/java/android/net/INetworkStatsService.aidl
@@ -66,7 +66,6 @@ interface INetworkStatsService {
/** Force update of ifaces. */
void forceUpdateIfaces(
in Network[] defaultNetworks,
- in VpnInfo[] vpnArray,
in NetworkState[] networkStates,
in String activeIface);
/** Force update of statistics. */
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 0eb6591151c17342cf2c8d64ee52469d81aacb53..c883e06290403d83417db37739831942a6edb19d 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -18,11 +18,11 @@ package android.net;
import static android.os.Process.CLAT_UID;
+import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.SystemClock;
-import android.util.Slog;
import android.util.SparseBooleanArray;
import com.android.internal.annotations.VisibleForTesting;
@@ -36,6 +36,7 @@ import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
import java.util.Objects;
+import java.util.function.Predicate;
/**
* Collection of active network statistics. Can contain summary details across
@@ -994,23 +995,33 @@ public class NetworkStats implements Parcelable {
if (limitUid == UID_ALL && limitTag == TAG_ALL && limitIfaces == INTERFACES_ALL) {
return;
}
+ filter(e -> (limitUid == UID_ALL || limitUid == e.uid)
+ && (limitTag == TAG_ALL || limitTag == e.tag)
+ && (limitIfaces == INTERFACES_ALL
+ || ArrayUtils.contains(limitIfaces, e.iface)));
+ }
+
+ /**
+ * Only keep entries with {@link #set} value less than {@link #SET_DEBUG_START}.
+ *
+ *
This mutates the original structure in place.
+ */
+ public void filterDebugEntries() {
+ filter(e -> e.set < SET_DEBUG_START);
+ }
+ private void filter(Predicate predicate) {
Entry entry = new Entry();
int nextOutputEntry = 0;
for (int i = 0; i < size; i++) {
entry = getValues(i, entry);
- final boolean matches =
- (limitUid == UID_ALL || limitUid == entry.uid)
- && (limitTag == TAG_ALL || limitTag == entry.tag)
- && (limitIfaces == INTERFACES_ALL
- || ArrayUtils.contains(limitIfaces, entry.iface));
-
- if (matches) {
- setValues(nextOutputEntry, entry);
+ if (predicate.test(entry)) {
+ if (nextOutputEntry != i) {
+ setValues(nextOutputEntry, entry);
+ }
nextOutputEntry++;
}
}
-
size = nextOutputEntry;
}
@@ -1176,133 +1187,221 @@ public class NetworkStats implements Parcelable {
/**
* VPN accounting. Move some VPN's underlying traffic to other UIDs that use tun0 iface.
*
- * This method should only be called on delta NetworkStats. Do not call this method on a
- * snapshot {@link NetworkStats} object because the tunUid and/or the underlyingIface may
- * change over time.
- *
- * This method performs adjustments for one active VPN package and one VPN iface at a time.
+ *
This method should only be called on delta NetworkStats. Do not call this method on a
+ * snapshot {@link NetworkStats} object because the tunUid and/or the underlyingIface may change
+ * over time.
*
- * It is possible for the VPN software to use multiple underlying networks. This method
- * only migrates traffic for the primary underlying network.
+ *
This method performs adjustments for one active VPN package and one VPN iface at a time.
*
* @param tunUid uid of the VPN application
* @param tunIface iface of the vpn tunnel
- * @param underlyingIface the primary underlying network iface used by the VPN application
- * @return true if it successfully adjusts the accounting for VPN, false otherwise
+ * @param underlyingIfaces underlying network ifaces used by the VPN application
*/
- public boolean migrateTun(int tunUid, String tunIface, String underlyingIface) {
- Entry tunIfaceTotal = new Entry();
- Entry underlyingIfaceTotal = new Entry();
+ public void migrateTun(int tunUid, @NonNull String tunIface,
+ @NonNull String[] underlyingIfaces) {
+ // Combined usage by all apps using VPN.
+ final Entry tunIfaceTotal = new Entry();
+ // Usage by VPN, grouped by its {@code underlyingIfaces}.
+ final Entry[] perInterfaceTotal = new Entry[underlyingIfaces.length];
+ // Usage by VPN, summed across all its {@code underlyingIfaces}.
+ final Entry underlyingIfacesTotal = new Entry();
+
+ for (int i = 0; i < perInterfaceTotal.length; i++) {
+ perInterfaceTotal[i] = new Entry();
+ }
- tunAdjustmentInit(tunUid, tunIface, underlyingIface, tunIfaceTotal, underlyingIfaceTotal);
+ tunAdjustmentInit(tunUid, tunIface, underlyingIfaces, tunIfaceTotal, perInterfaceTotal,
+ underlyingIfacesTotal);
- // If tunIface < underlyingIface, it leaves the overhead traffic in the VPN app.
- // If tunIface > underlyingIface, the VPN app doesn't get credit for data compression.
+ // If tunIface < underlyingIfacesTotal, it leaves the overhead traffic in the VPN app.
+ // If tunIface > underlyingIfacesTotal, the VPN app doesn't get credit for data compression.
// Negative stats should be avoided.
- Entry pool = tunGetPool(tunIfaceTotal, underlyingIfaceTotal);
- if (pool.isEmpty()) {
- return true;
- }
- Entry moved =
- addTrafficToApplications(tunUid, tunIface, underlyingIface, tunIfaceTotal, pool);
- deductTrafficFromVpnApp(tunUid, underlyingIface, moved);
-
- if (!moved.isEmpty()) {
- Slog.wtf(TAG, "Failed to deduct underlying network traffic from VPN package. Moved="
- + moved);
- return false;
- }
- return true;
+ final Entry[] moved =
+ addTrafficToApplications(tunUid, tunIface, underlyingIfaces, tunIfaceTotal,
+ perInterfaceTotal, underlyingIfacesTotal);
+ deductTrafficFromVpnApp(tunUid, underlyingIfaces, moved);
}
/**
* Initializes the data used by the migrateTun() method.
*
- * This is the first pass iteration which does the following work:
- * (1) Adds up all the traffic through the tunUid's underlyingIface
- * (both foreground and background).
- * (2) Adds up all the traffic through tun0 excluding traffic from the vpn app itself.
+ *
This is the first pass iteration which does the following work:
+ *
+ *
+ *
Adds up all the traffic through the tunUid's underlyingIfaces (both foreground and
+ * background).
+ *
Adds up all the traffic through tun0 excluding traffic from the vpn app itself.
+ *
+ *
+ * @param tunUid uid of the VPN application
+ * @param tunIface iface of the vpn tunnel
+ * @param underlyingIfaces underlying network ifaces used by the VPN application
+ * @param tunIfaceTotal output parameter; combined data usage by all apps using VPN
+ * @param perInterfaceTotal output parameter; data usage by VPN app, grouped by its {@code
+ * underlyingIfaces}
+ * @param underlyingIfacesTotal output parameter; data usage by VPN, summed across all of its
+ * {@code underlyingIfaces}
*/
- private void tunAdjustmentInit(int tunUid, String tunIface, String underlyingIface,
- Entry tunIfaceTotal, Entry underlyingIfaceTotal) {
- Entry recycle = new Entry();
+ private void tunAdjustmentInit(int tunUid, @NonNull String tunIface,
+ @NonNull String[] underlyingIfaces, @NonNull Entry tunIfaceTotal,
+ @NonNull Entry[] perInterfaceTotal, @NonNull Entry underlyingIfacesTotal) {
+ final Entry recycle = new Entry();
for (int i = 0; i < size; i++) {
getValues(i, recycle);
if (recycle.uid == UID_ALL) {
throw new IllegalStateException(
"Cannot adjust VPN accounting on an iface aggregated NetworkStats.");
- } if (recycle.set == SET_DBG_VPN_IN || recycle.set == SET_DBG_VPN_OUT) {
+ }
+ if (recycle.set == SET_DBG_VPN_IN || recycle.set == SET_DBG_VPN_OUT) {
throw new IllegalStateException(
"Cannot adjust VPN accounting on a NetworkStats containing SET_DBG_VPN_*");
}
-
- if (recycle.uid == tunUid && recycle.tag == TAG_NONE
- && Objects.equals(underlyingIface, recycle.iface)) {
- underlyingIfaceTotal.add(recycle);
+ if (recycle.tag != TAG_NONE) {
+ // TODO(b/123666283): Take all tags for tunUid into account.
+ continue;
}
- if (recycle.uid != tunUid && recycle.tag == TAG_NONE
- && Objects.equals(tunIface, recycle.iface)) {
+ if (recycle.uid == tunUid) {
+ // Add up traffic through tunUid's underlying interfaces.
+ for (int j = 0; j < underlyingIfaces.length; j++) {
+ if (Objects.equals(underlyingIfaces[j], recycle.iface)) {
+ perInterfaceTotal[j].add(recycle);
+ underlyingIfacesTotal.add(recycle);
+ break;
+ }
+ }
+ } else if (tunIface.equals(recycle.iface)) {
// Add up all tunIface traffic excluding traffic from the vpn app itself.
tunIfaceTotal.add(recycle);
}
}
}
- private static Entry tunGetPool(Entry tunIfaceTotal, Entry underlyingIfaceTotal) {
- Entry pool = new Entry();
- pool.rxBytes = Math.min(tunIfaceTotal.rxBytes, underlyingIfaceTotal.rxBytes);
- pool.rxPackets = Math.min(tunIfaceTotal.rxPackets, underlyingIfaceTotal.rxPackets);
- pool.txBytes = Math.min(tunIfaceTotal.txBytes, underlyingIfaceTotal.txBytes);
- pool.txPackets = Math.min(tunIfaceTotal.txPackets, underlyingIfaceTotal.txPackets);
- pool.operations = Math.min(tunIfaceTotal.operations, underlyingIfaceTotal.operations);
- return pool;
- }
+ /**
+ * Distributes traffic across apps that are using given {@code tunIface}, and returns the total
+ * traffic that should be moved off of {@code tunUid} grouped by {@code underlyingIfaces}.
+ *
+ * @param tunUid uid of the VPN application
+ * @param tunIface iface of the vpn tunnel
+ * @param underlyingIfaces underlying network ifaces used by the VPN application
+ * @param tunIfaceTotal combined data usage across all apps using {@code tunIface}
+ * @param perInterfaceTotal data usage by VPN app, grouped by its {@code underlyingIfaces}
+ * @param underlyingIfacesTotal data usage by VPN, summed across all of its {@code
+ * underlyingIfaces}
+ */
+ private Entry[] addTrafficToApplications(int tunUid, @NonNull String tunIface,
+ @NonNull String[] underlyingIfaces, @NonNull Entry tunIfaceTotal,
+ @NonNull Entry[] perInterfaceTotal, @NonNull Entry underlyingIfacesTotal) {
+ // Traffic that should be moved off of each underlying interface for tunUid (see
+ // deductTrafficFromVpnApp below).
+ final Entry[] moved = new Entry[underlyingIfaces.length];
+ for (int i = 0; i < underlyingIfaces.length; i++) {
+ moved[i] = new Entry();
+ }
- private Entry addTrafficToApplications(int tunUid, String tunIface, String underlyingIface,
- Entry tunIfaceTotal, Entry pool) {
- Entry moved = new Entry();
- Entry tmpEntry = new Entry();
- tmpEntry.iface = underlyingIface;
- for (int i = 0; i < size; i++) {
- // the vpn app is excluded from the redistribution but all moved traffic will be
- // deducted from the vpn app (see deductTrafficFromVpnApp below).
- if (Objects.equals(iface[i], tunIface) && uid[i] != tunUid) {
- if (tunIfaceTotal.rxBytes > 0) {
- tmpEntry.rxBytes = pool.rxBytes * rxBytes[i] / tunIfaceTotal.rxBytes;
- } else {
- tmpEntry.rxBytes = 0;
+ final Entry tmpEntry = new Entry();
+ final int origSize = size;
+ for (int i = 0; i < origSize; i++) {
+ if (!Objects.equals(iface[i], tunIface)) {
+ // Consider only entries that go onto the VPN interface.
+ continue;
+ }
+ if (uid[i] == tunUid) {
+ // Exclude VPN app from the redistribution, as it can choose to create packet
+ // streams by writing to itself.
+ continue;
+ }
+ tmpEntry.uid = uid[i];
+ tmpEntry.tag = tag[i];
+ tmpEntry.metered = metered[i];
+ tmpEntry.roaming = roaming[i];
+ tmpEntry.defaultNetwork = defaultNetwork[i];
+
+ // In a first pass, compute this entry's total share of data across all
+ // underlyingIfaces. This is computed on the basis of the share of this entry's usage
+ // over tunIface.
+ // TODO: Consider refactoring first pass into a separate helper method.
+ long totalRxBytes = 0;
+ if (tunIfaceTotal.rxBytes > 0) {
+ // Note - The multiplication below should not overflow since NetworkStatsService
+ // processes this every time device has transmitted/received amount equivalent to
+ // global threshold alert (~ 2MB) across all interfaces.
+ final long rxBytesAcrossUnderlyingIfaces =
+ underlyingIfacesTotal.rxBytes * rxBytes[i] / tunIfaceTotal.rxBytes;
+ // app must not be blamed for more than it consumed on tunIface
+ totalRxBytes = Math.min(rxBytes[i], rxBytesAcrossUnderlyingIfaces);
+ }
+ long totalRxPackets = 0;
+ if (tunIfaceTotal.rxPackets > 0) {
+ final long rxPacketsAcrossUnderlyingIfaces =
+ underlyingIfacesTotal.rxPackets * rxPackets[i] / tunIfaceTotal.rxPackets;
+ totalRxPackets = Math.min(rxPackets[i], rxPacketsAcrossUnderlyingIfaces);
+ }
+ long totalTxBytes = 0;
+ if (tunIfaceTotal.txBytes > 0) {
+ final long txBytesAcrossUnderlyingIfaces =
+ underlyingIfacesTotal.txBytes * txBytes[i] / tunIfaceTotal.txBytes;
+ totalTxBytes = Math.min(txBytes[i], txBytesAcrossUnderlyingIfaces);
+ }
+ long totalTxPackets = 0;
+ if (tunIfaceTotal.txPackets > 0) {
+ final long txPacketsAcrossUnderlyingIfaces =
+ underlyingIfacesTotal.txPackets * txPackets[i] / tunIfaceTotal.txPackets;
+ totalTxPackets = Math.min(txPackets[i], txPacketsAcrossUnderlyingIfaces);
+ }
+ long totalOperations = 0;
+ if (tunIfaceTotal.operations > 0) {
+ final long operationsAcrossUnderlyingIfaces =
+ underlyingIfacesTotal.operations * operations[i] / tunIfaceTotal.operations;
+ totalOperations = Math.min(operations[i], operationsAcrossUnderlyingIfaces);
+ }
+ // In a second pass, distribute these values across interfaces in the proportion that
+ // each interface represents of the total traffic of the underlying interfaces.
+ for (int j = 0; j < underlyingIfaces.length; j++) {
+ tmpEntry.iface = underlyingIfaces[j];
+ tmpEntry.rxBytes = 0;
+ // Reset 'set' to correct value since it gets updated when adding debug info below.
+ tmpEntry.set = set[i];
+ if (underlyingIfacesTotal.rxBytes > 0) {
+ tmpEntry.rxBytes =
+ totalRxBytes
+ * perInterfaceTotal[j].rxBytes
+ / underlyingIfacesTotal.rxBytes;
}
- if (tunIfaceTotal.rxPackets > 0) {
- tmpEntry.rxPackets = pool.rxPackets * rxPackets[i] / tunIfaceTotal.rxPackets;
- } else {
- tmpEntry.rxPackets = 0;
+ tmpEntry.rxPackets = 0;
+ if (underlyingIfacesTotal.rxPackets > 0) {
+ tmpEntry.rxPackets =
+ totalRxPackets
+ * perInterfaceTotal[j].rxPackets
+ / underlyingIfacesTotal.rxPackets;
}
- if (tunIfaceTotal.txBytes > 0) {
- tmpEntry.txBytes = pool.txBytes * txBytes[i] / tunIfaceTotal.txBytes;
- } else {
- tmpEntry.txBytes = 0;
+ tmpEntry.txBytes = 0;
+ if (underlyingIfacesTotal.txBytes > 0) {
+ tmpEntry.txBytes =
+ totalTxBytes
+ * perInterfaceTotal[j].txBytes
+ / underlyingIfacesTotal.txBytes;
}
- if (tunIfaceTotal.txPackets > 0) {
- tmpEntry.txPackets = pool.txPackets * txPackets[i] / tunIfaceTotal.txPackets;
- } else {
- tmpEntry.txPackets = 0;
+ tmpEntry.txPackets = 0;
+ if (underlyingIfacesTotal.txPackets > 0) {
+ tmpEntry.txPackets =
+ totalTxPackets
+ * perInterfaceTotal[j].txPackets
+ / underlyingIfacesTotal.txPackets;
}
- if (tunIfaceTotal.operations > 0) {
+ tmpEntry.operations = 0;
+ if (underlyingIfacesTotal.operations > 0) {
tmpEntry.operations =
- pool.operations * operations[i] / tunIfaceTotal.operations;
- } else {
- tmpEntry.operations = 0;
+ totalOperations
+ * perInterfaceTotal[j].operations
+ / underlyingIfacesTotal.operations;
}
- tmpEntry.uid = uid[i];
- tmpEntry.tag = tag[i];
- tmpEntry.set = set[i];
- tmpEntry.metered = metered[i];
- tmpEntry.roaming = roaming[i];
- tmpEntry.defaultNetwork = defaultNetwork[i];
+ // tmpEntry now contains the migrated data of the i-th entry for the j-th underlying
+ // interface. Add that data usage to this object.
combineValues(tmpEntry);
if (tag[i] == TAG_NONE) {
- moved.add(tmpEntry);
+ // Add the migrated data to moved so it is deducted from the VPN app later.
+ moved[j].add(tmpEntry);
// Add debug info
tmpEntry.set = SET_DBG_VPN_IN;
combineValues(tmpEntry);
@@ -1312,38 +1411,45 @@ public class NetworkStats implements Parcelable {
return moved;
}
- private void deductTrafficFromVpnApp(int tunUid, String underlyingIface, Entry moved) {
- // Add debug info
- moved.uid = tunUid;
- moved.set = SET_DBG_VPN_OUT;
- moved.tag = TAG_NONE;
- moved.iface = underlyingIface;
- moved.metered = METERED_ALL;
- moved.roaming = ROAMING_ALL;
- moved.defaultNetwork = DEFAULT_NETWORK_ALL;
- combineValues(moved);
-
- // Caveat: if the vpn software uses tag, the total tagged traffic may be greater than
- // the TAG_NONE traffic.
- //
- // Relies on the fact that the underlying traffic only has state ROAMING_NO and METERED_NO,
- // which should be the case as it comes directly from the /proc file. We only blend in the
- // roaming data after applying these adjustments, by checking the NetworkIdentity of the
- // underlying iface.
- int idxVpnBackground = findIndex(underlyingIface, tunUid, SET_DEFAULT, TAG_NONE,
- METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO);
- if (idxVpnBackground != -1) {
- tunSubtract(idxVpnBackground, this, moved);
- }
+ private void deductTrafficFromVpnApp(
+ int tunUid,
+ @NonNull String[] underlyingIfaces,
+ @NonNull Entry[] moved) {
+ for (int i = 0; i < underlyingIfaces.length; i++) {
+ moved[i].uid = tunUid;
+ // Add debug info
+ moved[i].set = SET_DBG_VPN_OUT;
+ moved[i].tag = TAG_NONE;
+ moved[i].iface = underlyingIfaces[i];
+ moved[i].metered = METERED_ALL;
+ moved[i].roaming = ROAMING_ALL;
+ moved[i].defaultNetwork = DEFAULT_NETWORK_ALL;
+ combineValues(moved[i]);
+
+ // Caveat: if the vpn software uses tag, the total tagged traffic may be greater than
+ // the TAG_NONE traffic.
+ //
+ // Relies on the fact that the underlying traffic only has state ROAMING_NO and
+ // METERED_NO, which should be the case as it comes directly from the /proc file.
+ // We only blend in the roaming data after applying these adjustments, by checking the
+ // NetworkIdentity of the underlying iface.
+ final int idxVpnBackground = findIndex(underlyingIfaces[i], tunUid, SET_DEFAULT,
+ TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO);
+ if (idxVpnBackground != -1) {
+ // Note - tunSubtract also updates moved[i]; whatever traffic that's left is removed
+ // from foreground usage.
+ tunSubtract(idxVpnBackground, this, moved[i]);
+ }
- int idxVpnForeground = findIndex(underlyingIface, tunUid, SET_FOREGROUND, TAG_NONE,
- METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO);
- if (idxVpnForeground != -1) {
- tunSubtract(idxVpnForeground, this, moved);
+ final int idxVpnForeground = findIndex(underlyingIfaces[i], tunUid, SET_FOREGROUND,
+ TAG_NONE, METERED_NO, ROAMING_NO, DEFAULT_NETWORK_NO);
+ if (idxVpnForeground != -1) {
+ tunSubtract(idxVpnForeground, this, moved[i]);
+ }
}
}
- private static void tunSubtract(int i, NetworkStats left, Entry right) {
+ private static void tunSubtract(int i, @NonNull NetworkStats left, @NonNull Entry right) {
long rxBytes = Math.min(left.rxBytes[i], right.rxBytes);
left.rxBytes[i] -= rxBytes;
right.rxBytes -= rxBytes;
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index ae421a4991a4c046b2db12e4d8d46071aedc9084..87c7118c0ed83d4fc27679bea7f700999cbd3661 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -48,6 +48,7 @@ import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.util.Arrays;
+import java.util.List;
import java.util.Objects;
/**
@@ -481,17 +482,39 @@ public class NetworkTemplate implements Parcelable {
* For example, given an incoming template matching B, and the currently
* active merge set [A,B], we'd return a new template that primarily matches
* A, but also matches B.
+ * TODO: remove and use {@link #normalize(NetworkTemplate, List)}.
*/
@UnsupportedAppUsage
public static NetworkTemplate normalize(NetworkTemplate template, String[] merged) {
- if (template.isMatchRuleMobile() && ArrayUtils.contains(merged, template.mSubscriberId)) {
- // Requested template subscriber is part of the merge group; return
- // a template that matches all merged subscribers.
- return new NetworkTemplate(template.mMatchRule, merged[0], merged,
- template.mNetworkId);
- } else {
- return template;
+ return normalize(template, Arrays.asList(merged));
+ }
+
+ /**
+ * Examine the given template and normalize if it refers to a "merged"
+ * mobile subscriber. We pick the "lowest" merged subscriber as the primary
+ * for key purposes, and expand the template to match all other merged
+ * subscribers.
+ *
+ * There can be multiple merged subscriberIds for multi-SIM devices.
+ *
+ *
+ * For example, given an incoming template matching B, and the currently
+ * active merge set [A,B], we'd return a new template that primarily matches
+ * A, but also matches B.
+ */
+ public static NetworkTemplate normalize(NetworkTemplate template, List mergedList) {
+ if (!template.isMatchRuleMobile()) return template;
+
+ for (String[] merged : mergedList) {
+ if (ArrayUtils.contains(merged, template.mSubscriberId)) {
+ // Requested template subscriber is part of the merge group; return
+ // a template that matches all merged subscribers.
+ return new NetworkTemplate(template.mMatchRule, merged[0], merged,
+ template.mNetworkId);
+ }
}
+
+ return template;
}
@UnsupportedAppUsage
diff --git a/core/java/android/net/util/MultinetworkPolicyTracker.java b/core/java/android/net/util/MultinetworkPolicyTracker.java
index 30c5cd98b71977f32c5ab2936d852be35dcfbc06..f7e494d830ace9c2c65e4f3ce26562f6c988c98b 100644
--- a/core/java/android/net/util/MultinetworkPolicyTracker.java
+++ b/core/java/android/net/util/MultinetworkPolicyTracker.java
@@ -16,28 +16,31 @@
package android.net.util;
+import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI;
+import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE;
+
+import android.annotation.NonNull;
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
+import android.content.res.Resources;
import android.database.ContentObserver;
-import android.net.ConnectivityManager;
import android.net.Uri;
import android.os.Handler;
-import android.os.Message;
import android.os.UserHandle;
import android.provider.Settings;
+import android.telephony.PhoneStateListener;
+import android.telephony.SubscriptionManager;
+import android.telephony.TelephonyManager;
import android.util.Slog;
-import java.util.Arrays;
-import java.util.List;
-
-import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
-import static android.provider.Settings.Global.NETWORK_AVOID_BAD_WIFI;
-import static android.provider.Settings.Global.NETWORK_METERED_MULTIPATH_PREFERENCE;
+import java.util.Arrays;
+import java.util.List;
/**
* A class to encapsulate management of the "Smart Networking" capability of
@@ -69,6 +72,7 @@ public class MultinetworkPolicyTracker {
private volatile boolean mAvoidBadWifi = true;
private volatile int mMeteredMultipathPreference;
+ private int mActiveSubId = SubscriptionManager.INVALID_SUBSCRIPTION_ID;
public MultinetworkPolicyTracker(Context ctx, Handler handler) {
this(ctx, handler, null);
@@ -95,6 +99,14 @@ public class MultinetworkPolicyTracker {
}
};
+ TelephonyManager.from(ctx).listen(new PhoneStateListener() {
+ @Override
+ public void onActiveDataSubscriptionIdChanged(int subId) {
+ mActiveSubId = subId;
+ reevaluate();
+ }
+ }, PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE);
+
updateAvoidBadWifi();
updateMeteredMultipathPreference();
}
@@ -131,7 +143,12 @@ public class MultinetworkPolicyTracker {
* Whether the device or carrier configuration disables avoiding bad wifi by default.
*/
public boolean configRestrictsAvoidBadWifi() {
- return (mContext.getResources().getInteger(R.integer.config_networkAvoidBadWifi) == 0);
+ return (getResourcesForActiveSubId().getInteger(R.integer.config_networkAvoidBadWifi) == 0);
+ }
+
+ @NonNull
+ private Resources getResourcesForActiveSubId() {
+ return SubscriptionManager.getResourcesForSubId(mContext, mActiveSubId);
}
/**
diff --git a/core/java/android/os/BatteryStats.java b/core/java/android/os/BatteryStats.java
index 00d522bae27f34bb9299dcc720aeada4a29bd5be..ecd16dd1f612d3fdbcaec789009dde62b7eabfd2 100644
--- a/core/java/android/os/BatteryStats.java
+++ b/core/java/android/os/BatteryStats.java
@@ -266,8 +266,11 @@ public abstract class BatteryStats implements Parcelable {
* - Fixed bug in min learned capacity updating process.
* New in version 34:
* - Deprecated STATS_SINCE_UNPLUGGED and STATS_CURRENT.
+ * New in version 35:
+ * - Fixed bug that was not reporting high cellular tx power correctly
+ * - Added out of service and emergency service modes to data connection types
*/
- static final int CHECKIN_VERSION = 34;
+ static final int CHECKIN_VERSION = 35;
/**
* Old version, we hit 9 and ran out of room, need to remove.
@@ -2371,18 +2374,21 @@ public abstract class BatteryStats implements Parcelable {
*/
public abstract int getMobileRadioActiveUnknownCount(int which);
- public static final int DATA_CONNECTION_NONE = 0;
- public static final int DATA_CONNECTION_OTHER = TelephonyManager.MAX_NETWORK_TYPE + 1;
+ public static final int DATA_CONNECTION_OUT_OF_SERVICE = 0;
+ public static final int DATA_CONNECTION_EMERGENCY_SERVICE =
+ TelephonyManager.MAX_NETWORK_TYPE + 1;
+ public static final int DATA_CONNECTION_OTHER = DATA_CONNECTION_EMERGENCY_SERVICE + 1;
+
static final String[] DATA_CONNECTION_NAMES = {
- "none", "gprs", "edge", "umts", "cdma", "evdo_0", "evdo_A",
+ "oos", "gprs", "edge", "umts", "cdma", "evdo_0", "evdo_A",
"1xrtt", "hsdpa", "hsupa", "hspa", "iden", "evdo_b", "lte",
"ehrpd", "hspap", "gsm", "td_scdma", "iwlan", "lte_ca", "nr",
- "other"
+ "emngcy", "other"
};
@UnsupportedAppUsage
- public static final int NUM_DATA_CONNECTION_TYPES = DATA_CONNECTION_OTHER+1;
+ public static final int NUM_DATA_CONNECTION_TYPES = DATA_CONNECTION_OTHER + 1;
/**
* Returns the time in microseconds that the phone has been running with
@@ -6564,6 +6570,10 @@ public abstract class BatteryStats implements Parcelable {
}
oldState = rec.states;
oldState2 = rec.states2;
+ // Clear High Tx Power Flag for volta positioning
+ if ((rec.states2 & HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG) != 0) {
+ rec.states2 &= ~HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
+ }
}
return item.toString();
@@ -7865,9 +7875,9 @@ public abstract class BatteryStats implements Parcelable {
// Phone data connection (DATA_CONNECTION_TIME_DATA and DATA_CONNECTION_COUNT_DATA)
for (int i = 0; i < NUM_DATA_CONNECTION_TYPES; ++i) {
// Map OTHER to TelephonyManager.NETWORK_TYPE_UNKNOWN and mark NONE as a boolean.
- boolean isNone = (i == DATA_CONNECTION_NONE);
+ boolean isNone = (i == DATA_CONNECTION_OUT_OF_SERVICE);
int telephonyNetworkType = i;
- if (i == DATA_CONNECTION_OTHER) {
+ if (i == DATA_CONNECTION_OTHER || i == DATA_CONNECTION_EMERGENCY_SERVICE) {
telephonyNetworkType = TelephonyManager.NETWORK_TYPE_UNKNOWN;
}
final long pdcToken = proto.start(SystemProto.DATA_CONNECTION);
diff --git a/core/java/android/os/GraphicsEnvironment.java b/core/java/android/os/GraphicsEnvironment.java
index ce1942cc6d916d71ddcb21416b6f591a95d47d94..7a70e93b69d546d870cd79ccd23a91de6a8b2966 100644
--- a/core/java/android/os/GraphicsEnvironment.java
+++ b/core/java/android/os/GraphicsEnvironment.java
@@ -67,6 +67,8 @@ public class GraphicsEnvironment {
private static final String PROPERTY_GFX_DRIVER_PRERELEASE = "ro.gfx.driver.1";
private static final String PROPERTY_GFX_DRIVER_BUILD_TIME = "ro.gfx.driver_build_time";
private static final String METADATA_DRIVER_BUILD_TIME = "com.android.gamedriver.build_time";
+ private static final String METADATA_DEVELOPER_DRIVER_ENABLE =
+ "com.android.graphics.developerdriver.enable";
private static final String ANGLE_RULES_FILE = "a4a_rules.json";
private static final String ANGLE_TEMP_RULES = "debug.angle.rules";
private static final String ACTION_ANGLE_FOR_ANDROID = "android.app.action.ANGLE_FOR_ANDROID";
@@ -691,7 +693,8 @@ public class GraphicsEnvironment {
/**
* Return the driver package name to use. Return null for system driver.
*/
- private static String chooseDriverInternal(Context context, Bundle coreSettings) {
+ private static String chooseDriverInternal(
+ Context context, Bundle coreSettings, PackageManager pm, String packageName) {
final String gameDriver = SystemProperties.get(PROPERTY_GFX_DRIVER);
final boolean hasGameDriver = gameDriver != null && !gameDriver.isEmpty();
@@ -706,12 +709,24 @@ public class GraphicsEnvironment {
// To minimize risk of driver updates crippling the device beyond user repair, never use an
// updated driver for privileged or non-updated system apps. Presumably pre-installed apps
// were tested thoroughly with the pre-installed driver.
- final ApplicationInfo ai = context.getApplicationInfo();
+ ApplicationInfo ai;
+ try {
+ // Get the ApplicationInfo from PackageManager so that metadata fields present.
+ ai = pm.getApplicationInfo(packageName, PackageManager.GET_META_DATA);
+ } catch (PackageManager.NameNotFoundException e) {
+ // Unlikely to fail for applications, but in case of failure, fall back to use the
+ // ApplicationInfo from context directly.
+ ai = context.getApplicationInfo();
+ }
if (ai.isPrivilegedApp() || (ai.isSystemApp() && !ai.isUpdatedSystemApp())) {
if (DEBUG) Log.v(TAG, "Ignoring driver package for privileged/non-updated system app.");
return null;
}
+ final boolean enablePrereleaseDriver =
+ (ai.metaData != null && ai.metaData.getBoolean(METADATA_DEVELOPER_DRIVER_ENABLE))
+ || getCanLoadSystemLibraries() == 1;
+
// Priority for Game Driver settings global on confliction (Higher priority comes first):
// 1. GAME_DRIVER_ALL_APPS
// 2. GAME_DRIVER_OPT_OUT_APPS
@@ -728,7 +743,7 @@ public class GraphicsEnvironment {
return hasGameDriver ? gameDriver : null;
case GAME_DRIVER_GLOBAL_OPT_IN_PRERELEASE_DRIVER:
if (DEBUG) Log.v(TAG, "All apps opt in to use prerelease driver.");
- return hasPrereleaseDriver ? prereleaseDriver : null;
+ return hasPrereleaseDriver && enablePrereleaseDriver ? prereleaseDriver : null;
case GAME_DRIVER_GLOBAL_OPT_IN_DEFAULT:
default:
break;
@@ -745,7 +760,7 @@ public class GraphicsEnvironment {
null, coreSettings, Settings.Global.GAME_DRIVER_PRERELEASE_OPT_IN_APPS)
.contains(appPackageName)) {
if (DEBUG) Log.v(TAG, "App opts in for prerelease Game Driver.");
- return hasPrereleaseDriver ? prereleaseDriver : null;
+ return hasPrereleaseDriver && enablePrereleaseDriver ? prereleaseDriver : null;
}
// Early return here since the rest logic is only for Game Driver.
@@ -783,7 +798,8 @@ public class GraphicsEnvironment {
*/
private static boolean chooseDriver(
Context context, Bundle coreSettings, PackageManager pm, String packageName) {
- final String driverPackageName = chooseDriverInternal(context, coreSettings);
+ final String driverPackageName = chooseDriverInternal(context, coreSettings, pm,
+ packageName);
if (driverPackageName == null) {
return false;
}
diff --git a/core/java/android/os/IVibratorService.aidl b/core/java/android/os/IVibratorService.aidl
index e8b3ca6cb7ae369063e25f5aa811c92c9b6037fd..1456ff7e6c5e880d0fd8a692c8e644c4f1b4c6d4 100644
--- a/core/java/android/os/IVibratorService.aidl
+++ b/core/java/android/os/IVibratorService.aidl
@@ -16,6 +16,7 @@
package android.os;
+import android.media.AudioAttributes;
import android.os.VibrationEffect;
/** {@hide} */
@@ -23,8 +24,8 @@ interface IVibratorService
{
boolean hasVibrator();
boolean hasAmplitudeControl();
- void vibrate(int uid, String opPkg, in VibrationEffect effect, int usageHint, String reason,
- IBinder token);
+ void vibrate(int uid, String opPkg, in VibrationEffect effect, in AudioAttributes attributes,
+ String reason, IBinder token);
void cancelVibrate(IBinder token);
}
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index 53298d8d8aed8f7a7ab09b790899d930c8c781d7..48fc2a6bf449ab7b8be71af35d9cd40a10b94603 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -31,6 +31,8 @@ import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.provider.Settings;
+import android.telephony.SubscriptionInfo;
+import android.telephony.SubscriptionManager;
import android.telephony.euicc.EuiccManager;
import android.text.TextUtils;
import android.text.format.DateFormat;
@@ -56,10 +58,12 @@ import java.security.cert.X509Certificate;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.HashSet;
+import java.util.List;
import java.util.Locale;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
@@ -87,11 +91,14 @@ public class RecoverySystem {
private static final long PUBLISH_PROGRESS_INTERVAL_MS = 500;
private static final long DEFAULT_EUICC_FACTORY_RESET_TIMEOUT_MILLIS = 30000L; // 30 s
-
private static final long MIN_EUICC_FACTORY_RESET_TIMEOUT_MILLIS = 5000L; // 5 s
-
private static final long MAX_EUICC_FACTORY_RESET_TIMEOUT_MILLIS = 60000L; // 60 s
+ private static final long DEFAULT_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS =
+ 45000L; // 45 s
+ private static final long MIN_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS = 15000L; // 15 s
+ private static final long MAX_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS = 90000L; // 90 s
+
/** Used to communicate with recovery. See bootable/recovery/recovery.cpp. */
private static final File RECOVERY_DIR = new File("/cache/recovery");
private static final File LOG_FILE = new File(RECOVERY_DIR, "log");
@@ -99,9 +106,14 @@ public class RecoverySystem {
private static final String LAST_PREFIX = "last_";
private static final String ACTION_EUICC_FACTORY_RESET =
"com.android.internal.action.EUICC_FACTORY_RESET";
+ private static final String ACTION_EUICC_REMOVE_INVISIBLE_SUBSCRIPTIONS =
+ "com.android.internal.action.EUICC_REMOVE_INVISIBLE_SUBSCRIPTIONS";
- /** used in {@link #wipeEuiccData} as package name of callback intent */
- private static final String PACKAGE_NAME_WIPING_EUICC_DATA_CALLBACK = "android";
+ /**
+ * Used in {@link #wipeEuiccData} & {@link #removeEuiccInvisibleSubs} as package name of
+ * callback intent.
+ */
+ private static final String PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK = "android";
/**
* The recovery image uses this file to identify the location (i.e. blocks)
@@ -754,8 +766,11 @@ public class RecoverySystem {
// Block until the ordered broadcast has completed.
condition.block();
+ EuiccManager euiccManager = context.getSystemService(EuiccManager.class);
if (wipeEuicc) {
- wipeEuiccData(context, PACKAGE_NAME_WIPING_EUICC_DATA_CALLBACK);
+ wipeEuiccData(context, PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
+ } else {
+ removeEuiccInvisibleSubs(context, euiccManager);
}
String shutdownArg = null;
@@ -851,6 +866,110 @@ public class RecoverySystem {
return false;
}
+ private static void removeEuiccInvisibleSubs(
+ Context context, EuiccManager euiccManager) {
+ ContentResolver cr = context.getContentResolver();
+ if (Settings.Global.getInt(cr, Settings.Global.EUICC_PROVISIONED, 0) == 0) {
+ // If the eUICC isn't provisioned, there's no need to remove euicc invisible profiles,
+ // as there's nothing to be removed.
+ Log.i(TAG, "Skip removing eUICC invisible profiles as it is not provisioned.");
+ return;
+ } else if (euiccManager == null || !euiccManager.isEnabled()) {
+ Log.i(TAG, "Skip removing eUICC invisible profiles as eUICC manager is not available.");
+ return;
+ }
+ SubscriptionManager subscriptionManager =
+ context.getSystemService(SubscriptionManager.class);
+ List availableSubs =
+ subscriptionManager.getAvailableSubscriptionInfoList();
+ if (availableSubs == null || availableSubs.isEmpty()) {
+ Log.i(TAG, "Skip removing eUICC invisible profiles as no available profiles found.");
+ return;
+ }
+ List invisibleSubs = new ArrayList<>();
+ for (SubscriptionInfo sub : availableSubs) {
+ if (sub.isEmbedded() && !subscriptionManager.isSubscriptionVisible(sub)) {
+ invisibleSubs.add(sub);
+ }
+ }
+ removeEuiccInvisibleSubs(context, invisibleSubs, euiccManager);
+ }
+
+ private static boolean removeEuiccInvisibleSubs(
+ Context context, List subscriptionInfos, EuiccManager euiccManager) {
+ if (subscriptionInfos == null || subscriptionInfos.isEmpty()) {
+ Log.i(TAG, "There are no eUICC invisible profiles needed to be removed.");
+ return true;
+ }
+ CountDownLatch removeSubsLatch = new CountDownLatch(subscriptionInfos.size());
+ final AtomicInteger removedSubsCount = new AtomicInteger(0);
+
+ BroadcastReceiver removeEuiccSubsReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (ACTION_EUICC_REMOVE_INVISIBLE_SUBSCRIPTIONS.equals(intent.getAction())) {
+ if (getResultCode() != EuiccManager.EMBEDDED_SUBSCRIPTION_RESULT_OK) {
+ int detailedCode = intent.getIntExtra(
+ EuiccManager.EXTRA_EMBEDDED_SUBSCRIPTION_DETAILED_CODE, 0);
+ Log.e(TAG, "Error removing euicc opportunistic profile, Detailed code = "
+ + detailedCode);
+ } else {
+ Log.e(TAG, "Successfully remove euicc opportunistic profile.");
+ removedSubsCount.incrementAndGet();
+ }
+ removeSubsLatch.countDown();
+ }
+ }
+ };
+
+ Intent intent = new Intent(ACTION_EUICC_REMOVE_INVISIBLE_SUBSCRIPTIONS);
+ intent.setPackage(PACKAGE_NAME_EUICC_DATA_MANAGEMENT_CALLBACK);
+ PendingIntent callbackIntent = PendingIntent.getBroadcastAsUser(
+ context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT, UserHandle.SYSTEM);
+ IntentFilter intentFilter = new IntentFilter();
+ intentFilter.addAction(ACTION_EUICC_REMOVE_INVISIBLE_SUBSCRIPTIONS);
+ HandlerThread euiccHandlerThread =
+ new HandlerThread("euiccRemovingSubsReceiverThread");
+ euiccHandlerThread.start();
+ Handler euiccHandler = new Handler(euiccHandlerThread.getLooper());
+ context.getApplicationContext()
+ .registerReceiver(
+ removeEuiccSubsReceiver, intentFilter, null, euiccHandler);
+ for (SubscriptionInfo subscriptionInfo : subscriptionInfos) {
+ Log.i(
+ TAG,
+ "Remove invisible subscription " + subscriptionInfo.getSubscriptionId()
+ + " from card " + subscriptionInfo.getCardId());
+ euiccManager.createForCardId(subscriptionInfo.getCardId())
+ .deleteSubscription(subscriptionInfo.getSubscriptionId(), callbackIntent);
+ }
+ try {
+ long waitingTimeMillis = Settings.Global.getLong(
+ context.getContentResolver(),
+ Settings.Global.EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS,
+ DEFAULT_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS);
+ if (waitingTimeMillis < MIN_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS) {
+ waitingTimeMillis = MIN_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS;
+ } else if (waitingTimeMillis > MAX_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS) {
+ waitingTimeMillis = MAX_EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS;
+ }
+ if (!removeSubsLatch.await(waitingTimeMillis, TimeUnit.MILLISECONDS)) {
+ Log.e(TAG, "Timeout removing invisible euicc profiles.");
+ return false;
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ Log.e(TAG, "Removing invisible euicc profiles interrupted", e);
+ return false;
+ } finally {
+ context.getApplicationContext().unregisterReceiver(removeEuiccSubsReceiver);
+ if (euiccHandlerThread != null) {
+ euiccHandlerThread.quit();
+ }
+ }
+ return removedSubsCount.get() == subscriptionInfos.size();
+ }
+
/** {@hide} */
public static void rebootPromptAndWipeUserData(Context context, String reason)
throws IOException {
diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java
index 4af514abfd69d25351d040b7bd26457ac8cbaac9..a5188e7cd58d08b32a6e465fd9f380aeec936d4f 100644
--- a/core/java/android/os/SystemVibrator.java
+++ b/core/java/android/os/SystemVibrator.java
@@ -77,16 +77,12 @@ public class SystemVibrator extends Vibrator {
return;
}
try {
- mService.vibrate(uid, opPkg, effect, usageForAttributes(attributes), reason, mToken);
+ mService.vibrate(uid, opPkg, effect, attributes, reason, mToken);
} catch (RemoteException e) {
Log.w(TAG, "Failed to vibrate.", e);
}
}
- private static int usageForAttributes(AudioAttributes attributes) {
- return attributes != null ? attributes.getUsage() : AudioAttributes.USAGE_UNKNOWN;
- }
-
@Override
public void cancel() {
if (mService == null) {
diff --git a/core/java/android/os/VibrationEffect.java b/core/java/android/os/VibrationEffect.java
index 702b41beb0710cc1e6ac3f1ebf10fa7d698b8586..26da0a0aee0745462fce300e849e952b7cfbce1b 100644
--- a/core/java/android/os/VibrationEffect.java
+++ b/core/java/android/os/VibrationEffect.java
@@ -53,7 +53,7 @@ public abstract class VibrationEffect implements Parcelable {
public static final int MAX_AMPLITUDE = 255;
/**
- * A click effect.
+ * A click effect. Use this effect as a baseline, as it's the most common type of click effect.
*
* @see #get(int)
*/
@@ -67,7 +67,7 @@ public abstract class VibrationEffect implements Parcelable {
public static final int EFFECT_DOUBLE_CLICK = Effect.DOUBLE_CLICK;
/**
- * A tick effect.
+ * A tick effect. This effect is less strong compared to {@link #EFFECT_CLICK}.
* @see #get(int)
*/
public static final int EFFECT_TICK = Effect.TICK;
@@ -89,7 +89,7 @@ public abstract class VibrationEffect implements Parcelable {
public static final int EFFECT_POP = Effect.POP;
/**
- * A heavy click effect.
+ * A heavy click effect. This effect is stronger than {@link #EFFECT_CLICK}.
* @see #get(int)
*/
public static final int EFFECT_HEAVY_CLICK = Effect.HEAVY_CLICK;
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java
index 182a2ffa5221629d3ce56c650a1e91e07fbc2376..2934c5dff858e82d012aa4647c5709def8cd67cb 100644
--- a/core/java/android/permission/PermissionManager.java
+++ b/core/java/android/permission/PermissionManager.java
@@ -25,14 +25,15 @@ import android.annotation.SystemService;
import android.annotation.TestApi;
import android.content.Context;
import android.content.pm.IPackageManager;
+import android.content.pm.permission.SplitPermissionInfoParcelable;
import android.os.RemoteException;
+import android.util.Log;
import com.android.internal.annotations.Immutable;
-import com.android.server.SystemConfig;
import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
-import java.util.Objects;
/**
* System level service for accessing the permission capabilities of the platform.
@@ -43,18 +44,14 @@ import java.util.Objects;
@SystemApi
@SystemService(Context.PERMISSION_SERVICE)
public final class PermissionManager {
- /**
- * {@link android.content.pm.PackageParser} needs access without having a {@link Context}.
- *
- * @hide
- */
- public static final ArrayList SPLIT_PERMISSIONS =
- SystemConfig.getInstance().getSplitPermissions();
+ private static final String TAG = PermissionManager.class.getName();
private final @NonNull Context mContext;
private final IPackageManager mPackageManager;
+ private List mSplitPermissionInfos;
+
/**
* Creates a new instance.
*
@@ -122,7 +119,48 @@ public final class PermissionManager {
* @return All permissions that are split.
*/
public @NonNull List getSplitPermissions() {
- return SPLIT_PERMISSIONS;
+ if (mSplitPermissionInfos != null) {
+ return mSplitPermissionInfos;
+ }
+
+ List parcelableList;
+ try {
+ parcelableList = mPackageManager.getSplitPermissions();
+ } catch (RemoteException e) {
+ Log.w(TAG, "Error getting split permissions", e);
+ return Collections.emptyList();
+ }
+
+ mSplitPermissionInfos = splitPermissionInfoListToNonParcelableList(parcelableList);
+
+ return mSplitPermissionInfos;
+ }
+
+ private List splitPermissionInfoListToNonParcelableList(
+ List parcelableList) {
+ final int size = parcelableList.size();
+ List list = new ArrayList<>(size);
+ for (int i = 0; i < size; i++) {
+ list.add(new SplitPermissionInfo(parcelableList.get(i)));
+ }
+ return list;
+ }
+
+ /**
+ * Converts a {@link List} of {@link SplitPermissionInfo} into a List of
+ * {@link SplitPermissionInfoParcelable} and returns it.
+ * @hide
+ */
+ public static List splitPermissionInfoListToParcelableList(
+ List splitPermissionsList) {
+ final int size = splitPermissionsList.size();
+ List outList = new ArrayList<>(size);
+ for (int i = 0; i < size; i++) {
+ SplitPermissionInfo info = splitPermissionsList.get(i);
+ outList.add(new SplitPermissionInfoParcelable(
+ info.getSplitPermission(), info.getNewPermissions(), info.getTargetSdk()));
+ }
+ return outList;
}
/**
@@ -131,44 +169,40 @@ public final class PermissionManager {
*/
@Immutable
public static final class SplitPermissionInfo {
- private final @NonNull String mSplitPerm;
- private final @NonNull List mNewPerms;
- private final int mTargetSdk;
+ private @NonNull final SplitPermissionInfoParcelable mSplitPermissionInfoParcelable;
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
SplitPermissionInfo that = (SplitPermissionInfo) o;
- return mTargetSdk == that.mTargetSdk
- && mSplitPerm.equals(that.mSplitPerm)
- && mNewPerms.equals(that.mNewPerms);
+ return mSplitPermissionInfoParcelable.equals(that.mSplitPermissionInfoParcelable);
}
@Override
public int hashCode() {
- return Objects.hash(mSplitPerm, mNewPerms, mTargetSdk);
+ return mSplitPermissionInfoParcelable.hashCode();
}
/**
* Get the permission that is split.
*/
public @NonNull String getSplitPermission() {
- return mSplitPerm;
+ return mSplitPermissionInfoParcelable.getSplitPermission();
}
/**
* Get the permissions that are added.
*/
public @NonNull List getNewPermissions() {
- return mNewPerms;
+ return mSplitPermissionInfoParcelable.getNewPermissions();
}
/**
* Get the target API level when the permission was split.
*/
public int getTargetSdk() {
- return mTargetSdk;
+ return mSplitPermissionInfoParcelable.getTargetSdk();
}
/**
@@ -182,9 +216,11 @@ public final class PermissionManager {
*/
public SplitPermissionInfo(@NonNull String splitPerm, @NonNull List newPerms,
int targetSdk) {
- mSplitPerm = splitPerm;
- mNewPerms = newPerms;
- mTargetSdk = targetSdk;
+ this(new SplitPermissionInfoParcelable(splitPerm, newPerms, targetSdk));
+ }
+
+ private SplitPermissionInfo(@NonNull SplitPermissionInfoParcelable parcelable) {
+ mSplitPermissionInfoParcelable = parcelable;
}
}
}
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index ea4eba26b12ac767c50ecc0c6eb81e9715654cfb..8290eee20189f1d807a0b25aa9fa97625af1411d 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -870,8 +870,8 @@ public final class ContactsContract {
protected interface ContactOptionsColumns {
/**
* The number of times a contact has been contacted.
- *
Caution: As of January 7, 2019, this field is obsolete. For
- * more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
* Contacts Provider
* page.
*
Type: INTEGER
@@ -885,8 +885,8 @@ public final class ContactsContract {
/**
* The last time a contact was contacted.
- *
Caution: As of January 7, 2019, this field is obsolete. For
- * more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
* Contacts Provider
* page.
*
Type: INTEGER
@@ -1694,10 +1694,10 @@ public final class ContactsContract {
* TIMES_CONTACTED field is incremented by 1 and the LAST_TIME_CONTACTED
* field is populated with the current system time.
*
- *
Caution: As of January 7, 2019, this method is obsolete. For
- * more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
* Contacts Provider
- * page.
+ * page.
*
* @param resolver the ContentResolver to use
* @param contactId the person who was contacted
@@ -1733,8 +1733,8 @@ public final class ContactsContract {
* Frequent contacts are no longer included in the result as of
* Android version {@link android.os.Build.VERSION_CODES#Q}.
*
- *
Caution: As of January 7, 2019, this field no longer sorts
- * results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store, this
+ * field doesn't sort results based on contacts frequency. For more information, see the
* Contacts Provider
* page.
*/
@@ -1748,8 +1748,8 @@ public final class ContactsContract {
* Android version {@link android.os.Build.VERSION_CODES#Q}.
* This URI always returns an empty cursor.
*
- *
Caution: As of January 7, 2019, this field no longer sorts
- * results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store, this
+ * field doesn't sort results based on contacts frequency. For more information, see the
* Contacts Provider
* page.
*/
@@ -1763,8 +1763,8 @@ public final class ContactsContract {
* various parts of the contact name. The filter argument should be passed
* as an additional path segment after this URI.
*
- *
Caution: As of January 7, 2019, this field no longer sorts
- * results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store, this
+ * field doesn't sort results based on contacts frequency. For more information, see the
* Contacts Provider
* page.
*/
@@ -4298,10 +4298,10 @@ public final class ContactsContract {
* Android version {@link android.os.Build.VERSION_CODES#Q}.
* This column always contains 0.
*
- *
Caution: As of January 7, 2019, this field is obsolete.
- * For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
* Contacts Provider
- * page.
+ * page.
*/
@Deprecated
public static final String LAST_TIME_USED = "last_time_used";
@@ -4312,10 +4312,10 @@ public final class ContactsContract {
* Android version {@link android.os.Build.VERSION_CODES#Q}.
* This column always contains 0.
*
- *
Caution: As of January 7, 2019, this field is obsolete.
- * For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
* Contacts Provider
- * page.
+ * page.
*/
@Deprecated
public static final String TIMES_USED = "times_used";
@@ -5266,8 +5266,8 @@ public final class ContactsContract {
/**
* The content:// style URI for this table.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store, this
+ * field doesn't sort results based on contacts frequency. For more information, see the
* Contacts Provider
* page.
*
@@ -5284,8 +5284,8 @@ public final class ContactsContract {
/**
*
URI used for the "enterprise caller-id".
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store, this
+ * field doesn't sort results based on contacts frequency. For more information, see the
* Contacts Provider
* page.
*
@@ -6086,8 +6086,8 @@ public final class ContactsContract {
* to display names as well as phone numbers. The filter argument should be passed
* as an additional path segment after this URI.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: This field deosn't sort results based on contacts
+ * frequency. For more information, see the
* Contacts Provider
* page.
*/
@@ -6099,8 +6099,9 @@ public final class ContactsContract {
* same columns. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
* parameters, otherwise it will throw IllegalArgumentException.
*
- *
Caution: As of January 7, 2019, this field no longer sorts
- * results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field doesn't sort results based on contacts frequency. For more information,
+ * see the
* Contacts Provider
* page.
*/
@@ -6367,8 +6368,9 @@ public final class ContactsContract {
* as an additional path segment after this URI.
*
*
- *
Caution: As of January 7, 2019, this field no longer sorts
- * results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field doesn't sort results based on contacts frequency. For more information,
+ * see the
* Contacts Provider
* page.
*
@@ -6390,8 +6392,9 @@ public final class ContactsContract {
* same columns. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
* parameters, otherwise it will throw IllegalArgumentException.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field doesn't sort results based on contacts frequency. For more information,
+ * see the
* Contacts Provider
* page.
*/
@@ -7609,8 +7612,8 @@ public final class ContactsContract {
*
Similar to {@link Phone#CONTENT_FILTER_URI}, but allows users to filter callable
* data.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: This field no longer sorts results based on
+ * contacts frequency. For more information, see the
* Contacts Provider
* page.
*/
@@ -7622,8 +7625,9 @@ public final class ContactsContract {
* callable data. This URI requires {@link ContactsContract#DIRECTORY_PARAM_KEY} in
* parameters, otherwise it will throw IllegalArgumentException.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field doesn't sort results based on contacts frequency. For more information,
+ * see the
* Contacts Provider
* page.
*/
@@ -7653,8 +7657,9 @@ public final class ContactsContract {
*
The content:// style URI for these data items, which allows for a query parameter
* to be appended onto the end to filter for data items matching the query.
*
- *
Caution: As of January 7, 2019, this field no longer
- * sorts results based on contacts frequency. For more information, see the
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field doesn't sort results based on contacts frequency. For more information,
+ * see the
* Contacts Provider
* page.
*/
@@ -8305,15 +8310,14 @@ public final class ContactsContract {
}
/**
- *
Caution: As of January 7, 2019, this class is obsolete. For
- * more information, see the
- * Contacts Provider
- * page.
- *
*
* API allowing applications to send usage information for each {@link Data} row to the
* Contacts Provider. Applications can also clear all usage information.
*
+ *
Caution: If you publish your app to the Google Play Store,
+ * this field is obsolete, regardless of Android version. For more information, see the
+ * Contacts Provider
+ * page.
*
* With the feedback, Contacts Provider may return more contextually appropriate results for
* Data listing, typically supplied with
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index e30ba38c127fa70347428de7c33a4c302177e730..c837b93461737d99031a05b01fd4fb0a5f8819f1 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -135,6 +135,14 @@ public final class DeviceConfig {
@SystemApi
public static final String NAMESPACE_DEX_BOOT = "dex_boot";
+ /**
+ * Namespace for display manager related features. The names to access the properties in this
+ * namespace should be defined in {@link android.hardware.display.DisplayManager}.
+ *
+ * @hide
+ */
+ public static final String NAMESPACE_DISPLAY_MANAGER = "display_manager";
+
/**
* Namespace for all Game Driver features.
*
@@ -336,6 +344,20 @@ public final class DeviceConfig {
@TestApi
String KEY_SYSTEM_GESTURES_EXCLUDED_BY_PRE_Q_STICKY_IMMERSIVE =
"system_gestures_excluded_by_pre_q_sticky_immersive";
+
+ /**
+ * The minimum duration between gesture exclusion logging for a given window in
+ * milliseconds.
+ *
+ * Events that happen in-between will be silently dropped.
+ *
+ * A non-positive value disables logging.
+ *
+ * @see android.provider.DeviceConfig#NAMESPACE_WINDOW_MANAGER
+ * @hide
+ */
+ String KEY_SYSTEM_GESTURE_EXCLUSION_LOG_DEBOUNCE_MILLIS =
+ "system_gesture_exclusion_log_debounce_millis";
}
private static final Object sLock = new Object();
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 1d92644fcfda526184e33c38321876d7e89aa290..0c5cb5e2e51bf665be9a756db38a5cef11b03050 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -88,6 +88,7 @@ import android.util.ArrayMap;
import android.util.ArraySet;
import android.util.Log;
import android.util.MemoryIntArray;
+import android.view.Display;
import android.view.inputmethod.InputMethodSystemProperty;
import com.android.internal.annotations.GuardedBy;
@@ -3477,6 +3478,14 @@ public final class Settings {
}
};
+ /**
+ * The user selected min refresh rate in frames per second.
+ *
+ * If this isn't set, 0 will be used.
+ * @hide
+ */
+ public static final String MIN_REFRESH_RATE = "min_refresh_rate";
+
/**
* The user selected peak refresh rate in frames per second.
*
@@ -4075,7 +4084,7 @@ public final class Settings {
* preference, this rotation value will be used. Must be one of the
* {@link android.view.Surface#ROTATION_0 Surface rotation constants}.
*
- * @see android.view.Display#getRotation
+ * @see Display#getRotation
*/
public static final String USER_ROTATION = "user_rotation";
@@ -6347,13 +6356,15 @@ public final class Settings {
"lock_screen_allow_remote_input";
/**
- * Indicates which clock face to show on lock screen and AOD.
+ * Indicates which clock face to show on lock screen and AOD formatted as a serialized
+ * {@link org.json.JSONObject} with the format:
+ * {"clock": id, "_applied_timestamp": timestamp}
* @hide
*/
public static final String LOCK_SCREEN_CUSTOM_CLOCK_FACE = "lock_screen_custom_clock_face";
private static final Validator LOCK_SCREEN_CUSTOM_CLOCK_FACE_VALIDATOR =
- ANY_STRING_VALIDATOR;
+ SettingsValidators.JSON_OBJECT_VALIDATOR;
/**
* Indicates which clock face to show on lock screen and AOD while docked.
@@ -7757,12 +7768,21 @@ public final class Settings {
private static final Validator DOZE_TAP_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
/**
- * Gesture that wakes up the display, showing the ambient version of the status bar.
+ * Gesture that wakes up the display, showing some version of the lock screen.
+ * @hide
+ */
+ public static final String DOZE_WAKE_LOCK_SCREEN_GESTURE = "doze_wake_screen_gesture";
+
+ private static final Validator DOZE_WAKE_LOCK_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
+
+ /**
+ * Gesture that wakes up the display, toggling between {@link Display.STATE_OFF} and
+ * {@link Display.STATE_DOZE}.
* @hide
*/
- public static final String DOZE_WAKE_SCREEN_GESTURE = "doze_wake_screen_gesture";
+ public static final String DOZE_WAKE_DISPLAY_GESTURE = "doze_wake_display_gesture";
- private static final Validator DOZE_WAKE_SCREEN_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
+ private static final Validator DOZE_WAKE_DISPLAY_GESTURE_VALIDATOR = BOOLEAN_VALIDATOR;
/**
* Gesture that skips media.
@@ -7778,9 +7798,29 @@ public final class Settings {
*/
public static final String SKIP_GESTURE_COUNT = "skip_gesture_count";
+ /**
+ * Count of non-gesture interaction.
+ * @hide
+ */
+ public static final String SKIP_TOUCH_COUNT = "skip_touch_count";
+
private static final Validator SKIP_GESTURE_COUNT_VALIDATOR =
NON_NEGATIVE_INTEGER_VALIDATOR;
+ /**
+ * Direction to advance media for skip gesture
+ * @hide
+ */
+ public static final String SKIP_DIRECTION = "skip_gesture_direction";
+
+ /**
+ * Only used if FeatureFlag "settings_skip_direction_mutable" is enabled.
+ * If feature flag is disabled, should assume SKIP_DIRECTION = 0.
+ * 0 / false = right to left to advance to next
+ * 1 / true = left to right to advance to next
+ */
+ private static final Validator SKIP_DIRECTION_VALIDATOR = BOOLEAN_VALIDATOR;
+
/**
* Gesture that silences sound (alarms, notification, calls).
* @hide
@@ -7808,11 +7848,22 @@ public final class Settings {
public static final String SILENCE_CALL_GESTURE_COUNT = "silence_call_gesture_count";
/**
- * Count of successful silence notification gestures.
+ * Count of non-gesture interaction.
+ * @hide
+ */
+ public static final String SILENCE_ALARMS_TOUCH_COUNT = "silence_alarms_touch_count";
+
+ /**
+ * Count of non-gesture interaction.
+ * @hide
+ */
+ public static final String SILENCE_TIMER_TOUCH_COUNT = "silence_timer_touch_count";
+
+ /**
+ * Count of non-gesture interaction.
* @hide
*/
- public static final String SILENCE_NOTIFICATION_GESTURE_COUNT =
- "silence_notification_gesture_count";
+ public static final String SILENCE_CALL_TOUCH_COUNT = "silence_call_touch_count";
private static final Validator SILENCE_GESTURE_COUNT_VALIDATOR =
NON_NEGATIVE_INTEGER_VALIDATOR;
@@ -8275,6 +8326,16 @@ public final class Settings {
private static final Validator FACE_UNLOCK_DISMISSES_KEYGUARD_VALIDATOR =
BOOLEAN_VALIDATOR;
+ /**
+ * Whether or not media is shown automatically when bypassing as a heads up.
+ * @hide
+ */
+ public static final String SHOW_MEDIA_WHEN_BYPASSING =
+ "show_media_when_bypassing";
+
+ private static final Validator SHOW_MEDIA_WHEN_BYPASSING_VALIDATOR =
+ BOOLEAN_VALIDATOR;
+
/**
* Whether or not face unlock requires attention. This is a cached value, the source of
* truth is obtained through the HAL.
@@ -8315,14 +8376,17 @@ public final class Settings {
BOOLEAN_VALIDATOR;
/**
- * Whether or not the face unlock education screen has been shown to the user.
+ * Whether or not a user should re enroll their face.
+ *
+ * Face unlock re enroll.
+ * 0 = No re enrollment.
+ * 1 = Re enrollment is suggested.
+ * 2 = Re enrollment is required after a set time period.
+ * 3 = Re enrollment is required immediately.
+ *
* @hide
*/
- public static final String FACE_UNLOCK_EDUCATION_INFO_DISPLAYED =
- "face_unlock_education_info_displayed";
-
- private static final Validator FACE_UNLOCK_EDUCATION_INFO_DISPLAYED_VALIDATOR =
- BOOLEAN_VALIDATOR;
+ public static final String FACE_UNLOCK_RE_ENROLL = "face_unlock_re_enroll";
/**
* Whether or not debugging is enabled.
@@ -8660,10 +8724,16 @@ public final class Settings {
* Whether the notification bubbles are globally enabled
* The value is boolean (1 or 0).
* @hide
+ * @deprecated use {@link Global#NOTIFICATION_BUBBLES} instead.
*/
@TestApi
+ @Deprecated
public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+ /**
+ * @deprecated use {@link Global#NOTIFICATION_BUBBLES_VALIDATOR} instead.
+ */
+ @Deprecated
private static final Validator NOTIFICATION_BUBBLES_VALIDATOR = BOOLEAN_VALIDATOR;
/**
@@ -8974,10 +9044,12 @@ public final class Settings {
DOZE_PICK_UP_GESTURE,
DOZE_DOUBLE_TAP_GESTURE,
DOZE_TAP_SCREEN_GESTURE,
- DOZE_WAKE_SCREEN_GESTURE,
+ DOZE_WAKE_LOCK_SCREEN_GESTURE,
+ DOZE_WAKE_DISPLAY_GESTURE,
NFC_PAYMENT_DEFAULT_COMPONENT,
AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
FACE_UNLOCK_KEYGUARD_ENABLED,
+ SHOW_MEDIA_WHEN_BYPASSING,
FACE_UNLOCK_DISMISSES_KEYGUARD,
FACE_UNLOCK_APP_ENABLED,
FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION,
@@ -8986,7 +9058,6 @@ public final class Settings {
ASSIST_GESTURE_WAKE_ENABLED,
VR_DISPLAY_MODE,
NOTIFICATION_BADGING,
- NOTIFICATION_BUBBLES,
NOTIFICATION_DISMISS_RTL,
QS_AUTO_ADDED_TILES,
SCREENSAVER_ENABLED,
@@ -9019,15 +9090,19 @@ public final class Settings {
UI_NIGHT_MODE,
LOCK_SCREEN_WHEN_TRUST_LOST,
SKIP_GESTURE,
+ SKIP_DIRECTION,
SILENCE_GESTURE,
THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
NAVIGATION_MODE,
AWARE_ENABLED,
SKIP_GESTURE_COUNT,
+ SKIP_TOUCH_COUNT,
SILENCE_ALARMS_GESTURE_COUNT,
- SILENCE_NOTIFICATION_GESTURE_COUNT,
SILENCE_CALL_GESTURE_COUNT,
SILENCE_TIMER_GESTURE_COUNT,
+ SILENCE_ALARMS_TOUCH_COUNT,
+ SILENCE_CALL_TOUCH_COUNT,
+ SILENCE_TIMER_TOUCH_COUNT,
DARK_MODE_DIALOG_SEEN,
GLOBAL_ACTIONS_PANEL_ENABLED,
AWARE_LOCK_ENABLED
@@ -9146,18 +9221,18 @@ public final class Settings {
VALIDATORS.put(DOZE_PICK_UP_GESTURE, DOZE_PICK_UP_GESTURE_VALIDATOR);
VALIDATORS.put(DOZE_DOUBLE_TAP_GESTURE, DOZE_DOUBLE_TAP_GESTURE_VALIDATOR);
VALIDATORS.put(DOZE_TAP_SCREEN_GESTURE, DOZE_TAP_SCREEN_GESTURE_VALIDATOR);
- VALIDATORS.put(DOZE_WAKE_SCREEN_GESTURE, DOZE_WAKE_SCREEN_GESTURE_VALIDATOR);
+ VALIDATORS.put(DOZE_WAKE_LOCK_SCREEN_GESTURE, DOZE_WAKE_LOCK_SCREEN_GESTURE_VALIDATOR);
+ VALIDATORS.put(DOZE_WAKE_DISPLAY_GESTURE, DOZE_WAKE_DISPLAY_GESTURE_VALIDATOR);
VALIDATORS.put(NFC_PAYMENT_DEFAULT_COMPONENT, NFC_PAYMENT_DEFAULT_COMPONENT_VALIDATOR);
VALIDATORS.put(AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN,
AUTOMATIC_STORAGE_MANAGER_DAYS_TO_RETAIN_VALIDATOR);
VALIDATORS.put(FACE_UNLOCK_KEYGUARD_ENABLED, FACE_UNLOCK_KEYGUARD_ENABLED_VALIDATOR);
VALIDATORS.put(FACE_UNLOCK_DISMISSES_KEYGUARD,
FACE_UNLOCK_DISMISSES_KEYGUARD_VALIDATOR);
+ VALIDATORS.put(SHOW_MEDIA_WHEN_BYPASSING, SHOW_MEDIA_WHEN_BYPASSING_VALIDATOR);
VALIDATORS.put(FACE_UNLOCK_APP_ENABLED, FACE_UNLOCK_APP_ENABLED_VALIDATOR);
VALIDATORS.put(FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION,
FACE_UNLOCK_ALWAYS_REQUIRE_CONFIRMATION_VALIDATOR);
- VALIDATORS.put(FACE_UNLOCK_EDUCATION_INFO_DISPLAYED,
- FACE_UNLOCK_EDUCATION_INFO_DISPLAYED_VALIDATOR);
VALIDATORS.put(ASSIST_GESTURE_ENABLED, ASSIST_GESTURE_ENABLED_VALIDATOR);
VALIDATORS.put(ASSIST_GESTURE_SILENCE_ALERTS_ENABLED,
ASSIST_GESTURE_SILENCE_ALERTS_ENABLED_VALIDATOR);
@@ -9206,16 +9281,21 @@ public final class Settings {
VALIDATORS.put(LOCK_SCREEN_CUSTOM_CLOCK_FACE, LOCK_SCREEN_CUSTOM_CLOCK_FACE_VALIDATOR);
VALIDATORS.put(LOCK_SCREEN_WHEN_TRUST_LOST, LOCK_SCREEN_WHEN_TRUST_LOST_VALIDATOR);
VALIDATORS.put(SKIP_GESTURE, SKIP_GESTURE_VALIDATOR);
+ VALIDATORS.put(SKIP_DIRECTION, SKIP_DIRECTION_VALIDATOR);
+ VALIDATORS.put(SKIP_DIRECTION, SKIP_DIRECTION_VALIDATOR);
VALIDATORS.put(SILENCE_GESTURE, SILENCE_GESTURE_VALIDATOR);
VALIDATORS.put(THEME_CUSTOMIZATION_OVERLAY_PACKAGES,
THEME_CUSTOMIZATION_OVERLAY_PACKAGES_VALIDATOR);
VALIDATORS.put(NAVIGATION_MODE, NAVIGATION_MODE_VALIDATOR);
VALIDATORS.put(AWARE_ENABLED, AWARE_ENABLED_VALIDATOR);
VALIDATORS.put(SKIP_GESTURE_COUNT, SKIP_GESTURE_COUNT_VALIDATOR);
+ VALIDATORS.put(SKIP_TOUCH_COUNT, SKIP_GESTURE_COUNT_VALIDATOR);
VALIDATORS.put(SILENCE_ALARMS_GESTURE_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
VALIDATORS.put(SILENCE_TIMER_GESTURE_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
VALIDATORS.put(SILENCE_CALL_GESTURE_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
- VALIDATORS.put(SILENCE_NOTIFICATION_GESTURE_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
+ VALIDATORS.put(SILENCE_ALARMS_TOUCH_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
+ VALIDATORS.put(SILENCE_TIMER_TOUCH_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
+ VALIDATORS.put(SILENCE_CALL_TOUCH_COUNT, SILENCE_GESTURE_COUNT_VALIDATOR);
VALIDATORS.put(ODI_CAPTIONS_ENABLED, ODI_CAPTIONS_ENABLED_VALIDATOR);
VALIDATORS.put(DARK_MODE_DIALOG_SEEN, BOOLEAN_VALIDATOR);
VALIDATORS.put(UI_NIGHT_MODE, UI_NIGHT_MODE_VALIDATOR);
@@ -9347,6 +9427,16 @@ public final class Settings {
*/
public static final Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY + "/global");
+ /**
+ * Whether the notification bubbles are globally enabled
+ * The value is boolean (1 or 0).
+ * @hide
+ */
+ @TestApi
+ public static final String NOTIFICATION_BUBBLES = "notification_bubbles";
+
+ private static final Validator NOTIFICATION_BUBBLES_VALIDATOR = BOOLEAN_VALIDATOR;
+
/**
* Whether users are allowed to add more users or guest from lockscreen.
*
@@ -13586,6 +13676,16 @@ public final class Settings {
public static final String LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED =
"location_settings_link_to_permissions_enabled";
+ /**
+ * Flag to set the waiting time for removing invisible euicc profiles inside System >
+ * Settings.
+ * Type: long
+ *
+ * @hide
+ */
+ public static final String EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS =
+ "euicc_removing_invisible_profiles_timeout_millis";
+
/**
* Flag to set the waiting time for euicc factory reset inside System > Settings
* Type: long
@@ -13806,6 +13906,7 @@ public final class Settings {
ZEN_DURATION,
CHARGING_VIBRATION_ENABLED,
AWARE_ALLOWED,
+ NOTIFICATION_BUBBLES,
};
/**
@@ -13872,6 +13973,7 @@ public final class Settings {
VALIDATORS.put(AWARE_ALLOWED, AWARE_ALLOWED_VALIDATOR);
VALIDATORS.put(POWER_BUTTON_LONG_PRESS, POWER_BUTTON_LONG_PRESS_VALIDATOR);
VALIDATORS.put(POWER_BUTTON_VERY_LONG_PRESS, POWER_BUTTON_VERY_LONG_PRESS_VALIDATOR);
+ VALIDATORS.put(NOTIFICATION_BUBBLES, NOTIFICATION_BUBBLES_VALIDATOR);
}
/**
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index cb7d41bdf21a2187246a0441e14e941f92e52833..93bcdbffd1330eca0ab36c53da60c84defb1ee63 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -1639,7 +1639,7 @@ public class ZenModeConfig implements Parcelable {
@UnsupportedAppUsage
public String name; // required for automatic
@UnsupportedAppUsage
- public int zenMode;
+ public int zenMode; // ie: Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS
@UnsupportedAppUsage
public Uri conditionId; // required for automatic
public Condition condition; // optional
diff --git a/core/java/android/service/textclassifier/TextClassifierService.java b/core/java/android/service/textclassifier/TextClassifierService.java
index 30c4e900f83cc748196b7863085b332fb9a3e2ac..bb39be2b2cf0e1baa1c3f7b8f44951d9bfe5b9d9 100644
--- a/core/java/android/service/textclassifier/TextClassifierService.java
+++ b/core/java/android/service/textclassifier/TextClassifierService.java
@@ -51,7 +51,6 @@ import android.view.textclassifier.TextSelection;
import com.android.internal.util.Preconditions;
-import java.lang.ref.WeakReference;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@@ -431,23 +430,18 @@ public abstract class TextClassifierService extends Service {
* Forwards the callback result to a wrapped binder callback.
*/
private static final class ProxyCallback implements Callback {
- private WeakReference mTextClassifierCallback;
+ private ITextClassifierCallback mTextClassifierCallback;
private ProxyCallback(ITextClassifierCallback textClassifierCallback) {
- mTextClassifierCallback =
- new WeakReference<>(Preconditions.checkNotNull(textClassifierCallback));
+ mTextClassifierCallback = Preconditions.checkNotNull(textClassifierCallback);
}
@Override
public void onSuccess(T result) {
- ITextClassifierCallback callback = mTextClassifierCallback.get();
- if (callback == null) {
- return;
- }
try {
Bundle bundle = new Bundle(1);
bundle.putParcelable(KEY_RESULT, result);
- callback.onSuccess(bundle);
+ mTextClassifierCallback.onSuccess(bundle);
} catch (RemoteException e) {
Slog.d(LOG_TAG, "Error calling callback");
}
@@ -455,12 +449,8 @@ public abstract class TextClassifierService extends Service {
@Override
public void onFailure(CharSequence error) {
- ITextClassifierCallback callback = mTextClassifierCallback.get();
- if (callback == null) {
- return;
- }
try {
- callback.onFailure();
+ mTextClassifierCallback.onFailure();
} catch (RemoteException e) {
Slog.d(LOG_TAG, "Error calling callback");
}
diff --git a/core/java/android/speech/RecognitionService.java b/core/java/android/speech/RecognitionService.java
index 70dfef574ca5323d1018af05d11e035925222d73..fb13c1f5dde3bbd4da8f621008de22134584d42e 100644
--- a/core/java/android/speech/RecognitionService.java
+++ b/core/java/android/speech/RecognitionService.java
@@ -170,13 +170,23 @@ public abstract class RecognitionService extends Service {
* Checks whether the caller has sufficient permissions
*
* @param listener to send the error message to in case of error
+ * @param forDataDelivery If the permission check is for delivering the sensitive data.
* @return {@code true} if the caller has enough permissions, {@code false} otherwise
*/
- private boolean checkPermissions(IRecognitionListener listener) {
+ private boolean checkPermissions(IRecognitionListener listener, boolean forDataDelivery) {
if (DBG) Log.d(TAG, "checkPermissions");
- if (PermissionChecker.checkCallingOrSelfPermission(this,
- android.Manifest.permission.RECORD_AUDIO) == PermissionChecker.PERMISSION_GRANTED) {
- return true;
+ if (forDataDelivery) {
+ if (PermissionChecker.checkCallingOrSelfPermissionForDataDelivery(this,
+ android.Manifest.permission.RECORD_AUDIO)
+ == PermissionChecker.PERMISSION_GRANTED) {
+ return true;
+ }
+ } else {
+ if (PermissionChecker.checkCallingOrSelfPermissionForPreflight(this,
+ android.Manifest.permission.RECORD_AUDIO)
+ == PermissionChecker.PERMISSION_GRANTED) {
+ return true;
+ }
}
try {
Log.e(TAG, "call for recognition service without RECORD_AUDIO permissions");
@@ -342,7 +352,7 @@ public abstract class RecognitionService extends Service {
public void startListening(Intent recognizerIntent, IRecognitionListener listener) {
if (DBG) Log.d(TAG, "startListening called by:" + listener.asBinder());
final RecognitionService service = mServiceRef.get();
- if (service != null && service.checkPermissions(listener)) {
+ if (service != null && service.checkPermissions(listener, true /*forDataDelivery*/)) {
service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_START_LISTENING, service.new StartListeningArgs(
recognizerIntent, listener, Binder.getCallingUid())));
@@ -353,7 +363,7 @@ public abstract class RecognitionService extends Service {
public void stopListening(IRecognitionListener listener) {
if (DBG) Log.d(TAG, "stopListening called by:" + listener.asBinder());
final RecognitionService service = mServiceRef.get();
- if (service != null && service.checkPermissions(listener)) {
+ if (service != null && service.checkPermissions(listener, false /*forDataDelivery*/)) {
service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_STOP_LISTENING, listener));
}
@@ -363,7 +373,7 @@ public abstract class RecognitionService extends Service {
public void cancel(IRecognitionListener listener) {
if (DBG) Log.d(TAG, "cancel called by:" + listener.asBinder());
final RecognitionService service = mServiceRef.get();
- if (service != null && service.checkPermissions(listener)) {
+ if (service != null && service.checkPermissions(listener, false /*forDataDelivery*/)) {
service.mHandler.sendMessage(Message.obtain(service.mHandler,
MSG_CANCEL, listener));
}
diff --git a/core/java/android/text/TextLine.java b/core/java/android/text/TextLine.java
index 86651060a394686d3e1aa9d408adf8fc237f6e79..1c50d73c495334c0843fbeb367a3b5a3f2ad6c95 100644
--- a/core/java/android/text/TextLine.java
+++ b/core/java/android/text/TextLine.java
@@ -276,6 +276,7 @@ public class TextLine {
final int runCount = mDirections.getRunCount();
for (int runIndex = 0; runIndex < runCount; runIndex++) {
final int runStart = mDirections.getRunStart(runIndex);
+ if (runStart > mLen) break;
final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen);
final boolean runIsRtl = mDirections.isRunRtl(runIndex);
@@ -360,6 +361,7 @@ public class TextLine {
float h = 0;
for (int runIndex = 0; runIndex < mDirections.getRunCount(); runIndex++) {
final int runStart = mDirections.getRunStart(runIndex);
+ if (runStart > mLen) break;
final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen);
final boolean runIsRtl = mDirections.isRunRtl(runIndex);
@@ -417,6 +419,7 @@ public class TextLine {
float h = 0;
for (int runIndex = 0; runIndex < mDirections.getRunCount(); runIndex++) {
final int runStart = mDirections.getRunStart(runIndex);
+ if (runStart > mLen) break;
final int runLimit = Math.min(runStart + mDirections.getRunLength(runIndex), mLen);
final boolean runIsRtl = mDirections.isRunRtl(runIndex);
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 324e02ceb1d57e3a223a90bac9eec21adefc13a7..0e0c676c27825c65e8e4d8980f3625e276284730 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -57,6 +57,7 @@ public class FeatureFlagUtils {
DEFAULT_FLAGS.put(SCREENRECORD_LONG_PRESS, "false");
DEFAULT_FLAGS.put(PIXEL_WALLPAPER_CATEGORY_SWITCH, "false");
DEFAULT_FLAGS.put("settings_wifi_details_datausage_header", "false");
+ DEFAULT_FLAGS.put("settings_skip_direction_mutable", "true");
}
/**
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index bbd44c8b85af50849b1ee15edc7d144f9d62c94c..4b929683fd6dd158453910ae6cdfbdd8687e1d54 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -830,6 +830,32 @@ public final class AccessibilityInteractionController {
return false;
}
+ private void adjustBoundsInScreenIfNeeded(List infos) {
+ if (infos == null || shouldBypassAdjustBoundsInScreen()) {
+ return;
+ }
+ final int infoCount = infos.size();
+ for (int i = 0; i < infoCount; i++) {
+ final AccessibilityNodeInfo info = infos.get(i);
+ adjustBoundsInScreenIfNeeded(info);
+ }
+ }
+
+ private void adjustBoundsInScreenIfNeeded(AccessibilityNodeInfo info) {
+ if (info == null || shouldBypassAdjustBoundsInScreen()) {
+ return;
+ }
+ final Rect boundsInScreen = mTempRect;
+ info.getBoundsInScreen(boundsInScreen);
+ boundsInScreen.offset(mViewRootImpl.mAttachInfo.mLocationInParentDisplay.x,
+ mViewRootImpl.mAttachInfo.mLocationInParentDisplay.y);
+ info.setBoundsInScreen(boundsInScreen);
+ }
+
+ private boolean shouldBypassAdjustBoundsInScreen() {
+ return mViewRootImpl.mAttachInfo.mLocationInParentDisplay.equals(0, 0);
+ }
+
private void applyAppScaleAndMagnificationSpecIfNeeded(AccessibilityNodeInfo info,
MagnificationSpec spec) {
if (info == null) {
@@ -921,6 +947,7 @@ public final class AccessibilityInteractionController {
MagnificationSpec spec, Region interactiveRegion) {
try {
mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+ adjustBoundsInScreenIfNeeded(infos);
applyAppScaleAndMagnificationSpecIfNeeded(infos, spec);
adjustIsVisibleToUserIfNeeded(infos, interactiveRegion);
callback.setFindAccessibilityNodeInfosResult(infos, interactionId);
@@ -939,6 +966,7 @@ public final class AccessibilityInteractionController {
MagnificationSpec spec, Region interactiveRegion) {
try {
mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+ adjustBoundsInScreenIfNeeded(info);
applyAppScaleAndMagnificationSpecIfNeeded(info, spec);
adjustIsVisibleToUserIfNeeded(info, interactiveRegion);
callback.setFindAccessibilityNodeInfoResult(info, interactionId);
diff --git a/core/java/android/view/Choreographer.java b/core/java/android/view/Choreographer.java
index b7d52edaca83641be66501a17885ac351e16f7f1..5643068211f6948c6e7f96d659b10f333033e919 100644
--- a/core/java/android/view/Choreographer.java
+++ b/core/java/android/view/Choreographer.java
@@ -16,6 +16,7 @@
package android.view;
+import static android.view.DisplayEventReceiver.CONFIG_CHANGED_EVENT_SUPPRESS;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_APP;
import static android.view.DisplayEventReceiver.VSYNC_SOURCE_SURFACE_FLINGER;
@@ -973,7 +974,7 @@ public final class Choreographer {
private int mFrame;
public FrameDisplayEventReceiver(Looper looper, int vsyncSource) {
- super(looper, vsyncSource);
+ super(looper, vsyncSource, CONFIG_CHANGED_EVENT_SUPPRESS);
}
// TODO(b/116025192): physicalDisplayId is ignored because SF only emits VSYNC events for
diff --git a/core/java/android/view/DisplayEventReceiver.java b/core/java/android/view/DisplayEventReceiver.java
index 60daddd663d5dc1995ad916278ca5df7b7592e03..91acc4638c267d7adfaa0df55067f5011ef7ddb8 100644
--- a/core/java/android/view/DisplayEventReceiver.java
+++ b/core/java/android/view/DisplayEventReceiver.java
@@ -53,6 +53,20 @@ public abstract class DisplayEventReceiver {
*/
public static final int VSYNC_SOURCE_SURFACE_FLINGER = 1;
+ /**
+ * Specifies to suppress config changed events from being generated from Surface Flinger.
+ *
+ * Needs to be kept in sync with frameworks/native/include/gui/ISurfaceComposer.h
+ */
+ public static final int CONFIG_CHANGED_EVENT_SUPPRESS = 0;
+
+ /**
+ * Specifies to generate config changed events from Surface Flinger.
+ *
+ * Needs to be kept in sync with frameworks/native/include/gui/ISurfaceComposer.h
+ */
+ public static final int CONFIG_CHANGED_EVENT_DISPATCH = 1;
+
private static final String TAG = "DisplayEventReceiver";
private final CloseGuard mCloseGuard = CloseGuard.get();
@@ -65,7 +79,7 @@ public abstract class DisplayEventReceiver {
private MessageQueue mMessageQueue;
private static native long nativeInit(WeakReference receiver,
- MessageQueue messageQueue, int vsyncSource);
+ MessageQueue messageQueue, int vsyncSource, int configChanged);
private static native void nativeDispose(long receiverPtr);
@FastNative
private static native void nativeScheduleVsync(long receiverPtr);
@@ -77,7 +91,7 @@ public abstract class DisplayEventReceiver {
*/
@UnsupportedAppUsage
public DisplayEventReceiver(Looper looper) {
- this(looper, VSYNC_SOURCE_APP);
+ this(looper, VSYNC_SOURCE_APP, CONFIG_CHANGED_EVENT_SUPPRESS);
}
/**
@@ -85,15 +99,17 @@ public abstract class DisplayEventReceiver {
*
* @param looper The looper to use when invoking callbacks.
* @param vsyncSource The source of the vsync tick. Must be on of the VSYNC_SOURCE_* values.
+ * @param configChanged Whether to dispatch config changed events. Must be one of the
+ * CONFIG_CHANGED_EVENT_* values.
*/
- public DisplayEventReceiver(Looper looper, int vsyncSource) {
+ public DisplayEventReceiver(Looper looper, int vsyncSource, int configChanged) {
if (looper == null) {
throw new IllegalArgumentException("looper must not be null");
}
mMessageQueue = looper.getQueue();
mReceiverPtr = nativeInit(new WeakReference(this), mMessageQueue,
- vsyncSource);
+ vsyncSource, configChanged);
mCloseGuard.open("dispose");
}
diff --git a/core/java/android/view/DragAndDropPermissions.java b/core/java/android/view/DragAndDropPermissions.java
index e72ff38ce3f04510e3e267f2f64b6f9fad2f8e45..d47604d6ec417995183037fa9e5d562d8fd2cf6a 100644
--- a/core/java/android/view/DragAndDropPermissions.java
+++ b/core/java/android/view/DragAndDropPermissions.java
@@ -37,7 +37,7 @@ import com.android.internal.view.IDragAndDropPermissions;
* View.startDragAndDrop} by the app that started the drag operation.
*
*
- * The life cycle of the permissions is bound to the activity used to call {@link
+ * The lifecycle of the permissions is bound to the activity used to call {@link
* android.app.Activity#requestDragAndDropPermissions(DragEvent) requestDragAndDropPermissions}. The
* permissions are revoked when this activity is destroyed, or when {@link #release()} is called,
* whichever occurs first.
@@ -49,6 +49,10 @@ import com.android.internal.view.IDragAndDropPermissions;
* {@link Activity#onSaveInstanceState} bundle and later retrieved in order to manually release
* the permissions once they are no longer needed.
*
*/
public final class DragAndDropPermissions implements Parcelable {
diff --git a/core/java/android/view/GestureExclusionTracker.java b/core/java/android/view/GestureExclusionTracker.java
index 6fcdd714f8276572eab28be5d9040db7d7bec631..fffb323e6d500b24bc8de43efee65f2c2907018b 100644
--- a/core/java/android/view/GestureExclusionTracker.java
+++ b/core/java/android/view/GestureExclusionTracker.java
@@ -44,7 +44,7 @@ class GestureExclusionTracker {
while (i.hasNext()) {
final GestureExclusionViewInfo info = i.next();
final View v = info.getView();
- if (v == null || !v.isAttachedToWindow()) {
+ if (v == null || !v.isAttachedToWindow() || !v.isAggregatedVisible()) {
mGestureExclusionViewsChanged = true;
i.remove();
continue;
@@ -122,7 +122,8 @@ class GestureExclusionTracker {
public int update() {
final View excludedView = getView();
- if (excludedView == null || !excludedView.isAttachedToWindow()) return GONE;
+ if (excludedView == null || !excludedView.isAttachedToWindow()
+ || !excludedView.isAggregatedVisible()) return GONE;
final List localRects = excludedView.getSystemGestureExclusionRects();
final List newRects = new ArrayList<>(localRects.size());
for (Rect src : localRects) {
diff --git a/core/java/android/view/IRecentsAnimationController.aidl b/core/java/android/view/IRecentsAnimationController.aidl
index 956161acd7623e1391d9a711e06a2a74aaf26383..955be8d40c47b326d0b0477b206a29934ae76b5f 100644
--- a/core/java/android/view/IRecentsAnimationController.aidl
+++ b/core/java/android/view/IRecentsAnimationController.aidl
@@ -76,6 +76,21 @@ interface IRecentsAnimationController {
*/
void hideCurrentInputMethod();
+ /**
+ * This call is deprecated, use #setDeferCancelUntilNextTransition() instead
+ * TODO(138144750): Remove this method once there are no callers
+ * @deprecated
+ */
+ void setCancelWithDeferredScreenshot(boolean screenshot);
+
+ /**
+ * Clean up the screenshot of previous task which was created during recents animation that
+ * was cancelled by a stack order change.
+ *
+ * @see {@link IRecentsAnimationRunner#onAnimationCanceled}
+ */
+ void cleanupScreenshot();
+
/**
* Set a state for controller whether would like to cancel recents animations with deferred
* task screenshot presentation.
@@ -86,22 +101,23 @@ interface IRecentsAnimationController {
* screenshot, so that Launcher can still control the leash lifecycle & make the next app
* transition animate smoothly without flickering.
*
- * @param screenshot When set {@code true}, means recents animation will be canceled when the
- * next app launch. System will take previous task's screenshot when the next
- * app transition starting, and skip previous task's animation.
- * Set {@code false} means will not take screenshot & skip animation
- * for previous task.
+ * @param defer When set {@code true}, means that the recents animation will defer canceling the
+ * animation when a stack order change is triggered until the subsequent app
+ * transition start and skip previous task's animation.
+ * When set to {@code false}, means that the recents animation will be canceled
+ * immediately when the stack order changes.
+ * @param screenshot When set {@code true}, means that the system will take previous task's
+ * screenshot and replace the contents of the leash with it when the next app
+ * transition starting. The runner must call #cleanupScreenshot() to end the
+ * recents animation.
+ * When set to {@code false}, means that the system will simply wait for the
+ * next app transition start to immediately cancel the recents animation. This
+ * can be useful when you want an immediate transition into a state where the
+ * task is shown in the home/recents activity (without waiting for a
+ * screenshot).
*
* @see #cleanupScreenshot()
* @see IRecentsAnimationRunner#onCancelled
*/
- void setCancelWithDeferredScreenshot(boolean screenshot);
-
- /**
- * Clean up the screenshot of previous task which was created during recents animation that
- * was cancelled by a stack order change.
- *
- * @see {@link IRecentsAnimationRunner#onAnimationCanceled}
- */
- void cleanupScreenshot();
+ void setDeferCancelUntilNextTransition(boolean defer, boolean screenshot);
}
diff --git a/core/java/android/view/IRecentsAnimationRunner.aidl b/core/java/android/view/IRecentsAnimationRunner.aidl
index 9c652a8d990ba62362c13aefae635012e02a3368..6cda60c80b7df2ddd6a33ec62d47ff586f5310c1 100644
--- a/core/java/android/view/IRecentsAnimationRunner.aidl
+++ b/core/java/android/view/IRecentsAnimationRunner.aidl
@@ -36,7 +36,7 @@ oneway interface IRecentsAnimationRunner {
* @param deferredWithScreenshot If set to {@code true}, the contents of the task will be
* replaced with a screenshot, such that the runner's leash is
* still active. As soon as the runner doesn't need the leash
- * anymore, it can call
+ * anymore, it must call
* {@link IRecentsAnimationController#cleanupScreenshot).
*
* @see {@link RecentsAnimationController#cleanupScreenshot}
diff --git a/core/java/android/view/ISystemGestureExclusionListener.aidl b/core/java/android/view/ISystemGestureExclusionListener.aidl
index a032625547d20591b89c67a0343afaaf98022ebb..9c2f9a6a192cf7f94813a50f77196a92b6d83300 100644
--- a/core/java/android/view/ISystemGestureExclusionListener.aidl
+++ b/core/java/android/view/ISystemGestureExclusionListener.aidl
@@ -28,7 +28,14 @@ oneway interface ISystemGestureExclusionListener {
* Called when the system gesture exclusion for the given display changed.
* @param displayId the display whose system gesture exclusion changed
* @param systemGestureExclusion a {@code Region} where the app would like priority over the
- * system gestures, in display coordinates.
+ * system gestures, in display coordinates. Certain restrictions
+ * might be applied such that apps don't get all the exclusions
+ * they request.
+ * @param systemGestureExclusionUnrestricted a {@code Region} where the app would like priority
+ * over the system gestures, in display coordinates, without
+ * any restrictions applied. Null if no restrictions have been
+ * applied.
*/
- void onSystemGestureExclusionChanged(int displayId, in Region systemGestureExclusion);
+ void onSystemGestureExclusionChanged(int displayId, in Region systemGestureExclusion,
+ in Region systemGestureExclusionUnrestricted);
}
\ No newline at end of file
diff --git a/core/java/android/view/IWindow.aidl b/core/java/android/view/IWindow.aidl
index 699e795be9803b5e0b7e639c46853d05b2e25e51..f34f9e6d5ce89a1c218cccea46389997728596f5 100644
--- a/core/java/android/view/IWindow.aidl
+++ b/core/java/android/view/IWindow.aidl
@@ -17,6 +17,7 @@
package android.view;
+import android.graphics.Point;
import android.graphics.Rect;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;
@@ -56,6 +57,12 @@ oneway interface IWindow {
boolean forceLayout, boolean alwaysConsumeSystemBars, int displayId,
in DisplayCutout.ParcelableWrapper displayCutout);
+ /**
+ * Called when the window location in parent display has changed. The offset will only be a
+ * nonzero value if the window is on an embedded display that is re-parented to another window.
+ */
+ void locationInParentDisplayChanged(in Point offset);
+
/**
* Called when the window insets configuration has changed.
*/
diff --git a/core/java/android/view/RemoteAnimationAdapter.java b/core/java/android/view/RemoteAnimationAdapter.java
index bc2fe545a8acd9df6c6a256cfe051f49e92ae980..c686440171a260efe219d0c98fbc56cfca59cda4 100644
--- a/core/java/android/view/RemoteAnimationAdapter.java
+++ b/core/java/android/view/RemoteAnimationAdapter.java
@@ -55,6 +55,7 @@ public class RemoteAnimationAdapter implements Parcelable {
/** @see #getCallingPid */
private int mCallingPid;
+ private int mCallingUid;
/**
* @param runner The interface that gets notified when we actually need to start the animation.
@@ -103,10 +104,11 @@ public class RemoteAnimationAdapter implements Parcelable {
}
/**
- * To be called by system_server to keep track which pid is running this animation.
+ * To be called by system_server to keep track which pid and uid is running this animation.
*/
- public void setCallingPid(int pid) {
+ public void setCallingPidUid(int pid, int uid) {
mCallingPid = pid;
+ mCallingUid = uid;
}
/**
@@ -116,6 +118,13 @@ public class RemoteAnimationAdapter implements Parcelable {
return mCallingPid;
}
+ /**
+ * @return The uid of the process running the animation.
+ */
+ public int getCallingUid() {
+ return mCallingUid;
+ }
+
@Override
public int describeContents() {
return 0;
diff --git a/core/java/android/view/RemoteAnimationDefinition.java b/core/java/android/view/RemoteAnimationDefinition.java
index 884cae440bed092c1ca64fd64aab36fbf965d5ff..da599efb6eee2176e6aafc7348bc55aebe33016d 100644
--- a/core/java/android/view/RemoteAnimationDefinition.java
+++ b/core/java/android/view/RemoteAnimationDefinition.java
@@ -118,9 +118,9 @@ public class RemoteAnimationDefinition implements Parcelable {
* To be called by system_server to keep track which pid is running the remote animations inside
* this definition.
*/
- public void setCallingPid(int pid) {
+ public void setCallingPidUid(int pid, int uid) {
for (int i = mTransitionAnimationMap.size() - 1; i >= 0; i--) {
- mTransitionAnimationMap.valueAt(i).adapter.setCallingPid(pid);
+ mTransitionAnimationMap.valueAt(i).adapter.setCallingPidUid(pid, uid);
}
}
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index cb64ab1fd921d8d3f1c87117c6c460f1f6b58010..17f07b5a2ad4028bb78643fc98d5a93da1a7cb6b 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -21,6 +21,7 @@ import android.annotation.NonNull;
import android.annotation.UnsupportedAppUsage;
import android.content.res.CompatibilityInfo.Translator;
import android.graphics.Canvas;
+import android.graphics.ColorSpace;
import android.graphics.GraphicBuffer;
import android.graphics.Matrix;
import android.graphics.RecordingCanvas;
@@ -80,7 +81,8 @@ public class Surface implements Parcelable {
private static native long nativeGetNextFrameNumber(long nativeObject);
private static native int nativeSetScalingMode(long nativeObject, int scalingMode);
private static native int nativeForceScopedDisconnect(long nativeObject);
- private static native int nativeAttachAndQueueBuffer(long nativeObject, GraphicBuffer buffer);
+ private static native int nativeAttachAndQueueBufferWithColorSpace(long nativeObject,
+ GraphicBuffer buffer, int colorSpaceId);
private static native int nativeSetSharedBufferModeEnabled(long nativeObject, boolean enabled);
private static native int nativeSetAutoRefreshEnabled(long nativeObject, boolean enabled);
@@ -699,20 +701,37 @@ public class Surface implements Parcelable {
}
/**
- * Transfer ownership of buffer and present it on the Surface.
+ * Transfer ownership of buffer with a color space and present it on the Surface.
+ * The supported color spaces are SRGB and Display P3, other color spaces will be
+ * treated as SRGB.
* @hide
*/
- public void attachAndQueueBuffer(GraphicBuffer buffer) {
+ public void attachAndQueueBufferWithColorSpace(GraphicBuffer buffer, ColorSpace colorSpace) {
synchronized (mLock) {
checkNotReleasedLocked();
- int err = nativeAttachAndQueueBuffer(mNativeObject, buffer);
+ if (colorSpace == null) {
+ colorSpace = ColorSpace.get(ColorSpace.Named.SRGB);
+ }
+ int err = nativeAttachAndQueueBufferWithColorSpace(mNativeObject, buffer,
+ colorSpace.getId());
if (err != 0) {
throw new RuntimeException(
- "Failed to attach and queue buffer to Surface (bad object?)");
+ "Failed to attach and queue buffer to Surface (bad object?), "
+ + "native error: " + err);
}
}
}
+ /**
+ * Deprecated, use attachAndQueueBufferWithColorSpace instead.
+ * Transfer ownership of buffer and present it on the Surface.
+ * The color space of the buffer is treated as SRGB.
+ * @hide
+ */
+ public void attachAndQueueBuffer(GraphicBuffer buffer) {
+ attachAndQueueBufferWithColorSpace(buffer, ColorSpace.get(ColorSpace.Named.SRGB));
+ }
+
/**
* Returns whether or not this Surface is backed by a single-buffered SurfaceTexture
* @hide
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index ed6f9b2ccfb098595e2feac345d0a2edc1ef840a..fe10de13082b7fd498e57a7586d657cdf71cf4ec 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -84,7 +84,6 @@ public final class SurfaceControl implements Parcelable {
private static native long nativeCopyFromSurfaceControl(long nativeObject);
private static native void nativeWriteToParcel(long nativeObject, Parcel out);
private static native void nativeRelease(long nativeObject);
- private static native void nativeDestroy(long nativeObject);
private static native void nativeDisconnect(long nativeObject);
private static native ScreenshotGraphicBuffer nativeScreenshot(IBinder displayToken,
@@ -932,19 +931,6 @@ public final class SurfaceControl implements Parcelable {
mCloseGuard.close();
}
- /**
- * Release the local resources like {@link #release} but also
- * remove the Surface from the screen.
- * @hide
- */
- public void remove() {
- if (mNativeObject != 0) {
- nativeDestroy(mNativeObject);
- mNativeObject = 0;
- }
- mCloseGuard.close();
- }
-
/**
* Disconnect any client still connected to the surface.
* @hide
@@ -1869,7 +1855,8 @@ public final class SurfaceControl implements Parcelable {
final ScreenshotGraphicBuffer buffer = screenshotToBuffer(display, sourceCrop, width,
height, useIdentityTransform, rotation);
try {
- consumer.attachAndQueueBuffer(buffer.getGraphicBuffer());
+ consumer.attachAndQueueBufferWithColorSpace(buffer.getGraphicBuffer(),
+ buffer.getColorSpace());
} catch (RuntimeException e) {
Log.w(TAG, "Failed to take screenshot - " + e.getMessage());
}
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 254d04e8715deaf8ef14dce5b144803facff5e88..d11548d687b1532fad8702f74de90257d2bb2a20 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -23,7 +23,6 @@ import static android.view.WindowManagerPolicyConstants.APPLICATION_PANEL_SUBLAY
import android.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.res.CompatibilityInfo.Translator;
-import android.content.res.Configuration;
import android.graphics.BlendMode;
import android.graphics.Canvas;
import android.graphics.Color;
@@ -100,10 +99,10 @@ import java.util.concurrent.locks.ReentrantLock;
public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallback {
private static final String TAG = "SurfaceView";
private static final boolean DEBUG = false;
+ private static final boolean DEBUG_POSITION = false;
@UnsupportedAppUsage
- final ArrayList mCallbacks
- = new ArrayList();
+ final ArrayList mCallbacks = new ArrayList<>();
final int[] mLocation = new int[2];
@@ -126,8 +125,8 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
// we need to preserve the old one until the new one has drawn.
SurfaceControl mDeferredDestroySurfaceControl;
SurfaceControl mBackgroundControl;
+ final Object mSurfaceControlLock = new Object();
final Rect mTmpRect = new Rect();
- final Configuration mConfiguration = new Configuration();
Paint mRoundedViewportPaint;
@@ -137,25 +136,16 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
boolean mIsCreating = false;
private volatile boolean mRtHandlingPositionUpdates = false;
- private final ViewTreeObserver.OnScrollChangedListener mScrollChangedListener
- = new ViewTreeObserver.OnScrollChangedListener() {
- @Override
- public void onScrollChanged() {
- updateSurface();
- }
- };
+ private final ViewTreeObserver.OnScrollChangedListener mScrollChangedListener =
+ this::updateSurface;
@UnsupportedAppUsage
- private final ViewTreeObserver.OnPreDrawListener mDrawListener =
- new ViewTreeObserver.OnPreDrawListener() {
- @Override
- public boolean onPreDraw() {
- // reposition ourselves where the surface is
- mHaveFrame = getWidth() > 0 && getHeight() > 0;
- updateSurface();
- return true;
- }
- };
+ private final ViewTreeObserver.OnPreDrawListener mDrawListener = () -> {
+ // reposition ourselves where the surface is
+ mHaveFrame = getWidth() > 0 && getHeight() > 0;
+ updateSurface();
+ return true;
+ };
boolean mRequestedVisible = false;
boolean mWindowVisibility = false;
@@ -173,6 +163,9 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
@UnsupportedAppUsage
int mRequestedFormat = PixelFormat.RGB_565;
+ boolean mUseAlpha = false;
+ float mSurfaceAlpha = 1f;
+
@UnsupportedAppUsage
boolean mHaveFrame = false;
boolean mSurfaceCreated = false;
@@ -190,7 +183,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
final Rect mSurfaceFrame = new Rect();
int mLastSurfaceWidth = -1, mLastSurfaceHeight = -1;
- private Translator mTranslator;
private boolean mGlobalListenersAdded;
private boolean mAttachedToWindow;
@@ -200,6 +192,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
private int mPendingReportDraws;
private SurfaceControl.Transaction mRtTransaction = new SurfaceControl.Transaction();
+ private SurfaceControl.Transaction mTmpTransaction = new SurfaceControl.Transaction();
public SurfaceView(Context context) {
this(context, null);
@@ -288,6 +281,152 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
updateSurface();
}
+ /**
+ * Make alpha value of this view reflect onto the surface. This can only be called from at most
+ * one SurfaceView within a view tree.
+ *
+ *
Note: Alpha value of the view is ignored and the underlying
+ * surface is rendered opaque by default.
+ *
+ * @hide
+ */
+ public void setUseAlpha() {
+ if (!mUseAlpha) {
+ mUseAlpha = true;
+ updateSurfaceAlpha();
+ }
+ }
+
+ @Override
+ public void setAlpha(float alpha) {
+ // Sets the opacity of the view to a value, where 0 means the view is completely transparent
+ // and 1 means the view is completely opaque.
+ //
+ // Note: Alpha value of this view is ignored by default. To enable alpha blending, you need
+ // to call setUseAlpha() as well.
+ // This view doesn't support translucent opacity if the view is located z-below, since the
+ // logic to punch a hole in the view hierarchy cannot handle such case. See also
+ // #clearSurfaceViewPort(Canvas)
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " setAlpha: mUseAlpha = " + mUseAlpha + " alpha=" + alpha);
+ }
+ super.setAlpha(alpha);
+ updateSurfaceAlpha();
+ }
+
+ private float getFixedAlpha() {
+ // Compute alpha value to be set on the underlying surface.
+ final float alpha = getAlpha();
+ return mUseAlpha && (mSubLayer > 0 || alpha == 0f) ? alpha : 1f;
+ }
+
+ private void updateSurfaceAlpha() {
+ if (!mUseAlpha) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha: setUseAlpha() is not called, ignored.");
+ }
+ return;
+ }
+ final float viewAlpha = getAlpha();
+ if (mSubLayer < 0 && 0f < viewAlpha && viewAlpha < 1f) {
+ Log.w(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha:"
+ + " translucent color is not supported for a surface placed z-below.");
+ }
+ if (!mHaveFrame) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha: has no surface.");
+ }
+ return;
+ }
+ final ViewRootImpl viewRoot = getViewRootImpl();
+ if (viewRoot == null) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha: ViewRootImpl not available.");
+ }
+ return;
+ }
+ if (mSurfaceControl == null) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + "updateSurfaceAlpha:"
+ + " surface is not yet created, or already released.");
+ }
+ return;
+ }
+ final Surface parent = viewRoot.mSurface;
+ if (parent == null || !parent.isValid()) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha: ViewRootImpl has no valid surface");
+ }
+ return;
+ }
+ final float alpha = getFixedAlpha();
+ if (alpha != mSurfaceAlpha) {
+ if (isHardwareAccelerated()) {
+ /*
+ * Schedule a callback that reflects an alpha value onto the underlying surfaces.
+ * This gets called on a RenderThread worker thread, so members accessed here must
+ * be protected by a lock.
+ */
+ viewRoot.registerRtFrameCallback(frame -> {
+ try {
+ final SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+ synchronized (mSurfaceControlLock) {
+ if (!parent.isValid()) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha RT:"
+ + " ViewRootImpl has no valid surface");
+ }
+ return;
+ }
+ if (mSurfaceControl == null) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + "updateSurfaceAlpha RT:"
+ + " mSurfaceControl has already released");
+ }
+ return;
+ }
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha RT: set alpha=" + alpha);
+ }
+ t.setAlpha(mSurfaceControl, alpha);
+ t.deferTransactionUntilSurface(mSurfaceControl, parent, frame);
+ }
+ // It's possible that mSurfaceControl is released in the UI thread before
+ // the transaction completes. If that happens, an exception is thrown, which
+ // must be caught immediately.
+ t.apply();
+ } catch (Exception e) {
+ Log.e(TAG, System.identityHashCode(this)
+ + "updateSurfaceAlpha RT: Exception during surface transaction", e);
+ }
+ });
+ damageInParent();
+ } else {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurfaceAlpha: set alpha=" + alpha);
+ }
+ SurfaceControl.openTransaction();
+ try {
+ mSurfaceControl.setAlpha(alpha);
+ } finally {
+ SurfaceControl.closeTransaction();
+ }
+ }
+ mSurfaceAlpha = alpha;
+ }
+ }
+
private void performDrawFinished() {
if (mPendingReportDraws > 0) {
mDrawFinished = true;
@@ -337,11 +476,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mRequestedVisible = false;
updateSurface();
- if (mSurfaceControl != null) {
- mSurfaceControl.remove();
- }
- mSurfaceControl = null;
-
+ releaseSurfaces();
mHaveFrame = false;
super.onDetachedFromWindow();
@@ -510,15 +645,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
}
}
- private Rect getParentSurfaceInsets() {
- final ViewRootImpl root = getViewRootImpl();
- if (root == null) {
- return null;
- } else {
- return root.mWindowAttributes.surfaceInsets;
- }
- }
-
private void updateBackgroundVisibilityInTransaction(SurfaceControl viewRoot) {
if (mBackgroundControl == null) {
return;
@@ -532,29 +658,40 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
}
private void releaseSurfaces() {
- if (mSurfaceControl != null) {
- mSurfaceControl.remove();
- mSurfaceControl = null;
- }
- if (mBackgroundControl != null) {
- mBackgroundControl.remove();
- mBackgroundControl = null;
+ synchronized (mSurfaceControlLock) {
+ if (mSurfaceControl != null) {
+ mTmpTransaction.remove(mSurfaceControl);
+ mSurfaceControl = null;
+ }
+ if (mBackgroundControl != null) {
+ mTmpTransaction.remove(mBackgroundControl);
+ mBackgroundControl = null;
+ }
+ mTmpTransaction.apply();
}
+ mSurfaceAlpha = 1f;
}
/** @hide */
protected void updateSurface() {
if (!mHaveFrame) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this) + " updateSurface: has no frame");
+ }
return;
}
ViewRootImpl viewRoot = getViewRootImpl();
if (viewRoot == null || viewRoot.mSurface == null || !viewRoot.mSurface.isValid()) {
+ if (DEBUG) {
+ Log.d(TAG, System.identityHashCode(this)
+ + " updateSurface: no valid surface");
+ }
return;
}
- mTranslator = viewRoot.mTranslator;
- if (mTranslator != null) {
- mSurface.setCompatibilityTranslator(mTranslator);
+ final Translator translator = viewRoot.mTranslator;
+ if (translator != null) {
+ mSurface.setCompatibilityTranslator(translator);
}
int myWidth = mRequestedWidth;
@@ -562,20 +699,25 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
int myHeight = mRequestedHeight;
if (myHeight <= 0) myHeight = getHeight();
+ final float alpha = getFixedAlpha();
final boolean formatChanged = mFormat != mRequestedFormat;
final boolean visibleChanged = mVisible != mRequestedVisible;
+ final boolean alphaChanged = mSurfaceAlpha != alpha;
final boolean creating = (mSurfaceControl == null || formatChanged || visibleChanged)
&& mRequestedVisible;
final boolean sizeChanged = mSurfaceWidth != myWidth || mSurfaceHeight != myHeight;
final boolean windowVisibleChanged = mWindowVisibility != mLastWindowVisibility;
boolean redrawNeeded = false;
- if (creating || formatChanged || sizeChanged || visibleChanged || windowVisibleChanged) {
+ if (creating || formatChanged || sizeChanged || visibleChanged || (mUseAlpha
+ && alphaChanged) || windowVisibleChanged) {
getLocationInWindow(mLocation);
if (DEBUG) Log.i(TAG, System.identityHashCode(this) + " "
+ "Changes: creating=" + creating
+ " format=" + formatChanged + " size=" + sizeChanged
+ + " visible=" + visibleChanged + " alpha=" + alphaChanged
+ + " mUseAlpha=" + mUseAlpha
+ " visible=" + visibleChanged
+ " left=" + (mWindowSpaceLeft != mLocation[0])
+ " top=" + (mWindowSpaceTop != mLocation[1]));
@@ -593,11 +735,11 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mScreenRect.top = mWindowSpaceTop;
mScreenRect.right = mWindowSpaceLeft + getWidth();
mScreenRect.bottom = mWindowSpaceTop + getHeight();
- if (mTranslator != null) {
- mTranslator.translateRectInAppWindowToScreen(mScreenRect);
+ if (translator != null) {
+ translator.translateRectInAppWindowToScreen(mScreenRect);
}
- final Rect surfaceInsets = getParentSurfaceInsets();
+ final Rect surfaceInsets = viewRoot.mWindowAttributes.surfaceInsets;
mScreenRect.offset(surfaceInsets.left, surfaceInsets.top);
if (creating) {
@@ -646,6 +788,10 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mSurfaceControl.hide();
}
updateBackgroundVisibilityInTransaction(viewRoot.getSurfaceControl());
+ if (mUseAlpha) {
+ mSurfaceControl.setAlpha(alpha);
+ mSurfaceAlpha = alpha;
+ }
// While creating the surface, we will set it's initial
// geometry. Outside of that though, we should generally
@@ -680,11 +826,11 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mSurfaceFrame.left = 0;
mSurfaceFrame.top = 0;
- if (mTranslator == null) {
+ if (translator == null) {
mSurfaceFrame.right = mSurfaceWidth;
mSurfaceFrame.bottom = mSurfaceHeight;
} else {
- float appInvertedScale = mTranslator.applicationInvertedScale;
+ float appInvertedScale = translator.applicationInvertedScale;
mSurfaceFrame.right = (int) (mSurfaceWidth * appInvertedScale + 0.5f);
mSurfaceFrame.bottom = (int) (mSurfaceHeight * appInvertedScale + 0.5f);
}
@@ -702,7 +848,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
try {
redrawNeeded |= visible && !mDrawFinished;
- SurfaceHolder.Callback callbacks[] = null;
+ SurfaceHolder.Callback[] callbacks = null;
final boolean surfaceChanged = creating;
if (mSurfaceCreated && (surfaceChanged || (!visible && visibleChanged))) {
@@ -788,7 +934,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mIsCreating = false;
if (mSurfaceControl != null && !mSurfaceCreated) {
mSurface.release();
-
releaseSurfaces();
}
}
@@ -818,8 +963,8 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
mScreenRect.set(mWindowSpaceLeft, mWindowSpaceTop,
mWindowSpaceLeft + mLocation[0], mWindowSpaceTop + mLocation[1]);
- if (mTranslator != null) {
- mTranslator.translateRectInAppWindowToScreen(mScreenRect);
+ if (translator != null) {
+ translator.translateRectInAppWindowToScreen(mScreenRect);
}
if (mSurfaceControl == null) {
@@ -828,10 +973,13 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
if (!isHardwareAccelerated() || !mRtHandlingPositionUpdates) {
try {
- if (DEBUG) Log.d(TAG, String.format("%d updateSurfacePosition UI, " +
- "postion = [%d, %d, %d, %d]", System.identityHashCode(this),
- mScreenRect.left, mScreenRect.top,
- mScreenRect.right, mScreenRect.bottom));
+ if (DEBUG_POSITION) {
+ Log.d(TAG, String.format("%d updateSurfacePosition UI, "
+ + "position = [%d, %d, %d, %d]",
+ System.identityHashCode(this),
+ mScreenRect.left, mScreenRect.top,
+ mScreenRect.right, mScreenRect.bottom));
+ }
setParentSpaceRectangle(mScreenRect, -1);
} catch (Exception ex) {
Log.e(TAG, "Exception configuring surface", ex);
@@ -848,13 +996,11 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
}
if (mDeferredDestroySurfaceControl != null) {
- mDeferredDestroySurfaceControl.remove();
+ mTmpTransaction.remove(mDeferredDestroySurfaceControl).apply();
mDeferredDestroySurfaceControl = null;
}
- runOnUiThread(() -> {
- performDrawFinished();
- });
+ runOnUiThread(this::performDrawFinished);
}
/**
@@ -884,7 +1030,6 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
if (mViewVisibility) {
mRtTransaction.show(surface);
}
-
}
private void setParentSpaceRectangle(Rect position, long frameNumber) {
@@ -925,10 +1070,10 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
return;
}
try {
- if (DEBUG) {
+ if (DEBUG_POSITION) {
Log.d(TAG, String.format(
"%d updateSurfacePosition RenderWorker, frameNr = %d, "
- + "postion = [%d, %d, %d, %d]",
+ + "position = [%d, %d, %d, %d]",
System.identityHashCode(this), frameNumber,
left, top, right, bottom));
}
@@ -964,7 +1109,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
};
private SurfaceHolder.Callback[] getSurfaceCallbacks() {
- SurfaceHolder.Callback callbacks[];
+ SurfaceHolder.Callback[] callbacks;
synchronized (mCallbacks) {
callbacks = new SurfaceHolder.Callback[mCallbacks.size()];
mCallbacks.toArray(callbacks);
@@ -1034,7 +1179,7 @@ public class SurfaceView extends View implements ViewRootImpl.WindowStoppedCallb
synchronized (mCallbacks) {
// This is a linear search, but in practice we'll
// have only a couple callbacks, so it doesn't matter.
- if (mCallbacks.contains(callback) == false) {
+ if (!mCallbacks.contains(callback)) {
mCallbacks.add(callback);
}
}
diff --git a/core/java/android/view/ThreadedRenderer.java b/core/java/android/view/ThreadedRenderer.java
index 3d3d5dc7db325a001ad8e7799d2c65bbafda4f30..f18aa81b95e5017025339d7662fba1f67fc2aca5 100644
--- a/core/java/android/view/ThreadedRenderer.java
+++ b/core/java/android/view/ThreadedRenderer.java
@@ -17,6 +17,7 @@
package android.view;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.HardwareRenderer;
@@ -35,6 +36,7 @@ import com.android.internal.R;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.ArrayList;
/**
* Threaded renderer that proxies the rendering to a render thread. Most calls
@@ -300,7 +302,8 @@ public final class ThreadedRenderer extends HardwareRenderer {
private boolean mEnabled;
private boolean mRequested = true;
- private FrameDrawingCallback mNextRtFrameCallback;
+ @Nullable
+ private ArrayList mNextRtFrameCallbacks;
ThreadedRenderer(Context context, boolean translucent, String name) {
super();
@@ -441,8 +444,11 @@ public final class ThreadedRenderer extends HardwareRenderer {
*
* @param callback The callback to register.
*/
- void registerRtFrameCallback(FrameDrawingCallback callback) {
- mNextRtFrameCallback = callback;
+ void registerRtFrameCallback(@NonNull FrameDrawingCallback callback) {
+ if (mNextRtFrameCallbacks == null) {
+ mNextRtFrameCallbacks = new ArrayList<>();
+ }
+ mNextRtFrameCallbacks.add(callback);
}
/**
@@ -583,10 +589,14 @@ public final class ThreadedRenderer extends HardwareRenderer {
// Consume and set the frame callback after we dispatch draw to the view above, but before
// onPostDraw below which may reset the callback for the next frame. This ensures that
// updates to the frame callback during scroll handling will also apply in this frame.
- final FrameDrawingCallback callback = mNextRtFrameCallback;
- mNextRtFrameCallback = null;
- if (callback != null) {
- setFrameCallback(callback);
+ if (mNextRtFrameCallbacks != null) {
+ final ArrayList frameCallbacks = mNextRtFrameCallbacks;
+ mNextRtFrameCallbacks = null;
+ setFrameCallback(frame -> {
+ for (int i = 0; i < frameCallbacks.size(); ++i) {
+ frameCallbacks.get(i).onFrameDraw(frame);
+ }
+ });
}
if (mRootNodeNeedsUpdate || !mRootNode.hasDisplayList()) {
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index ac2fa3b526928ab1a210e9e26f42d2d096a0d5a3..243f976d2e53f48dd2c302a03cc2bb9ecbd26ceb 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -1390,6 +1390,74 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
public static final int AUTOFILL_FLAG_INCLUDE_NOT_IMPORTANT_VIEWS = 0x1;
+ /** @hide */
+ @IntDef(prefix = { "IMPORTANT_FOR_CONTENT_CAPTURE_" }, value = {
+ IMPORTANT_FOR_CONTENT_CAPTURE_AUTO,
+ IMPORTANT_FOR_CONTENT_CAPTURE_YES,
+ IMPORTANT_FOR_CONTENT_CAPTURE_NO,
+ IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+ IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ContentCaptureImportance {}
+
+ /**
+ * Automatically determine whether a view is important for content capture.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_AUTO = 0x0;
+
+ /**
+ * The view is important for content capture, and its children (if any) will be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES = 0x1;
+
+ /**
+ * The view is not important for content capture, but its children (if any) will be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO = 0x2;
+
+ /**
+ * The view is important for content capture, but its children (if any) will not be traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS = 0x4;
+
+ /**
+ * The view is not important for content capture, and its children (if any) will not be
+ * traversed.
+ *
+ * @see #isImportantForContentCapture()
+ * @see #setImportantForContentCapture(int)
+ *
+ * @hide
+ */
+ @TestApi
+ public static final int IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS = 0x8;
+
+
/**
* This view is enabled. Interpretation varies by subclass.
* Use with ENABLED_MASK when calling setFlags.
@@ -3362,6 +3430,55 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
/* End of masks for mPrivateFlags3 */
+ /*
+ * Masks for mPrivateFlags4, as generated by dumpFlags():
+ *
+ * |-------|-------|-------|-------|
+ * 1111 PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK
+ * 1 PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED
+ * 1 PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED
+ * 1 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED
+ * 1 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE
+ * 11 PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK
+ * |-------|-------|-------|-------|
+ */
+
+ /**
+ * Mask for obtaining the bits which specify how to determine
+ * whether a view is important for autofill.
+ *
+ *
NOTE: the important for content capture values were the first flags added and are set in
+ * the rightmost position, so we don't need to shift them
+ */
+ private static final int PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK =
+ IMPORTANT_FOR_CONTENT_CAPTURE_AUTO | IMPORTANT_FOR_CONTENT_CAPTURE_YES
+ | IMPORTANT_FOR_CONTENT_CAPTURE_NO
+ | IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ | IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS;
+
+ /*
+ * Variables used to control when the IntelligenceManager.notifyNodeAdded()/removed() methods
+ * should be called.
+ *
+ * The idea is to call notifyAppeared() after the view is layout and visible, then call
+ * notifyDisappeared() when it's gone (without known when it was removed from the parent).
+ */
+ private static final int PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED = 0x10;
+ private static final int PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED = 0x20;
+
+ /*
+ * Flags used to cache the value returned by isImportantForContentCapture while the view
+ * hierarchy is being traversed.
+ */
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED = 0x40;
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE = 0x80;
+
+ private static final int PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK =
+ PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED
+ | PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+
+ /* End of masks for mPrivateFlags4 */
+
/** @hide */
protected static final int VIEW_STRUCTURE_FOR_ASSIST = 0;
/** @hide */
@@ -3985,6 +4102,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 129147060)
int mPrivateFlags3;
+ private int mPrivateFlags4;
+
/**
* This view's request for the visibility of the status bar.
* @hide
@@ -8442,6 +8561,65 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
onProvideStructure(structure, VIEW_STRUCTURE_FOR_AUTOFILL, flags);
}
+ /**
+ * Populates a {@link ViewStructure} for content capture.
+ *
+ *
This method is called after a view is that is eligible for content capture
+ * (for example, if it {@link #isImportantForAutofill()}, an intelligence service is enabled for
+ * the user, and the activity rendering the view is enabled for content capture) is laid out and
+ * is visible.
+ *
+ *
The populated structure is then passed to the service through
+ * {@link ContentCaptureSession#notifyViewAppeared(ViewStructure)}.
+ *
+ *
Note: views that manage a virtual structure under this view must populate just
+ * the node representing this view and return right away, then asynchronously report (not
+ * necessarily in the UI thread) when the children nodes appear, disappear or have their text
+ * changed by calling
+ * {@link ContentCaptureSession#notifyViewAppeared(ViewStructure)},
+ * {@link ContentCaptureSession#notifyViewDisappeared(AutofillId)}, and
+ * {@link ContentCaptureSession#notifyViewTextChanged(AutofillId, CharSequence)}
+ * respectively. The structure for the a child must be created using
+ * {@link ContentCaptureSession#newVirtualViewStructure(AutofillId, long)}, and the
+ * {@code autofillId} for a child can be obtained either through
+ * {@code childStructure.getAutofillId()} or
+ * {@link ContentCaptureSession#newAutofillId(AutofillId, long)}.
+ *
+ *
When the virtual view hierarchy represents a web page, you should also:
+ *
+ *
+ *
Call {@link ContentCaptureManager#getContentCaptureConditions()} to infer content
+ * capture events should be generate for that URL.
+ *
Create a new {@link ContentCaptureSession} child for every HTML element that
+ * renders a new URL (like an {@code IFRAME}) and use that session to notify events from
+ * that subtree.
+ *
+ *
+ *
Note: the following methods of the {@code structure} will be ignored:
+ *
+ *
+ * @hide
+ */
+ @TestApi
+ public void onProvideContentCaptureStructure(@NonNull ViewStructure structure, int flags) {
+ onProvideStructure(structure, VIEW_STRUCTURE_FOR_CONTENT_CAPTURE, flags);
+ }
+
/** @hide */
protected void onProvideStructure(@NonNull ViewStructure structure,
@ViewStructureType int viewFor, int flags) {
@@ -9079,6 +9257,280 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
return false;
}
+ /**
+ * Gets the mode for determining whether this view is important for content capture.
+ *
+ *
See {@link #setImportantForContentCapture(int)} and
+ * {@link #isImportantForContentCapture()} for more info about this mode.
+ *
+ * @return {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO} by default, or value passed to
+ * {@link #setImportantForContentCapture(int)}.
+ *
+ * @attr ref android.R.styleable#View_importantForContentCapture
+ *
+ * @hide
+ */
+ @ViewDebug.ExportedProperty(mapping = {
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, to = "auto"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_YES, to = "yes"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_NO, to = "no"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+ to = "yesExcludeDescendants"),
+ @ViewDebug.IntToString(from = IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS,
+ to = "noExcludeDescendants")})
+// @InspectableProperty(enumMapping = {
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_AUTO, name = "auto"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_YES, name = "yes"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_NO, name = "no"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS,
+// name = "yesExcludeDescendants"),
+// @EnumEntry(value = IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS,
+// name = "noExcludeDescendants"),
+// })
+ @TestApi
+ public @ContentCaptureImportance int getImportantForContentCapture() {
+ // NOTE: the important for content capture values were the first flags added and are set in
+ // the rightmost position, so we don't need to shift them
+ return mPrivateFlags4 & PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK;
+ }
+
+ /**
+ * Sets the mode for determining whether this view is considered important for content capture.
+ *
+ *
The platform determines the importance for autofill automatically but you
+ * can use this method to customize the behavior. Typically, a view that provides text should
+ * be marked as {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES}.
+ *
+ * @param mode {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO},
+ * {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES}, {@link #IMPORTANT_FOR_CONTENT_CAPTURE_NO},
+ * {@link #IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS},
+ * or {@link #IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS}.
+ *
+ * @attr ref android.R.styleable#View_importantForContentCapture
+ *
+ * @hide
+ */
+ @TestApi
+ public void setImportantForContentCapture(@ContentCaptureImportance int mode) {
+ // Reset first
+ mPrivateFlags4 &= ~PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK;
+ // Then set again
+ // NOTE: the important for content capture values were the first flags added and are set in
+ // the rightmost position, so we don't need to shift them
+ mPrivateFlags4 |= (mode & PFLAG4_IMPORTANT_FOR_CONTENT_CAPTURE_MASK);
+ }
+
+ /**
+ * Hints the Android System whether this view is considered important for content capture, based
+ * on the value explicitly set by {@link #setImportantForContentCapture(int)} and heuristics
+ * when it's {@link #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO}.
+ *
+ *
See {@link ContentCaptureManager} for more info about content capture.
+ *
+ * @return whether the view is considered important for content capture.
+ *
+ * @see #setImportantForContentCapture(int)
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_AUTO
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_YES
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_NO
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ * @see #IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ *
+ * @hide
+ */
+ @TestApi
+ public final boolean isImportantForContentCapture() {
+ boolean isImportant;
+ if ((mPrivateFlags4 & PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED) != 0) {
+ isImportant = (mPrivateFlags4 & PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE) != 0;
+ return isImportant;
+ }
+
+ isImportant = calculateIsImportantForContentCapture();
+
+ mPrivateFlags4 &= ~PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+ if (isImportant) {
+ mPrivateFlags4 |= PFLAG4_CONTENT_CAPTURE_IMPORTANCE_CACHED_VALUE;
+ }
+ mPrivateFlags4 |= PFLAG4_CONTENT_CAPTURE_IMPORTANCE_IS_CACHED;
+ return isImportant;
+ }
+
+ /**
+ * Calculates whether the flag is important for content capture so it can be used by
+ * {@link #isImportantForContentCapture()} while the tree is traversed.
+ */
+ private boolean calculateIsImportantForContentCapture() {
+ // Check parent mode to ensure we're important
+ ViewParent parent = mParent;
+ while (parent instanceof View) {
+ final int parentImportance = ((View) parent).getImportantForContentCapture();
+ if (parentImportance == IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ || parentImportance == IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "View (" + this + ") is not important for "
+ + "content capture because parent " + parent + "'s importance is "
+ + parentImportance);
+ }
+ return false;
+ }
+ parent = parent.getParent();
+ }
+
+ final int importance = getImportantForContentCapture();
+
+ // First, check the explicit states.
+ if (importance == IMPORTANT_FOR_CONTENT_CAPTURE_YES_EXCLUDE_DESCENDANTS
+ || importance == IMPORTANT_FOR_CONTENT_CAPTURE_YES) {
+ return true;
+ }
+ if (importance == IMPORTANT_FOR_CONTENT_CAPTURE_NO_EXCLUDE_DESCENDANTS
+ || importance == IMPORTANT_FOR_CONTENT_CAPTURE_NO) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.VERBOSE)) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "View (" + this + ") is not important for content "
+ + "capture because its importance is " + importance);
+ }
+ return false;
+ }
+
+ // Then use some heuristics to handle AUTO.
+ if (importance != IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "invalid content capture importance (" + importance
+ + " on view " + this);
+ return false;
+ }
+
+ // View group is important if at least one children also is
+ if (this instanceof ViewGroup) {
+ final ViewGroup group = (ViewGroup) this;
+ for (int i = 0; i < group.getChildCount(); i++) {
+ final View child = group.getChildAt(i);
+ if (child.isImportantForContentCapture()) {
+ return true;
+ }
+ }
+ }
+
+ // If the app developer explicitly set hints or autofill hintsfor it, it's important.
+ if (getAutofillHints() != null) {
+ return true;
+ }
+
+ // Otherwise, assume it's not important...
+ return false;
+ }
+
+ /**
+ * Helper used to notify the {@link ContentCaptureManager} when the view is removed or
+ * added, based on whether it's laid out and visible, and without knowing if the parent removed
+ * it from the view hierarchy.
+ *
+ *
This method is called from many places (visibility changed, view laid out, view attached
+ * or detached to/from window, etc...) and hence must contain the logic to call the manager, as
+ * described below:
+ *
+ *
+ *
It should only be called when content capture is enabled for the view.
+ *
It must call viewAppeared() before viewDisappeared()
+ *
viewAppearead() can only be called when the view is visible and laidout
+ *
It should not call the same event twice.
+ *
+ */
+ private void notifyAppearedOrDisappearedForContentCaptureIfNeeded(boolean appeared) {
+ AttachInfo ai = mAttachInfo;
+ // Skip it while the view is being laided out for the first time
+ if (ai != null && !ai.mReadyForContentCaptureUpdates) return;
+
+ if (Trace.isTagEnabled(Trace.TRACE_TAG_VIEW)) {
+ Trace.traceBegin(Trace.TRACE_TAG_VIEW,
+ "notifyContentCapture(" + appeared + ") for " + getClass().getSimpleName());
+ }
+ try {
+ notifyAppearedOrDisappearedForContentCaptureIfNeededNoTrace(appeared);
+ } finally {
+ Trace.traceEnd(Trace.TRACE_TAG_VIEW);
+ }
+ }
+
+ private void notifyAppearedOrDisappearedForContentCaptureIfNeededNoTrace(boolean appeared) {
+ AttachInfo ai = mAttachInfo;
+
+ // First check if context has client, so it saves a service lookup when it doesn't
+ if (mContext.getContentCaptureOptions() == null) return;
+
+ // Then check if it's enabled in the context...
+ final ContentCaptureManager ccm = ai != null ? ai.getContentCaptureManager(mContext)
+ : mContext.getSystemService(ContentCaptureManager.class);
+ if (ccm == null || !ccm.isContentCaptureEnabled()) return;
+
+ // ... and finally at the view level
+ // NOTE: isImportantForContentCapture() is more expensive than cm.isContentCaptureEnabled()
+ if (!isImportantForContentCapture()) return;
+
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session == null) return;
+
+ if (appeared) {
+ if (!isLaidOut() || getVisibility() != VISIBLE
+ || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0) {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "Ignoring 'appeared' on " + this + ": laid="
+ + isLaidOut() + ", visibleToUser=" + isVisibleToUser()
+ + ", visible=" + (getVisibility() == VISIBLE)
+ + ": alreadyNotifiedAppeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0)
+ + ", alreadyNotifiedDisappeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0));
+ }
+ return;
+ }
+ setNotifiedContentCaptureAppeared();
+
+ if (ai != null) {
+ ai.delayNotifyContentCaptureEvent(session, this, appeared);
+ } else {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "no AttachInfo on appeared for " + this);
+ }
+ }
+ } else {
+ if ((mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) == 0
+ || (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0) {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "Ignoring 'disappeared' on " + this + ": laid="
+ + isLaidOut() + ", visibleToUser=" + isVisibleToUser()
+ + ", visible=" + (getVisibility() == VISIBLE)
+ + ": alreadyNotifiedAppeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0)
+ + ", alreadyNotifiedDisappeared=" + ((mPrivateFlags4
+ & PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED) != 0));
+ }
+ return;
+ }
+ mPrivateFlags4 |= PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED;
+ mPrivateFlags4 &= ~PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED;
+
+ if (ai != null) {
+ ai.delayNotifyContentCaptureEvent(session, this, appeared);
+ } else {
+ if (DEBUG_CONTENT_CAPTURE) {
+ Log.v(CONTENT_CAPTURE_LOG_TAG, "no AttachInfo on disappeared for " + this);
+ }
+ }
+ }
+ }
+
+ private void setNotifiedContentCaptureAppeared() {
+ mPrivateFlags4 |= PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED;
+ mPrivateFlags4 &= ~PFLAG4_NOTIFIED_CONTENT_CAPTURE_DISAPPEARED;
+ }
+
+ /** @hide */
+ protected boolean getNotifiedContentCaptureAppeared() {
+ return (mPrivateFlags4 & PFLAG4_NOTIFIED_CONTENT_CAPTURE_APPEARED) != 0;
+ }
+
+
/**
* Sets the (optional) {@link ContentCaptureSession} associated with this view.
*
@@ -9331,6 +9783,68 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
}
+ /**
+ * Dispatches the initial content capture events for a view structure.
+ *
+ * @hide
+ */
+ public void dispatchInitialProvideContentCaptureStructure() {
+ AttachInfo ai = mAttachInfo;
+ if (ai == null) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): no AttachInfo for " + this);
+ return;
+ }
+ ContentCaptureManager ccm = ai.mContentCaptureManager;
+ if (ccm == null) {
+ Log.w(CONTENT_CAPTURE_LOG_TAG, "dispatchProvideContentCaptureStructure(): "
+ + "no ContentCaptureManager for " + this);
+ return;
+ }
+
+ // We must set it before checkign if the view itself is important, because it might
+ // initially not be (for example, if it's empty), although that might change later (for
+ // example, if important views are added)
+ ai.mReadyForContentCaptureUpdates = true;
+
+ if (!isImportantForContentCapture()) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.DEBUG)) {
+ Log.d(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): decorView is not important");
+ }
+ return;
+ }
+
+ ai.mContentCaptureManager = ccm;
+
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session == null) {
+ if (Log.isLoggable(CONTENT_CAPTURE_LOG_TAG, Log.DEBUG)) {
+ Log.d(CONTENT_CAPTURE_LOG_TAG,
+ "dispatchProvideContentCaptureStructure(): no session for " + this);
+ }
+ return;
+ }
+
+ session.internalNotifyViewTreeEvent(/* started= */ true);
+ try {
+ dispatchProvideContentCaptureStructure();
+ } finally {
+ session.internalNotifyViewTreeEvent(/* started= */ false);
+ }
+ }
+
+ /** @hide */
+ void dispatchProvideContentCaptureStructure() {
+ ContentCaptureSession session = getContentCaptureSession();
+ if (session != null) {
+ ViewStructure structure = session.newViewStructure(this);
+ onProvideContentCaptureStructure(structure, /* flags= */ 0);
+ setNotifiedContentCaptureAppeared();
+ session.notifyViewAppeared(structure);
+ }
+ }
+
/**
* @see #onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo)
*
@@ -10571,6 +11085,13 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*
*
Do not modify the provided list after this method is called.
*
+ *
Note: the system will put a limit of 200dp on the vertical extent of the
+ * exclusions it takes into account. The limit does not apply while the navigation
+ * bar is {@link #SYSTEM_UI_FLAG_IMMERSIVE_STICKY stickily} hidden, nor to the
+ * {@link android.inputmethodservice.InputMethodService input method} and
+ * {@link Intent#CATEGORY_HOME home activity}.
+ *
+ *
* @param rects A list of precision gesture regions that this view needs to function correctly
*/
public void setSystemGestureExclusionRects(@NonNull List rects) {
@@ -13281,6 +13802,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
public void dispatchStartTemporaryDetach() {
mPrivateFlags3 |= PFLAG3_TEMPORARY_DETACH;
notifyEnterOrExitForAutoFillIfNeeded(false);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(false);
onStartTemporaryDetach();
}
@@ -13307,6 +13829,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
notifyFocusChangeToInputMethodManager(true /* hasFocus */);
}
notifyEnterOrExitForAutoFillIfNeeded(true);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
/**
@@ -13821,6 +14344,14 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
}
+ /**
+ * @return true if this view and all ancestors are visible as of the last
+ * {@link #onVisibilityAggregated(boolean)} call.
+ */
+ boolean isAggregatedVisible() {
+ return (mPrivateFlags3 & PFLAG3_AGGREGATED_VISIBLE) != 0;
+ }
+
/**
* Internal dispatching method for {@link #onVisibilityAggregated}. Overridden by
* ViewGroup. Intended to only be called when {@link #isAttachedToWindow()},
@@ -13849,7 +14380,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
@CallSuper
public void onVisibilityAggregated(boolean isVisible) {
// Update our internal visibility tracking so we can detect changes
- boolean oldVisible = (mPrivateFlags3 & PFLAG3_AGGREGATED_VISIBLE) != 0;
+ boolean oldVisible = isAggregatedVisible();
mPrivateFlags3 = isVisible ? (mPrivateFlags3 | PFLAG3_AGGREGATED_VISIBLE)
: (mPrivateFlags3 & ~PFLAG3_AGGREGATED_VISIBLE);
if (isVisible && mAttachInfo != null) {
@@ -13899,6 +14430,11 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
: AccessibilityEvent.CONTENT_CHANGE_TYPE_PANE_DISAPPEARED);
}
}
+
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(isVisible);
+ if (!getSystemGestureExclusionRects().isEmpty() && isVisible != oldVisible) {
+ postUpdateSystemGestureExclusionRects();
+ }
}
/**
@@ -17597,6 +18133,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
// Reset content capture caches
+ mPrivateFlags4 &= ~PFLAG4_CONTENT_CAPTURE_IMPORTANCE_MASK;
mCachedContentCaptureSession = null;
if ((mPrivateFlags & (PFLAG_DRAWN | PFLAG_HAS_BOUNDS)) == (PFLAG_DRAWN | PFLAG_HAS_BOUNDS)
@@ -19606,6 +20143,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
needGlobalAttributesUpdate(false);
notifyEnterOrExitForAutoFillIfNeeded(true);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
@UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
@@ -19655,6 +20193,7 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
}
notifyEnterOrExitForAutoFillIfNeeded(false);
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(false);
}
/**
@@ -21989,6 +22528,8 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mPrivateFlags3 &= ~PFLAG3_NOTIFY_AUTOFILL_ENTER_ON_LAYOUT;
notifyEnterOrExitForAutoFillIfNeeded(true);
}
+
+ notifyAppearedOrDisappearedForContentCaptureIfNeeded(true);
}
private boolean hasParentWantsFocus() {
@@ -28053,6 +28594,12 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
boolean mHandlingPointerEvent;
+ /**
+ * The offset of this view's window when it's on an embedded display that is re-parented
+ * to another window.
+ */
+ final Point mLocationInParentDisplay = new Point();
+
/**
* Global to the view hierarchy used as a temporary for dealing with
* x/y points in the transparent region computations.
@@ -28199,6 +28746,23 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
*/
View mTooltipHost;
+ /**
+ * The initial structure has been reported so the view is ready to report updates.
+ */
+ boolean mReadyForContentCaptureUpdates;
+
+ /**
+ * Map(keyed by session) of content capture events that need to be notified after the view
+ * hierarchy is traversed: value is either the view itself for appearead events, or its
+ * autofill id for disappeared.
+ */
+ SparseArray> mContentCaptureEvents;
+
+ /**
+ * Cached reference to the {@link ContentCaptureManager}.
+ */
+ ContentCaptureManager mContentCaptureManager;
+
/**
* Creates a new set of attachment information with the specified
* events handler and thread.
@@ -28217,6 +28781,31 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
mRootCallbacks = effectPlayer;
mTreeObserver = new ViewTreeObserver(context);
}
+
+ private void delayNotifyContentCaptureEvent(@NonNull ContentCaptureSession session,
+ @NonNull View view, boolean appeared) {
+ if (mContentCaptureEvents == null) {
+ // Most of the time there will be just one session, so intial capacity is 1
+ mContentCaptureEvents = new SparseArray<>(1);
+ }
+ int sessionId = session.getId();
+ // TODO: life would be much easier if we provided a MultiMap implementation somwhere...
+ ArrayList
*
diff --git a/core/java/android/widget/ImageView.java b/core/java/android/widget/ImageView.java
index be5d2211c67008c9b34536c6c478453f9bcd18b4..d62b979a2ed347dc575cc2c32111f4f505ce9609 100644
--- a/core/java/android/widget/ImageView.java
+++ b/core/java/android/widget/ImageView.java
@@ -62,8 +62,9 @@ import java.io.IOException;
/**
* Displays image resources, for example {@link android.graphics.Bitmap}
* or {@link android.graphics.drawable.Drawable} resources.
- * ImageView is also commonly used to {@link #setImageTintMode(PorterDuff.Mode)
- * apply tints to an image} and handle {@link #setScaleType(ScaleType) image scaling}.
+ * ImageView is also commonly used to
+ * apply tints to an image and
+ * handle image scaling.
*
*
* The following XML snippet is a common example of using an ImageView to display an image resource:
@@ -76,7 +77,8 @@ import java.io.IOException;
* <ImageView
* android:layout_width="wrap_content"
* android:layout_height="wrap_content"
- * android:src="@mipmap/ic_launcher"
+ * android:src="@drawable/my_image"
+ * android:contentDescription="@string/my_image_description"
* />
* </LinearLayout>
*
diff --git a/core/java/android/widget/Magnifier.java b/core/java/android/widget/Magnifier.java
index ccafa640853d071bc1c8c9596c285ceec9bfd123..d3c69725b45b6e6d072c1921c66c6428f018a502 100644
--- a/core/java/android/widget/Magnifier.java
+++ b/core/java/android/widget/Magnifier.java
@@ -1035,7 +1035,7 @@ public final class Magnifier {
// Destroy the renderer. This will not proceed until pending frame callbacks complete.
mRenderer.destroy();
mSurface.destroy();
- mSurfaceControl.remove();
+ new SurfaceControl.Transaction().remove(mSurfaceControl).apply();
mSurfaceSession.kill();
mHandler.removeCallbacks(mMagnifierUpdater);
if (mBitmap != null) {
diff --git a/core/java/android/widget/RelativeLayout.java b/core/java/android/widget/RelativeLayout.java
index d985528c38fb116b8a810cc6bc354865f7e3ce3a..6b324a541c4276938cebd30c93c9edc6e7d978f8 100644
--- a/core/java/android/widget/RelativeLayout.java
+++ b/core/java/android/widget/RelativeLayout.java
@@ -1202,13 +1202,13 @@ public class RelativeLayout extends ViewGroup {
* determine where to position the view on the screen. If the view is not contained
* within a relative layout, these attributes are ignored.
*
- * See the
- * Relative Layout guide for example code demonstrating how to use relative layout’s
+ * See the Relative
+ * Layout guide for example code demonstrating how to use relative layout's
* layout parameters in a layout XML.
*
* To learn more about layout parameters and how they differ from typical view attributes,
- * see the
- * Layouts guide.
+ * see the Layouts
+ * guide.
*
*
* @attr ref android.R.styleable#RelativeLayout_Layout_layout_alignWithParentIfMissing
diff --git a/core/java/android/widget/ScrollView.java b/core/java/android/widget/ScrollView.java
index a3e89c85fcbc7f7ccf373083a6652b87f84ea3ad..51b0950a75440bc9e5e253c29798cb92683f175d 100644
--- a/core/java/android/widget/ScrollView.java
+++ b/core/java/android/widget/ScrollView.java
@@ -71,9 +71,9 @@ import java.util.List;
* instead of scroll view which offers greater user interface flexibility and
* support for the material design scrolling patterns.
*
- *
To learn more about material design patterns for handling scrolling, see
- *
- * Scrolling techniques.
+ *
Material Design offers guidelines on how the appearance of
+ * several UI components, including app bars and
+ * banners, should respond to gestures.
*
* @attr ref android.R.styleable#ScrollView_fillViewport
*/
diff --git a/core/java/android/widget/SelectionActionModeHelper.java b/core/java/android/widget/SelectionActionModeHelper.java
index 51ca8052409052bb1ff27991969b0325417a560d..d0f80936f477f295388cf94017fe69455705127c 100644
--- a/core/java/android/widget/SelectionActionModeHelper.java
+++ b/core/java/android/widget/SelectionActionModeHelper.java
@@ -999,6 +999,7 @@ public final class SelectionActionModeHelper {
}
private void onTimeOut() {
+ Log.d(LOG_TAG, "Timeout in TextClassificationAsyncTask");
if (getStatus() == Status.RUNNING) {
onPostExecute(mTimeOutResultSupplier.get());
}
diff --git a/core/java/android/widget/TabWidget.java b/core/java/android/widget/TabWidget.java
index 49a0f39b3bad23db0356c18b7c29ba233e71888e..4c67b080252ab5f238716dfa9bffebc2fd4aa09c 100644
--- a/core/java/android/widget/TabWidget.java
+++ b/core/java/android/widget/TabWidget.java
@@ -433,7 +433,7 @@ public class TabWidget extends LinearLayout implements OnFocusChangeListener {
* to the next tabbed view, in this example).
*
* To move both the focus AND the selected tab at once, please use
- * {@link #setCurrentTab}. Normally, the view logic takes care of
+ * {@link #focusCurrentTab}. Normally, the view logic takes care of
* adjusting the focus, so unless you're circumventing the UI,
* you'll probably just focus your interest here.
*
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 62598fce5947fada8935ce8b2858a30b59db3f28..0918c5fdefa88709327042cfa7922081faf881ec 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -162,6 +162,8 @@ import android.view.accessibility.AccessibilityNodeInfo;
import android.view.animation.AnimationUtils;
import android.view.autofill.AutofillManager;
import android.view.autofill.AutofillValue;
+import android.view.contentcapture.ContentCaptureManager;
+import android.view.contentcapture.ContentCaptureSession;
import android.view.inputmethod.BaseInputConnection;
import android.view.inputmethod.CompletionInfo;
import android.view.inputmethod.CorrectionInfo;
@@ -977,6 +979,9 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
if (getImportantForAutofill() == IMPORTANT_FOR_AUTOFILL_AUTO) {
setImportantForAutofill(IMPORTANT_FOR_AUTOFILL_YES);
}
+ if (getImportantForContentCapture() == IMPORTANT_FOR_CONTENT_CAPTURE_AUTO) {
+ setImportantForContentCapture(IMPORTANT_FOR_CONTENT_CAPTURE_YES);
+ }
setTextInternal("");
@@ -10558,7 +10563,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
/**
- * Notify managers (such as {@link AutofillManager}) that are interested in text changes.
+ * Notify managers (such as {@link AutofillManager} and {@link ContentCaptureManager}) that are
+ * interested on text changes.
*/
private void notifyListeningManagersAfterTextChanged() {
@@ -10574,6 +10580,22 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
afm.notifyValueChanged(TextView.this);
}
}
+
+ // TODO(b/121045053): should use a flag / boolean to keep status of SHOWN / HIDDEN instead
+ // of using isLaidout(), so it's not called in cases where it's laid out but a
+ // notifyAppeared was not sent.
+
+ // ContentCapture
+ if (isLaidOut() && isImportantForContentCapture() && getNotifiedContentCaptureAppeared()) {
+ final ContentCaptureManager cm = mContext.getSystemService(ContentCaptureManager.class);
+ if (cm != null && cm.isContentCaptureEnabled()) {
+ final ContentCaptureSession session = getContentCaptureSession();
+ if (session != null) {
+ // TODO(b/111276913): pass flags when edited by user / add CTS test
+ session.notifyViewTextChanged(getAutofillId(), getText());
+ }
+ }
+ }
}
private boolean isAutofillable() {
@@ -11417,7 +11439,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
final boolean isPassword = hasPasswordTransformationMethod()
|| isPasswordInputType(getInputType());
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
structure.setDataIsSensitive(!mTextSetFromXmlOrResourceId);
}
@@ -11433,8 +11456,12 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- if (!isPassword || viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (!isPassword || viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
if (mLayout == null) {
+ if (viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
+ Log.w(LOG_TAG, "onProvideContentCaptureStructure(): calling assumeLayout()");
+ }
assumeLayout();
}
Layout layout = mLayout;
@@ -11522,7 +11549,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
}
}
- if (viewFor == VIEW_STRUCTURE_FOR_ASSIST) {
+ if (viewFor == VIEW_STRUCTURE_FOR_ASSIST
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
// Extract style information that applies to the TextView as a whole.
int style = 0;
int typefaceStyle = getTypefaceStyle();
@@ -11550,7 +11578,8 @@ public class TextView extends View implements ViewTreeObserver.OnPreDrawListener
structure.setTextStyle(getTextSize(), getCurrentTextColor(),
AssistStructure.ViewNode.TEXT_COLOR_UNDEFINED /* bgColor */, style);
}
- if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL) {
+ if (viewFor == VIEW_STRUCTURE_FOR_AUTOFILL
+ || viewFor == VIEW_STRUCTURE_FOR_CONTENT_CAPTURE) {
structure.setMinTextEms(getMinEms());
structure.setMaxTextEms(getMaxEms());
int maxLength = -1;
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 00206fc38d1d40ceffa280ebbe2d4968a2fd772d..cae1f3831b4a3c50704e2b27f58fbf115b319a10 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -24,6 +24,7 @@ import android.animation.AnimatorSet;
import android.animation.ObjectAnimator;
import android.animation.ValueAnimator;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.app.Activity;
import android.app.ActivityManager;
@@ -120,6 +121,7 @@ import com.google.android.collect.Lists;
import java.io.IOException;
import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
import java.text.Collator;
import java.util.ArrayList;
import java.util.Arrays;
@@ -164,6 +166,8 @@ public class ChooserActivity extends ResolverActivity {
public static final String LAUNCH_LOCATON_DIRECT_SHARE = "direct_share";
private static final int APP_PREDICTION_SHARE_TARGET_QUERY_PACKAGE_LIMIT = 20;
public static final String APP_PREDICTION_INTENT_FILTER_KEY = "intent_filter";
+
+ private boolean mIsAppPredictorComponentAvailable;
private AppPredictor mAppPredictor;
private AppPredictor.Callback mAppPredictorCallback;
private Map mDirectShareAppTargetCache;
@@ -176,6 +180,20 @@ public class ChooserActivity extends ResolverActivity {
private static final boolean USE_SHORTCUT_MANAGER_FOR_DIRECT_TARGETS = true;
private static final boolean USE_CHOOSER_TARGET_SERVICE_FOR_DIRECT_TARGETS = true;
+ public static final int TARGET_TYPE_DEFAULT = 0;
+ public static final int TARGET_TYPE_CHOOSER_TARGET = 1;
+ public static final int TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER = 2;
+ public static final int TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE = 3;
+
+ @IntDef(flag = false, prefix = { "TARGET_TYPE_" }, value = {
+ TARGET_TYPE_DEFAULT,
+ TARGET_TYPE_CHOOSER_TARGET,
+ TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER,
+ TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ShareTargetType {}
+
/**
* The transition time between placeholders for direct share to a message
* indicating that non are available.
@@ -216,9 +234,9 @@ public class ChooserActivity extends ResolverActivity {
private int mCurrAvailableWidth = 0;
/** {@link ChooserActivity#getBaseScore} */
- private static final float CALLER_TARGET_SCORE_BOOST = 900.f;
+ public static final float CALLER_TARGET_SCORE_BOOST = 900.f;
/** {@link ChooserActivity#getBaseScore} */
- private static final float SHORTCUT_TARGET_SCORE_BOOST = 90.f;
+ public static final float SHORTCUT_TARGET_SCORE_BOOST = 90.f;
private static final String TARGET_DETAILS_FRAGMENT_TAG = "targetDetailsFragment";
// TODO: Update to handle landscape instead of using static value
private static final int MAX_RANKED_TARGETS = 4;
@@ -441,7 +459,7 @@ public class ChooserActivity extends ResolverActivity {
}
if (sri.resultTargets != null) {
mChooserListAdapter.addServiceResults(sri.originalTarget,
- sri.resultTargets, false);
+ sri.resultTargets, TARGET_TYPE_CHOOSER_TARGET);
}
unbindService(sri.connection);
sri.connection.destroy();
@@ -472,7 +490,7 @@ public class ChooserActivity extends ResolverActivity {
final ServiceResultInfo resultInfo = (ServiceResultInfo) msg.obj;
if (resultInfo.resultTargets != null) {
mChooserListAdapter.addServiceResults(resultInfo.originalTarget,
- resultInfo.resultTargets, true);
+ resultInfo.resultTargets, msg.arg1);
}
break;
@@ -491,6 +509,9 @@ public class ChooserActivity extends ResolverActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
final long intentReceivedTime = System.currentTimeMillis();
+ // This is the only place this value is being set. Effectively final.
+ mIsAppPredictorComponentAvailable = isAppPredictionServiceAvailable();
+
mIsSuccessfullySelected = false;
Intent intent = getIntent();
Parcelable targetParcelable = intent.getParcelableExtra(Intent.EXTRA_INTENT);
@@ -706,6 +727,38 @@ public class ChooserActivity extends ResolverActivity {
}
}
+ /**
+ * Returns true if app prediction service is defined and the component exists on device.
+ */
+ @VisibleForTesting
+ public boolean isAppPredictionServiceAvailable() {
+ if (getPackageManager().getAppPredictionServicePackageName() == null) {
+ // Default AppPredictionService is not defined.
+ return false;
+ }
+
+ final String appPredictionServiceName =
+ getString(R.string.config_defaultAppPredictionService);
+ if (appPredictionServiceName == null) {
+ return false;
+ }
+ final ComponentName appPredictionComponentName =
+ ComponentName.unflattenFromString(appPredictionServiceName);
+ if (appPredictionComponentName == null) {
+ return false;
+ }
+
+ // Check if the app prediction component actually exists on the device.
+ Intent intent = new Intent();
+ intent.setComponent(appPredictionComponentName);
+ if (getPackageManager().resolveService(intent, PackageManager.MATCH_ALL) == null) {
+ Log.e(TAG, "App prediction service is defined, but does not exist: "
+ + appPredictionServiceName);
+ return false;
+ }
+ return true;
+ }
+
/**
* Check if the profile currently used is a work profile.
* @return true if it is work profile, false if it is parent profile (or no work profile is
@@ -766,6 +819,11 @@ public class ChooserActivity extends ResolverActivity {
clipboardManager.setPrimaryClip(clipData);
Toast.makeText(getApplicationContext(), R.string.copied, Toast.LENGTH_SHORT).show();
+ // Log share completion via copy
+ LogMaker targetLogMaker = new LogMaker(
+ MetricsEvent.ACTION_ACTIVITY_CHOOSER_PICKED_SYSTEM_TARGET).setSubtype(1);
+ getMetricsLogger().write(targetLogMaker);
+
finish();
}
}
@@ -1178,7 +1236,7 @@ public class ChooserActivity extends ResolverActivity {
mChooserListAdapter = (ChooserListAdapter) adapter;
if (mCallerChooserTargets != null && mCallerChooserTargets.length > 0) {
mChooserListAdapter.addServiceResults(null, Lists.newArrayList(mCallerChooserTargets),
- false);
+ TARGET_TYPE_DEFAULT);
}
mChooserRowAdapter = new ChooserRowAdapter(mChooserListAdapter);
if (listView != null) {
@@ -1524,33 +1582,32 @@ public class ChooserActivity extends ResolverActivity {
}
}
+ // If |appTargets| is not null, results are from AppPredictionService and already sorted.
+ final int shortcutType = (appTargets == null ? TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER :
+ TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE);
+
// Match ShareShortcutInfos with DisplayResolveInfos to be able to use the old code path
// for direct share targets. After ShareSheet is refactored we should use the
// ShareShortcutInfos directly.
boolean resultMessageSent = false;
for (int i = 0; i < driList.size(); i++) {
- List chooserTargets = new ArrayList<>();
+ List matchingShortcuts = new ArrayList<>();
for (int j = 0; j < resultList.size(); j++) {
if (driList.get(i).getResolvedComponentName().equals(
resultList.get(j).getTargetComponent())) {
- ShortcutManager.ShareShortcutInfo shareShortcutInfo = resultList.get(j);
- // Incoming results are ordered but without a score. Create a score
- // based on the index in order to be sorted appropriately when joined
- // with legacy direct share api results.
- float score = Math.max(1.0f - (0.05f * j), 0.0f);
- ChooserTarget chooserTarget = convertToChooserTarget(shareShortcutInfo, score);
- chooserTargets.add(chooserTarget);
- if (mDirectShareAppTargetCache != null && appTargets != null) {
- mDirectShareAppTargetCache.put(chooserTarget, appTargets.get(j));
- }
+ matchingShortcuts.add(resultList.get(j));
}
}
- if (chooserTargets.isEmpty()) {
+ if (matchingShortcuts.isEmpty()) {
continue;
}
+ List chooserTargets = convertToChooserTarget(
+ matchingShortcuts, resultList, appTargets, shortcutType);
+
final Message msg = Message.obtain();
msg.what = ChooserHandler.SHORTCUT_MANAGER_SHARE_TARGET_RESULT;
msg.obj = new ServiceResultInfo(driList.get(i), chooserTargets, null);
+ msg.arg1 = shortcutType;
mChooserHandler.sendMessage(msg);
resultMessageSent = true;
}
@@ -1584,23 +1641,69 @@ public class ChooserActivity extends ResolverActivity {
return false;
}
- private ChooserTarget convertToChooserTarget(ShortcutManager.ShareShortcutInfo shareShortcut,
- float score) {
- ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo();
- Bundle extras = new Bundle();
- extras.putString(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId());
- return new ChooserTarget(
- // The name of this target.
- shortcutInfo.getShortLabel(),
- // Don't load the icon until it is selected to be shown
- null,
- // The ranking score for this target (0.0-1.0); the system will omit items with low
- // scores when there are too many Direct Share items.
- score,
- // The name of the component to be launched if this target is chosen.
- shareShortcut.getTargetComponent().clone(),
- // The extra values here will be merged into the Intent when this target is chosen.
- extras);
+ /**
+ * Converts a list of ShareShortcutInfos to ChooserTargets.
+ * @param matchingShortcuts List of shortcuts, all from the same package, that match the current
+ * share intent filter.
+ * @param allShortcuts List of all the shortcuts from all the packages on the device that are
+ * returned for the current sharing action.
+ * @param allAppTargets List of AppTargets. Null if the results are not from prediction service.
+ * @param shortcutType One of the values TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER or
+ * TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE
+ * @return A list of ChooserTargets sorted by score in descending order.
+ */
+ @VisibleForTesting
+ @NonNull
+ public List convertToChooserTarget(
+ @NonNull List matchingShortcuts,
+ @NonNull List allShortcuts,
+ @Nullable List allAppTargets, @ShareTargetType int shortcutType) {
+ // A set of distinct scores for the matched shortcuts. We use index of a rank in the sorted
+ // list instead of the actual rank value when converting a rank to a score.
+ List scoreList = new ArrayList<>();
+ if (shortcutType == TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER) {
+ for (int i = 0; i < matchingShortcuts.size(); i++) {
+ int shortcutRank = matchingShortcuts.get(i).getShortcutInfo().getRank();
+ if (!scoreList.contains(shortcutRank)) {
+ scoreList.add(shortcutRank);
+ }
+ }
+ Collections.sort(scoreList);
+ }
+
+ List chooserTargetList = new ArrayList<>(matchingShortcuts.size());
+ for (int i = 0; i < matchingShortcuts.size(); i++) {
+ ShortcutInfo shortcutInfo = matchingShortcuts.get(i).getShortcutInfo();
+ int indexInAllShortcuts = allShortcuts.indexOf(matchingShortcuts.get(i));
+
+ float score;
+ if (shortcutType == TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE) {
+ // Incoming results are ordered. Create a score based on index in the original list.
+ score = Math.max(1.0f - (0.01f * indexInAllShortcuts), 0.0f);
+ } else {
+ // Create a score based on the rank of the shortcut.
+ int rankIndex = scoreList.indexOf(shortcutInfo.getRank());
+ score = Math.max(1.0f - (0.01f * rankIndex), 0.0f);
+ }
+
+ Bundle extras = new Bundle();
+ extras.putString(Intent.EXTRA_SHORTCUT_ID, shortcutInfo.getId());
+ ChooserTarget chooserTarget = new ChooserTarget(shortcutInfo.getShortLabel(),
+ null, // Icon will be loaded later if this target is selected to be shown.
+ score, matchingShortcuts.get(i).getTargetComponent().clone(), extras);
+
+ chooserTargetList.add(chooserTarget);
+ if (mDirectShareAppTargetCache != null && allAppTargets != null) {
+ mDirectShareAppTargetCache.put(chooserTarget,
+ allAppTargets.get(indexInAllShortcuts));
+ }
+ }
+
+ // Sort ChooserTargets by score in descending order
+ Comparator byScore =
+ (ChooserTarget a, ChooserTarget b) -> -Float.compare(a.getScore(), b.getScore());
+ Collections.sort(chooserTargetList, byScore);
+ return chooserTargetList;
}
private String convertServiceName(String packageName, String serviceName) {
@@ -1635,10 +1738,6 @@ public class ChooserActivity extends ResolverActivity {
mServiceConnections.clear();
}
- public void onSetupVoiceInteraction() {
- // Do nothing. We'll send the voice stuff ourselves.
- }
-
private void logDirectShareTargetReceived(int logCategory) {
final long queryTime =
logCategory == MetricsEvent.ACTION_DIRECT_SHARE_TARGETS_LOADED_SHORTCUT_MANAGER
@@ -1693,8 +1792,10 @@ public class ChooserActivity extends ResolverActivity {
@Nullable
private AppPredictor getAppPredictor() {
- if (mAppPredictor == null
- && getPackageManager().getAppPredictionServicePackageName() != null) {
+ if (!mIsAppPredictorComponentAvailable) {
+ return null;
+ }
+ if (mAppPredictor == null) {
final IntentFilter filter = getTargetIntentFilter();
Bundle extras = new Bundle();
extras.putParcelable(APP_PREDICTION_INTENT_FILTER_KEY, filter);
@@ -2642,7 +2743,7 @@ public class ChooserActivity extends ResolverActivity {
* if score is too low.
*/
public void addServiceResults(DisplayResolveInfo origTarget, List targets,
- boolean isShortcutResult) {
+ @ShareTargetType int targetType) {
if (DEBUG) {
Log.d(TAG, "addServiceResults " + origTarget + ", " + targets.size()
+ " targets");
@@ -2652,9 +2753,12 @@ public class ChooserActivity extends ResolverActivity {
return;
}
- final float baseScore = getBaseScore(origTarget, isShortcutResult);
+ final float baseScore = getBaseScore(origTarget, targetType);
Collections.sort(targets, mBaseTargetComparator);
+ final boolean isShortcutResult =
+ (targetType == TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER
+ || targetType == TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE);
final int maxTargets = isShortcutResult ? mMaxShortcutTargetsPerApp
: MAX_CHOOSER_TARGETS_PER_APP;
float lastScore = 0;
@@ -2705,17 +2809,17 @@ public class ChooserActivity extends ResolverActivity {
*
Legacy direct share targets
*
*/
- private float getBaseScore(DisplayResolveInfo target, boolean isShortcutResult) {
+ public float getBaseScore(DisplayResolveInfo target, @ShareTargetType int targetType) {
if (target == null) {
return CALLER_TARGET_SCORE_BOOST;
}
- if (isShortcutResult && getAppPredictorForDirectShareIfEnabled() != null) {
+ if (targetType == TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE) {
return SHORTCUT_TARGET_SCORE_BOOST;
}
float score = super.getScore(target);
- if (isShortcutResult) {
+ if (targetType == TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER) {
return score * SHORTCUT_TARGET_SCORE_BOOST;
}
diff --git a/core/java/com/android/internal/app/IBatteryStats.aidl b/core/java/com/android/internal/app/IBatteryStats.aidl
index d60d5438b3a74af8c0974821056ebf1e2c4f983a..15b1d75e88d093c0b8fb56eee8ac99bae3f068d3 100644
--- a/core/java/com/android/internal/app/IBatteryStats.aidl
+++ b/core/java/com/android/internal/app/IBatteryStats.aidl
@@ -106,7 +106,7 @@ interface IBatteryStats {
void notePhoneOn();
void notePhoneOff();
void notePhoneSignalStrength(in SignalStrength signalStrength);
- void notePhoneDataConnectionState(int dataType, boolean hasData);
+ void notePhoneDataConnectionState(int dataType, boolean hasData, int serviceType);
void notePhoneState(int phoneState);
void noteWifiOn();
void noteWifiOff();
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 58ce03baa136e2cdf3d7c6274af2de2b2eb659c2..407a85f1bb0556c74f1d988037e73e8753063ebf 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -361,9 +361,6 @@ public class ResolverActivity extends Activity {
initSuspendedColorMatrix();
- if (isVoiceInteraction()) {
- onSetupVoiceInteraction();
- }
final Set categories = intent.getCategories();
MetricsLogger.action(this, mAdapter.hasFilteredItem()
? MetricsProto.MetricsEvent.ACTION_SHOW_APP_DISAMBIG_APP_FEATURED
@@ -442,24 +439,21 @@ public class ResolverActivity extends Activity {
mSuspendedMatrixColorFilter = new ColorMatrixColorFilter(matrix);
}
- /**
- * Perform any initialization needed for voice interaction.
- */
- public void onSetupVoiceInteraction() {
- // Do it right now. Subclasses may delay this and send it later.
- sendVoiceChoicesIfNeeded();
- }
-
public void sendVoiceChoicesIfNeeded() {
if (!isVoiceInteraction()) {
// Clearly not needed.
return;
}
-
final Option[] options = new Option[mAdapter.getCount()];
for (int i = 0, N = options.length; i < N; i++) {
- options[i] = optionForChooserTarget(mAdapter.getItem(i), i);
+ TargetInfo target = mAdapter.getItem(i);
+ if (target == null) {
+ // If this occurs, a new set of targets is being loaded. Let that complete,
+ // and have the next call to send voice choices proceed instead.
+ return;
+ }
+ options[i] = optionForChooserTarget(target, i);
}
mPickOptionRequest = new PickTargetOptionRequest(
@@ -1872,7 +1866,7 @@ public class ResolverActivity extends Activity {
}
}
-
+ sendVoiceChoicesIfNeeded();
postListReadyRunnable();
}
diff --git a/core/java/com/android/internal/colorextraction/ColorExtractor.java b/core/java/com/android/internal/colorextraction/ColorExtractor.java
index b27c11b524e501dcceea0d13ce3532dc48f16c7e..3003ce80cbc1b41d9ab4b5401d20e1383ca12270 100644
--- a/core/java/com/android/internal/colorextraction/ColorExtractor.java
+++ b/core/java/com/android/internal/colorextraction/ColorExtractor.java
@@ -73,13 +73,8 @@ public class ColorExtractor implements WallpaperManager.OnColorsChangedListener
}
mOnColorsChangedListeners = new ArrayList<>();
-
- if (wallpaperManager == null) {
- Log.w(TAG, "Can't listen to color changes!");
- } else {
- wallpaperManager.addOnColorsChangedListener(this, null /* handler */);
- initExtractColors(wallpaperManager, immediately);
- }
+ wallpaperManager.addOnColorsChangedListener(this, null /* handler */);
+ initExtractColors(wallpaperManager, immediately);
}
private void initExtractColors(WallpaperManager wallpaperManager, boolean immediately) {
diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
index 8dc47a40158069fe4c3a20409811b3f662d99985..40ee511b0727af238cee6bd9c52c38e2123a96f3 100644
--- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
+++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
@@ -106,7 +106,7 @@ public final class SystemUiDeviceConfigFlags {
*/
public static final String HASH_SALT_MAX_DAYS = "hash_salt_max_days";
- // Flags related to Assistant Handles
+ // Flags related to Assistant
/**
* (String) Which behavior mode for the Assistant Handles to use.
@@ -176,11 +176,48 @@ public final class SystemUiDeviceConfigFlags {
public static final String ASSIST_HANDLES_SUPPRESS_ON_APPS =
"assist_handles_suppress_on_apps";
+ /**
+ * Allow touch passthrough above assist area during a session.
+ */
+ public static final String ASSIST_TAP_PASSTHROUGH = "assist_tap_passthrough";
+
/**
* (bool) Whether to show handles when taught.
*/
public static final String ASSIST_HANDLES_SHOW_WHEN_TAUGHT = "assist_handles_show_when_taught";
+ /**
+ * (long) Duration per pixel, in milliseconds, of scrolling text at fast speed.
+ */
+ public static final String ASSIST_TRANSCRIPTION_DURATION_PER_PX_FAST =
+ "assist_transcription_duration_per_px_fast";
+
+ /**
+ * (long) Duration per pixel, in milliseconds, of scrolling text at regular speed.
+ */
+ public static final String ASSIST_TRANSCRIPTION_DURATION_PER_PX_REGULAR =
+ "assist_transcription_duration_per_px_regular";
+
+ /**
+ * (long) Duration, in milliseconds, over which text fades in.
+ */
+ public static final String ASSIST_TRANSCRIPTION_FADE_IN_DURATION =
+ "assist_transcription_fade_in_duration";
+
+ /**
+ * (long) Maximum total duration, in milliseconds, for a given transcription.
+ */
+ public static final String ASSIST_TRANSCRIPTION_MAX_DURATION =
+ "assist_transcription_max_duration";
+
+ /**
+ * (long) Minimum total duration, in milliseconds, for a given transcription.
+ */
+ public static final String ASSIST_TRANSCRIPTION_MIN_DURATION =
+ "assist_transcription_min_duration";
+
+ // Flags related to brightline falsing
+
/**
* (bool) Whether to use the new BrightLineFalsingManager.
*/
@@ -270,5 +307,6 @@ public final class SystemUiDeviceConfigFlags {
"brightline_falsing_zigzag_y_secondary_deviance";
- private SystemUiDeviceConfigFlags() { }
+ private SystemUiDeviceConfigFlags() {
+ }
}
diff --git a/core/java/com/android/internal/net/VpnInfo.java b/core/java/com/android/internal/net/VpnInfo.java
index b1a412871bd28dd699ff5fe5ac1628beb79fc8cf..e74af5eb50de0e6ec40b25dc1c59faf494774df8 100644
--- a/core/java/com/android/internal/net/VpnInfo.java
+++ b/core/java/com/android/internal/net/VpnInfo.java
@@ -19,6 +19,8 @@ package com.android.internal.net;
import android.os.Parcel;
import android.os.Parcelable;
+import java.util.Arrays;
+
/**
* A lightweight container used to carry information of the ongoing VPN.
* Internal use only..
@@ -28,14 +30,14 @@ import android.os.Parcelable;
public class VpnInfo implements Parcelable {
public int ownerUid;
public String vpnIface;
- public String primaryUnderlyingIface;
+ public String[] underlyingIfaces;
@Override
public String toString() {
return "VpnInfo{"
+ "ownerUid=" + ownerUid
+ ", vpnIface='" + vpnIface + '\''
- + ", primaryUnderlyingIface='" + primaryUnderlyingIface + '\''
+ + ", underlyingIfaces='" + Arrays.toString(underlyingIfaces) + '\''
+ '}';
}
@@ -48,7 +50,7 @@ public class VpnInfo implements Parcelable {
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(ownerUid);
dest.writeString(vpnIface);
- dest.writeString(primaryUnderlyingIface);
+ dest.writeStringArray(underlyingIfaces);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
@@ -57,7 +59,7 @@ public class VpnInfo implements Parcelable {
VpnInfo info = new VpnInfo();
info.ownerUid = source.readInt();
info.vpnIface = source.readString();
- info.primaryUnderlyingIface = source.readString();
+ info.underlyingIfaces = source.readStringArray();
return info;
}
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 3a7caa4c2fc02a0ffe7c68efe740a5634057f9d5..4573084983987e01ba1e28beba8fa9f8f6e0f38c 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -906,8 +906,6 @@ public class BatteryStatsImpl extends BatteryStats {
@VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
protected StopwatchTimer mBluetoothScanTimer;
- boolean mIsCellularTxPowerHigh = false;
-
int mMobileRadioPowerState = DataConnectionRealTimeInfo.DC_POWER_STATE_LOW;
long mMobileRadioActiveStartTime;
StopwatchTimer mMobileRadioActiveTimer;
@@ -5261,16 +5259,26 @@ public class BatteryStatsImpl extends BatteryStats {
}
@UnsupportedAppUsage
- public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData) {
+ public void notePhoneDataConnectionStateLocked(int dataType, boolean hasData, int serviceType) {
// BatteryStats uses 0 to represent no network type.
// Telephony does not have a concept of no network type, and uses 0 to represent unknown.
// Unknown is included in DATA_CONNECTION_OTHER.
- int bin = DATA_CONNECTION_NONE;
+ int bin = DATA_CONNECTION_OUT_OF_SERVICE;
if (hasData) {
if (dataType > 0 && dataType <= TelephonyManager.MAX_NETWORK_TYPE) {
bin = dataType;
} else {
- bin = DATA_CONNECTION_OTHER;
+ switch (serviceType) {
+ case ServiceState.STATE_OUT_OF_SERVICE:
+ bin = DATA_CONNECTION_OUT_OF_SERVICE;
+ break;
+ case ServiceState.STATE_EMERGENCY_ONLY:
+ bin = DATA_CONNECTION_EMERGENCY_SERVICE;
+ break;
+ default:
+ bin = DATA_CONNECTION_OTHER;
+ break;
+ }
}
}
if (DEBUG) Log.i(TAG, "Phone Data Connection -> " + dataType + " = " + hasData);
@@ -11190,19 +11198,9 @@ public class BatteryStatsImpl extends BatteryStats {
}
}
if (levelMaxTimeSpent == ModemActivityInfo.TX_POWER_LEVELS - 1) {
- if (!mIsCellularTxPowerHigh) {
- mHistoryCur.states2 |= HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
- addHistoryRecordLocked(elapsedRealtime, uptime);
- mIsCellularTxPowerHigh = true;
- }
- return;
- }
- if (mIsCellularTxPowerHigh) {
- mHistoryCur.states2 &= ~HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
+ mHistoryCur.states2 |= HistoryItem.STATE2_CELLULAR_HIGH_TX_POWER_FLAG;
addHistoryRecordLocked(elapsedRealtime, uptime);
- mIsCellularTxPowerHigh = false;
}
- return;
}
private final class BluetoothActivityInfoCache {
@@ -13660,7 +13658,6 @@ public class BatteryStatsImpl extends BatteryStats {
mCameraOnTimer.readSummaryFromParcelLocked(in);
mBluetoothScanNesting = 0;
mBluetoothScanTimer.readSummaryFromParcelLocked(in);
- mIsCellularTxPowerHigh = false;
int NRPMS = in.readInt();
if (NRPMS > 10000) {
@@ -14644,7 +14641,6 @@ public class BatteryStatsImpl extends BatteryStats {
mCameraOnTimer = new StopwatchTimer(mClocks, null, -13, null, mOnBatteryTimeBase, in);
mBluetoothScanNesting = 0;
mBluetoothScanTimer = new StopwatchTimer(mClocks, null, -14, null, mOnBatteryTimeBase, in);
- mIsCellularTxPowerHigh = false;
mDischargeUnplugLevel = in.readInt();
mDischargePlugLevel = in.readInt();
mDischargeCurrentLevel = in.readInt();
diff --git a/core/java/com/android/internal/policy/DecorView.java b/core/java/com/android/internal/policy/DecorView.java
index 7c52a40d4494d4515fec8582581b405db4095ea5..07002d78890819e648f8a518be7e263f57d813e4 100644
--- a/core/java/com/android/internal/policy/DecorView.java
+++ b/core/java/com/android/internal/policy/DecorView.java
@@ -796,7 +796,9 @@ public class DecorView extends FrameLayout implements RootViewSurfaceTaker, Wind
updateElevation();
mAllowUpdateElevation = true;
- if (changed && mResizeMode == RESIZE_MODE_DOCKED_DIVIDER) {
+ if (changed
+ && (mResizeMode == RESIZE_MODE_DOCKED_DIVIDER
+ || mDrawLegacyNavigationBarBackground)) {
getViewRootImpl().requestInvalidateRootRenderNode();
}
}
diff --git a/core/java/com/android/internal/policy/ScreenDecorationsUtils.java b/core/java/com/android/internal/policy/ScreenDecorationsUtils.java
index adf7692adc56924b67dbc4816a85dc0540c93a77..52172cf04362997f844900c3fa97b18d12b9ba96 100644
--- a/core/java/com/android/internal/policy/ScreenDecorationsUtils.java
+++ b/core/java/com/android/internal/policy/ScreenDecorationsUtils.java
@@ -36,13 +36,16 @@ public class ScreenDecorationsUtils {
}
// Radius that should be used in case top or bottom aren't defined.
- float defaultRadius = resources.getDimension(R.dimen.rounded_corner_radius);
+ float defaultRadius = resources.getDimension(R.dimen.rounded_corner_radius)
+ - resources.getDimension(R.dimen.rounded_corner_radius_adjustment);
- float topRadius = resources.getDimension(R.dimen.rounded_corner_radius_top);
+ float topRadius = resources.getDimension(R.dimen.rounded_corner_radius_top)
+ - resources.getDimension(R.dimen.rounded_corner_radius_top_adjustment);
if (topRadius == 0f) {
topRadius = defaultRadius;
}
- float bottomRadius = resources.getDimension(R.dimen.rounded_corner_radius_bottom);
+ float bottomRadius = resources.getDimension(R.dimen.rounded_corner_radius_bottom)
+ - resources.getDimension(R.dimen.rounded_corner_radius_bottom_adjustment);
if (bottomRadius == 0f) {
bottomRadius = defaultRadius;
}
diff --git a/core/java/com/android/internal/util/ScreenshotHelper.java b/core/java/com/android/internal/util/ScreenshotHelper.java
index 7fd94c6859fb27d8153f9b1b0548085a22c43eff..cac691cf7d451f74d2983f1a58c624a222bc1325 100644
--- a/core/java/com/android/internal/util/ScreenshotHelper.java
+++ b/core/java/com/android/internal/util/ScreenshotHelper.java
@@ -1,6 +1,7 @@
package com.android.internal.util;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
@@ -13,6 +14,8 @@ import android.os.RemoteException;
import android.os.UserHandle;
import android.util.Log;
+import java.util.function.Consumer;
+
public class ScreenshotHelper {
private static final String TAG = "ScreenshotHelper";
@@ -33,18 +36,59 @@ public class ScreenshotHelper {
mContext = context;
}
+ /**
+ * Request a screenshot be taken with a specific timeout.
+ *
+ * Added to support reducing unit test duration; the method variant without a timeout argument
+ * is recommended for general use.
+ *
+ * @param screenshotType The type of screenshot, for example either
+ * {@link android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN}
+ * or
+ * {@link android.view.WindowManager.TAKE_SCREENSHOT_SELECTED_REGION}
+ * @param hasStatus {@code true} if the status bar is currently showing. {@code false}
+ * if
+ * not.
+ * @param hasNav {@code true} if the navigation bar is currently showing. {@code
+ * false}
+ * if not.
+ * @param handler A handler used in case the screenshot times out
+ * @param completionConsumer Consumes `false` if a screenshot was not taken, and `true` if the
+ * screenshot was taken.
+ */
+ public void takeScreenshot(final int screenshotType, final boolean hasStatus,
+ final boolean hasNav, @NonNull Handler handler,
+ @Nullable Consumer completionConsumer) {
+ takeScreenshot(screenshotType, hasStatus, hasNav, SCREENSHOT_TIMEOUT_MS, handler,
+ completionConsumer);
+ }
+
/**
* Request a screenshot be taken.
*
- * @param screenshotType The type of screenshot, for example either
- * {@link android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN}
- * or {@link android.view.WindowManager.TAKE_SCREENSHOT_SELECTED_REGION}
- * @param hasStatus {@code true} if the status bar is currently showing. {@code false} if not.
- * @param hasNav {@code true} if the navigation bar is currently showing. {@code false} if not.
- * @param handler A handler used in case the screenshot times out
+ * Added to support reducing unit test duration; the method variant without a timeout argument
+ * is recommended for general use.
+ *
+ * @param screenshotType The type of screenshot, for example either
+ * {@link android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN}
+ * or
+ * {@link android.view.WindowManager.TAKE_SCREENSHOT_SELECTED_REGION}
+ * @param hasStatus {@code true} if the status bar is currently showing. {@code false}
+ * if
+ * not.
+ * @param hasNav {@code true} if the navigation bar is currently showing. {@code
+ * false}
+ * if not.
+ * @param timeoutMs If the screenshot hasn't been completed within this time period,
+ * the screenshot attempt will be cancelled and `completionConsumer`
+ * will be run.
+ * @param handler A handler used in case the screenshot times out
+ * @param completionConsumer Consumes `false` if a screenshot was not taken, and `true` if the
+ * screenshot was taken.
*/
public void takeScreenshot(final int screenshotType, final boolean hasStatus,
- final boolean hasNav, @NonNull Handler handler) {
+ final boolean hasNav, long timeoutMs, @NonNull Handler handler,
+ @Nullable Consumer completionConsumer) {
synchronized (mScreenshotLock) {
if (mScreenshotConnection != null) {
return;
@@ -54,7 +98,8 @@ public class ScreenshotHelper {
final Intent serviceIntent = new Intent();
final Runnable mScreenshotTimeout = new Runnable() {
- @Override public void run() {
+ @Override
+ public void run() {
synchronized (mScreenshotLock) {
if (mScreenshotConnection != null) {
mContext.unbindService(mScreenshotConnection);
@@ -62,6 +107,9 @@ public class ScreenshotHelper {
notifyScreenshotError();
}
}
+ if (completionConsumer != null) {
+ completionConsumer.accept(false);
+ }
}
};
@@ -86,15 +134,22 @@ public class ScreenshotHelper {
handler.removeCallbacks(mScreenshotTimeout);
}
}
+ if (completionConsumer != null) {
+ completionConsumer.accept(true);
+ }
}
};
msg.replyTo = new Messenger(h);
- msg.arg1 = hasStatus ? 1: 0;
- msg.arg2 = hasNav ? 1: 0;
+ msg.arg1 = hasStatus ? 1 : 0;
+ msg.arg2 = hasNav ? 1 : 0;
+
try {
messenger.send(msg);
} catch (RemoteException e) {
Log.e(TAG, "Couldn't take screenshot: " + e);
+ if (completionConsumer != null) {
+ completionConsumer.accept(false);
+ }
}
}
}
@@ -115,7 +170,7 @@ public class ScreenshotHelper {
Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE_WHILE_AWAKE,
UserHandle.CURRENT)) {
mScreenshotConnection = conn;
- handler.postDelayed(mScreenshotTimeout, SCREENSHOT_TIMEOUT_MS);
+ handler.postDelayed(mScreenshotTimeout, timeoutMs);
}
}
}
diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java
index 344d7ef8c83f82bac0fa743b172a6a1e8825b356..8799e3d4c6bf48986a00b6fe561b29fd7351d619 100644
--- a/core/java/com/android/internal/util/XmlUtils.java
+++ b/core/java/com/android/internal/util/XmlUtils.java
@@ -26,6 +26,8 @@ import android.util.ArrayMap;
import android.util.Base64;
import android.util.Xml;
+import libcore.util.HexEncoding;
+
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlSerializer;
@@ -396,16 +398,7 @@ public class XmlUtils {
final int N = val.length;
out.attribute(null, "num", Integer.toString(N));
- StringBuilder sb = new StringBuilder(val.length*2);
- for (int i=0; i> 4) & 0x0f;
- sb.append((char)(h >= 10 ? ('a'+h-10) : ('0'+h)));
- h = b & 0x0f;
- sb.append((char)(h >= 10 ? ('a'+h-10) : ('0'+h)));
- }
-
- out.text(sb.toString());
+ out.text(HexEncoding.encodeToString(val).toLowerCase());
out.endTag(null, "byte-array");
}
@@ -1032,7 +1025,9 @@ public class XmlUtils {
"Not a number in num attribute in byte-array");
}
- byte[] array = new byte[num];
+ // 0 len byte array does not have a text in the XML tag. So, initialize to 0 len array.
+ // For all other array lens, HexEncoding.decode() below overrides the array.
+ byte[] array = new byte[0];
int eventType = parser.getEventType();
do {
@@ -1043,16 +1038,7 @@ public class XmlUtils {
throw new XmlPullParserException(
"Invalid value found in byte-array: " + values);
}
- // This is ugly, but keeping it to mirror the logic in #writeByteArrayXml.
- for (int i = 0; i < num; i ++) {
- char nibbleHighChar = values.charAt(2 * i);
- char nibbleLowChar = values.charAt(2 * i + 1);
- int nibbleHigh = nibbleHighChar > 'a' ? (nibbleHighChar - 'a' + 10)
- : (nibbleHighChar - '0');
- int nibbleLow = nibbleLowChar > 'a' ? (nibbleLowChar - 'a' + 10)
- : (nibbleLowChar - '0');
- array[i] = (byte) ((nibbleHigh & 0x0F) << 4 | (nibbleLow & 0x0F));
- }
+ array = HexEncoding.decode(values);
}
} else if (eventType == parser.END_TAG) {
if (parser.getName().equals(endTag)) {
diff --git a/core/java/com/android/internal/view/BaseIWindow.java b/core/java/com/android/internal/view/BaseIWindow.java
index fb9ff15c79ac59785c36a33e4ec3f58da3b01897..f9cdf3d0be6141d6dda4e7699c1071c16cb34af2 100644
--- a/core/java/com/android/internal/view/BaseIWindow.java
+++ b/core/java/com/android/internal/view/BaseIWindow.java
@@ -16,6 +16,7 @@
package com.android.internal.view;
+import android.graphics.Point;
import android.graphics.Rect;
import android.hardware.input.InputManager;
import android.os.Bundle;
@@ -54,6 +55,10 @@ public class BaseIWindow extends IWindow.Stub {
}
}
+ @Override
+ public void locationInParentDisplayChanged(Point offset) {
+ }
+
@Override
public void insetsChanged(InsetsState insetsState) {
}
diff --git a/core/java/com/android/internal/widget/LockPatternView.java b/core/java/com/android/internal/widget/LockPatternView.java
index 22182677babeeccf800108b1fa7c20699c3e0b1e..3f6c4d4f5634b9726251b1a989372e9f33290b33 100644
--- a/core/java/com/android/internal/widget/LockPatternView.java
+++ b/core/java/com/android/internal/widget/LockPatternView.java
@@ -626,6 +626,13 @@ public class LockPatternView extends View {
invalidate();
}
+ /**
+ * If there are any cells being drawn.
+ */
+ public boolean isEmpty() {
+ return mPattern.isEmpty();
+ }
+
/**
* Clear the pattern lookup table. Also reset the line fade start times for
* the next attempt.
diff --git a/core/java/com/android/internal/widget/MediaNotificationView.java b/core/java/com/android/internal/widget/MediaNotificationView.java
index e7d240a1035e6b7fd1947a58391042c30a02077c..9bb45012b61a399c8df302706da626a76d1361c2 100644
--- a/core/java/com/android/internal/widget/MediaNotificationView.java
+++ b/core/java/com/android/internal/widget/MediaNotificationView.java
@@ -26,6 +26,8 @@ import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.RemoteViews;
+import java.util.ArrayList;
+
/**
* A TextView that can float around an image on the end.
*
@@ -42,6 +44,7 @@ public class MediaNotificationView extends FrameLayout {
private View mMainColumn;
private View mMediaContent;
private int mImagePushIn;
+ private ArrayList mListeners;
public MediaNotificationView(Context context) {
this(context, null);
@@ -168,4 +171,50 @@ public class MediaNotificationView extends FrameLayout {
mMainColumn = findViewById(com.android.internal.R.id.notification_main_column);
mMediaContent = findViewById(com.android.internal.R.id.notification_media_content);
}
+
+ @Override
+ public void onVisibilityAggregated(boolean isVisible) {
+ super.onVisibilityAggregated(isVisible);
+ if (mListeners != null) {
+ for (int i = 0; i < mListeners.size(); i++) {
+ mListeners.get(i).onAggregatedVisibilityChanged(isVisible);
+ }
+ }
+ }
+
+ /**
+ * Add a listener to receive updates on the visibility of this view
+ *
+ * @param listener The listener to add.
+ */
+ public void addVisibilityListener(VisibilityChangeListener listener) {
+ if (mListeners == null) {
+ mListeners = new ArrayList<>();
+ }
+ if (!mListeners.contains(listener)) {
+ mListeners.add(listener);
+ }
+ }
+
+ /**
+ * Remove the specified listener
+ *
+ * @param listener The listener to remove.
+ */
+ public void removeVisibilityListener(VisibilityChangeListener listener) {
+ if (mListeners != null) {
+ mListeners.remove(listener);
+ }
+ }
+
+ /**
+ * Interface for receiving updates when the view's visibility changes
+ */
+ public interface VisibilityChangeListener {
+ /**
+ * Method called when the visibility of this view has changed
+ * @param isVisible true if the view is now visible
+ */
+ void onAggregatedVisibilityChanged(boolean isVisible);
+ }
}
diff --git a/core/java/com/android/internal/widget/PointerLocationView.java b/core/java/com/android/internal/widget/PointerLocationView.java
index 9084f625f9cb0bff234d260853e9ff96920035c0..d48034b66266f37fdc3ae43afce56ece9b181877 100644
--- a/core/java/com/android/internal/widget/PointerLocationView.java
+++ b/core/java/com/android/internal/widget/PointerLocationView.java
@@ -53,6 +53,12 @@ public class PointerLocationView extends View implements InputDeviceListener,
// to plot alongside the default one. Useful for testing and comparison purposes.
private static final String ALT_STRATEGY_PROPERY_KEY = "debug.velocitytracker.alt";
+ /**
+ * If set to a positive value between 1-255, shows an overlay with the approved (red) and
+ * rejected (blue) exclusions.
+ */
+ private static final String GESTURE_EXCLUSION_PROP = "debug.pointerlocation.showexclusion";
+
public static class PointerState {
// Trace of previous points.
private float[] mTraceX = new float[32];
@@ -138,8 +144,10 @@ public class PointerLocationView extends View implements InputDeviceListener,
private final PointerCoords mTempCoords = new PointerCoords();
private final Region mSystemGestureExclusion = new Region();
+ private final Region mSystemGestureExclusionRejected = new Region();
private final Path mSystemGestureExclusionPath = new Path();
private final Paint mSystemGestureExclusionPaint;
+ private final Paint mSystemGestureExclusionRejectedPaint;
private final VelocityTracker mVelocity;
private final VelocityTracker mAltVelocity;
@@ -190,6 +198,10 @@ public class PointerLocationView extends View implements InputDeviceListener,
mSystemGestureExclusionPaint.setARGB(25, 255, 0, 0);
mSystemGestureExclusionPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+ mSystemGestureExclusionRejectedPaint = new Paint();
+ mSystemGestureExclusionRejectedPaint.setARGB(25, 0, 0, 255);
+ mSystemGestureExclusionRejectedPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+
PointerState ps = new PointerState();
mPointers.add(ps);
mActivePointerId = 0;
@@ -263,6 +275,12 @@ public class PointerLocationView extends View implements InputDeviceListener,
canvas.drawPath(mSystemGestureExclusionPath, mSystemGestureExclusionPaint);
}
+ if (!mSystemGestureExclusionRejected.isEmpty()) {
+ mSystemGestureExclusionPath.reset();
+ mSystemGestureExclusionRejected.getBoundaryPath(mSystemGestureExclusionPath);
+ canvas.drawPath(mSystemGestureExclusionPath, mSystemGestureExclusionRejectedPaint);
+ }
+
// Labels
if (mActivePointerId >= 0) {
final PointerState ps = mPointers.get(mActivePointerId);
@@ -754,6 +772,9 @@ public class PointerLocationView extends View implements InputDeviceListener,
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
+ final int alpha = systemGestureExclusionOpacity();
+ mSystemGestureExclusionPaint.setAlpha(alpha);
+ mSystemGestureExclusionRejectedPaint.setAlpha(alpha);
} else {
mSystemGestureExclusion.setEmpty();
}
@@ -805,7 +826,12 @@ public class PointerLocationView extends View implements InputDeviceListener,
}
private static boolean shouldShowSystemGestureExclusion() {
- return SystemProperties.getBoolean("debug.pointerlocation.showexclusion", false);
+ return systemGestureExclusionOpacity() > 0;
+ }
+
+ private static int systemGestureExclusionOpacity() {
+ int x = SystemProperties.getInt(GESTURE_EXCLUSION_PROP, 0);
+ return x >= 0 && x <= 255 ? x : 0;
}
// HACK
@@ -928,12 +954,19 @@ public class PointerLocationView extends View implements InputDeviceListener,
private ISystemGestureExclusionListener mSystemGestureExclusionListener =
new ISystemGestureExclusionListener.Stub() {
@Override
- public void onSystemGestureExclusionChanged(int displayId, Region systemGestureExclusion) {
+ public void onSystemGestureExclusionChanged(int displayId, Region systemGestureExclusion,
+ Region systemGestureExclusionUnrestricted) {
Region exclusion = Region.obtain(systemGestureExclusion);
+ Region rejected = Region.obtain();
+ if (systemGestureExclusionUnrestricted != null) {
+ rejected.set(systemGestureExclusionUnrestricted);
+ rejected.op(exclusion, Region.Op.DIFFERENCE);
+ }
Handler handler = getHandler();
if (handler != null) {
handler.post(() -> {
mSystemGestureExclusion.set(exclusion);
+ mSystemGestureExclusionRejected.set(rejected);
exclusion.recycle();
invalidate();
});
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index 9fc79cb606e6fc6284eeee7a8494f0ff1c7fb1a0..510b321e807053d61081c6152dc35f874549dce9 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -53,6 +53,8 @@ import java.util.Map;
/**
* Loads global system configuration info.
+ * Note: Initializing this class hits the disk and is slow. This class should generally only be
+ * accessed by the system_server process.
*/
public class SystemConfig {
static final String TAG = "SystemConfig";
@@ -209,6 +211,11 @@ public class SystemConfig {
private final ArraySet mBugreportWhitelistedPackages = new ArraySet<>();
public static SystemConfig getInstance() {
+ if (!isSystemProcess()) {
+ Slog.wtf(TAG, "SystemConfig is being accessed by a process other than "
+ + "system_server.");
+ }
+
synchronized (SystemConfig.class) {
if (sInstance == null) {
sInstance = new SystemConfig();
@@ -1154,4 +1161,8 @@ public class SystemConfig {
mSplitPermissions.add(new SplitPermissionInfo(splitPerm, newPermissions, targetSdk));
}
}
+
+ private static boolean isSystemProcess() {
+ return Process.myUid() == Process.SYSTEM_UID;
+ }
}
diff --git a/core/jni/android_hardware_input_InputWindowHandle.cpp b/core/jni/android_hardware_input_InputWindowHandle.cpp
index a1d1d4f0733d673e446edf810023d133999d5996..57d16496fca5dcd8517aa0abb2e3f6cfdd071354 100644
--- a/core/jni/android_hardware_input_InputWindowHandle.cpp
+++ b/core/jni/android_hardware_input_InputWindowHandle.cpp
@@ -28,6 +28,7 @@
#include "android_hardware_input_InputWindowHandle.h"
#include "android_hardware_input_InputApplicationHandle.h"
#include "android_util_Binder.h"
+#include
namespace android {
@@ -78,6 +79,12 @@ NativeInputWindowHandle::NativeInputWindowHandle(jweak objWeak) :
NativeInputWindowHandle::~NativeInputWindowHandle() {
JNIEnv* env = AndroidRuntime::getJNIEnv();
env->DeleteWeakGlobalRef(mObjWeak);
+
+ // Clear the weak reference to the layer handle and flush any binder ref count operations so we
+ // do not hold on to any binder references.
+ // TODO(b/139697085) remove this after it can be flushed automatically
+ mInfo.touchableRegionCropHandle.clear();
+ IPCThreadState::self()->flushCommands();
}
jobject NativeInputWindowHandle::getInputWindowHandleObjLocalRef(JNIEnv* env) {
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index 14dbabb1ce022dc7c17c795963f472e3a5c56d51..c3e7a36bef78a26d8ff14c7ea340f4a0f2a58354 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -575,7 +575,7 @@ static void android_os_Debug_getMemInfo(JNIEnv *env, jobject clazz, jlongArray o
if (outArray != NULL) {
outLen = MEMINFO_COUNT;
for (int i = 0; i < outLen; i++) {
- if (i == MEMINFO_VMALLOC_USED) {
+ if (i == MEMINFO_VMALLOC_USED && mem[i] == 0) {
outArray[i] = smi.ReadVmallocInfo() / 1024;
continue;
}
diff --git a/core/jni/android_view_DisplayEventReceiver.cpp b/core/jni/android_view_DisplayEventReceiver.cpp
index 8d702d11d8fea271a92200c4ed9f777acd13e73a..ba538a855f8126702d6e4a0657cba548fb76da1c 100644
--- a/core/jni/android_view_DisplayEventReceiver.cpp
+++ b/core/jni/android_view_DisplayEventReceiver.cpp
@@ -48,7 +48,8 @@ static struct {
class NativeDisplayEventReceiver : public DisplayEventDispatcher {
public:
NativeDisplayEventReceiver(JNIEnv* env,
- jobject receiverWeak, const sp& messageQueue, jint vsyncSource);
+ jobject receiverWeak, const sp& messageQueue, jint vsyncSource,
+ jint configChanged);
void dispose();
@@ -68,9 +69,11 @@ private:
NativeDisplayEventReceiver::NativeDisplayEventReceiver(JNIEnv* env,
- jobject receiverWeak, const sp& messageQueue, jint vsyncSource) :
+ jobject receiverWeak, const sp& messageQueue, jint vsyncSource,
+ jint configChanged) :
DisplayEventDispatcher(messageQueue->getLooper(),
- static_cast(vsyncSource)),
+ static_cast(vsyncSource),
+ static_cast(configChanged)),
mReceiverWeakGlobal(env->NewGlobalRef(receiverWeak)),
mMessageQueue(messageQueue) {
ALOGV("receiver %p ~ Initializing display event receiver.", this);
@@ -136,7 +139,7 @@ void NativeDisplayEventReceiver::dispatchConfigChanged(nsecs_t timestamp,
static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,
- jobject messageQueueObj, jint vsyncSource) {
+ jobject messageQueueObj, jint vsyncSource, jint configChanged) {
sp messageQueue = android_os_MessageQueue_getMessageQueue(env, messageQueueObj);
if (messageQueue == NULL) {
jniThrowRuntimeException(env, "MessageQueue is not initialized.");
@@ -144,7 +147,7 @@ static jlong nativeInit(JNIEnv* env, jclass clazz, jobject receiverWeak,
}
sp receiver = new NativeDisplayEventReceiver(env,
- receiverWeak, messageQueue, vsyncSource);
+ receiverWeak, messageQueue, vsyncSource, configChanged);
status_t status = receiver->initialize();
if (status) {
String8 message;
@@ -179,7 +182,7 @@ static void nativeScheduleVsync(JNIEnv* env, jclass clazz, jlong receiverPtr) {
static const JNINativeMethod gMethods[] = {
/* name, signature, funcPtr */
{ "nativeInit",
- "(Ljava/lang/ref/WeakReference;Landroid/os/MessageQueue;I)J",
+ "(Ljava/lang/ref/WeakReference;Landroid/os/MessageQueue;II)J",
(void*)nativeInit },
{ "nativeDispose",
"(J)V",
diff --git a/core/jni/android_view_Surface.cpp b/core/jni/android_view_Surface.cpp
index ccadc7d7c22a8199a2e2cc6ab58e2f5fcb0816a1..ff14a2acc4d776b52f0c5172e3f870d7b0ff82fa 100644
--- a/core/jni/android_view_Surface.cpp
+++ b/core/jni/android_view_Surface.cpp
@@ -75,6 +75,24 @@ static struct {
jfieldID bottom;
} gRectClassInfo;
+class JNamedColorSpace {
+public:
+ // ColorSpace.Named.SRGB.ordinal() = 0;
+ static constexpr jint SRGB = 0;
+
+ // ColorSpace.Named.DISPLAY_P3.ordinal() = 7;
+ static constexpr jint DISPLAY_P3 = 7;
+};
+
+constexpr ui::Dataspace fromNamedColorSpaceValueToDataspace(const jint colorSpace) {
+ switch (colorSpace) {
+ case JNamedColorSpace::DISPLAY_P3:
+ return ui::Dataspace::DISPLAY_P3;
+ default:
+ return ui::Dataspace::V0_SRGB;
+ }
+}
+
// ----------------------------------------------------------------------------
// this is just a pointer we use to pass to inc/decStrong
@@ -425,11 +443,12 @@ static jint nativeForceScopedDisconnect(JNIEnv *env, jclass clazz, jlong nativeO
return surface->disconnect(-1, IGraphicBufferProducer::DisconnectMode::AllLocal);
}
-static jint nativeAttachAndQueueBuffer(JNIEnv *env, jclass clazz, jlong nativeObject,
- jobject graphicBuffer) {
+static jint nativeAttachAndQueueBufferWithColorSpace(JNIEnv *env, jclass clazz, jlong nativeObject,
+ jobject graphicBuffer, jint colorSpaceId) {
Surface* surface = reinterpret_cast(nativeObject);
sp bp = graphicBufferForJavaObject(env, graphicBuffer);
- int err = Surface::attachAndQueueBuffer(surface, bp);
+ int err = Surface::attachAndQueueBufferWithDataspace(surface, bp,
+ fromNamedColorSpaceValueToDataspace(colorSpaceId));
return err;
}
@@ -531,7 +550,8 @@ static const JNINativeMethod gSurfaceMethods[] = {
{"nativeGetNextFrameNumber", "(J)J", (void*)nativeGetNextFrameNumber },
{"nativeSetScalingMode", "(JI)I", (void*)nativeSetScalingMode },
{"nativeForceScopedDisconnect", "(J)I", (void*)nativeForceScopedDisconnect},
- {"nativeAttachAndQueueBuffer", "(JLandroid/graphics/GraphicBuffer;)I", (void*)nativeAttachAndQueueBuffer},
+ {"nativeAttachAndQueueBufferWithColorSpace", "(JLandroid/graphics/GraphicBuffer;I)I",
+ (void*)nativeAttachAndQueueBufferWithColorSpace},
{"nativeSetSharedBufferModeEnabled", "(JZ)I", (void*)nativeSetSharedBufferModeEnabled},
{"nativeSetAutoRefreshEnabled", "(JZ)I", (void*)nativeSetAutoRefreshEnabled},
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 986771dad802d151483901ed2dafaa93fc0b3998..030d3be8a6707b7cce377d3e1a5f112942f8f687 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -217,12 +217,6 @@ static void nativeRelease(JNIEnv* env, jclass clazz, jlong nativeObject) {
ctrl->decStrong((void *)nativeCreate);
}
-static void nativeDestroy(JNIEnv* env, jclass clazz, jlong nativeObject) {
- sp ctrl(reinterpret_cast(nativeObject));
- ctrl->destroy();
- ctrl->decStrong((void *)nativeCreate);
-}
-
static void nativeDisconnect(JNIEnv* env, jclass clazz, jlong nativeObject) {
SurfaceControl* const ctrl = reinterpret_cast(nativeObject);
if (ctrl != NULL) {
@@ -1268,8 +1262,6 @@ static const JNINativeMethod sSurfaceControlMethods[] = {
(void*)nativeWriteToParcel },
{"nativeRelease", "(J)V",
(void*)nativeRelease },
- {"nativeDestroy", "(J)V",
- (void*)nativeDestroy },
{"nativeDisconnect", "(J)V",
(void*)nativeDisconnect },
{"nativeCreateTransaction", "()J",
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
index c023438eecc232c1c0342233795bd3bef61f8a44..f817c9bec3f5b0d418702aa67cd6f1297b43be49 100644
--- a/core/proto/android/app/settings_enums.proto
+++ b/core/proto/android/app/settings_enums.proto
@@ -2401,4 +2401,9 @@ enum PageId {
// OS: Q
// Note: Gear icon is shown next to gesture navigation preference and opens sensitivity dialog
SETTINGS_GESTURE_NAV_BACK_SENSITIVITY_DLG = 1748;
+
+ // OPEN: Settings > System > Aware > Aware Display
+ // CATEGORY: SETTINGS
+ // OS: Q
+ SETTINGS_AWARE_DISPLAY = 1750;
}
diff --git a/core/proto/android/providers/settings/global.proto b/core/proto/android/providers/settings/global.proto
index 8becd4a15e8f50c9298b0944c2279819987d7fd0..b0bf2912636370c9bacb84b801ae835db443f783 100644
--- a/core/proto/android/providers/settings/global.proto
+++ b/core/proto/android/providers/settings/global.proto
@@ -688,6 +688,7 @@ message GlobalSettingsProto {
// Configuration options for smart replies and smart actions in notifications. This is
// encoded as a key=value list separated by commas.
optional SettingProto smart_suggestions_in_notifications_flags = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto bubbles = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional Notification notification = 82;
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index fed2efaf8a78f03a5dc4f21cc42b93b68cc825cb..61799eefdca643a44b6657102cde9c816af470ba 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -198,11 +198,19 @@ message SecureSettingsProto {
optional SettingProto silence_alarms_count = 2 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto silence_calls_count = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto silence_enabled = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
- optional SettingProto silence_notification_count = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ // del: silence_notification_count = 5
optional SettingProto silence_timer_count = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto skip_count = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto skip_enabled = 8 [ (android.privacy).dest = DEST_AUTOMATIC ];
+
+ optional SettingProto silence_alarms_touch_count = 9 [ (android.privacy).dest =
+ DEST_AUTOMATIC ];
+ optional SettingProto silence_calls_touch_count = 10 [ (android.privacy).dest =
+ DEST_AUTOMATIC ];
+ optional SettingProto silence_timer_touch_count = 11 [ (android.privacy).dest =
+ DEST_AUTOMATIC ];
+ optional SettingProto skip_touch_count = 12 [ (android.privacy).dest = DEST_AUTOMATIC ];
}
optional Gesture gesture = 74;
diff --git a/core/proto/android/stats/dnsresolver/dns_resolver.proto b/core/proto/android/stats/dnsresolver/dns_resolver.proto
index af6fea017bef4a32687595f8d13459f40e8be0a0..9eaabfbca4636b9284cace4343957132f3a6757f 100644
--- a/core/proto/android/stats/dnsresolver/dns_resolver.proto
+++ b/core/proto/android/stats/dnsresolver/dns_resolver.proto
@@ -1,214 +1,217 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-syntax = "proto2";
-package android.stats.dnsresolver;
-
-enum EventType {
- EVENT_UNKNOWN = 0;
- EVENT_GETADDRINFO = 1;
- EVENT_GETHOSTBYNAME = 2;
- EVENT_GETHOSTBYADDR = 3;
- EVENT_RES_NSEND = 4;
-}
-
-// The return value of the DNS resolver for each DNS lookups.
-// bionic/libc/include/netdb.h
-// system/netd/resolv/include/netd_resolv/resolv.h
-enum ReturnCode {
- RC_EAI_NO_ERROR = 0;
- RC_EAI_ADDRFAMILY = 1;
- RC_EAI_AGAIN = 2;
- RC_EAI_BADFLAGS = 3;
- RC_EAI_FAIL = 4;
- RC_EAI_FAMILY = 5;
- RC_EAI_MEMORY = 6;
- RC_EAI_NODATA = 7;
- RC_EAI_NONAME = 8;
- RC_EAI_SERVICE = 9;
- RC_EAI_SOCKTYPE = 10;
- RC_EAI_SYSTEM = 11;
- RC_EAI_BADHINTS = 12;
- RC_EAI_PROTOCOL = 13;
- RC_EAI_OVERFLOW = 14;
- RC_RESOLV_TIMEOUT = 255;
- RC_EAI_MAX = 256;
-}
-
-enum NsRcode {
- NS_R_NO_ERROR = 0; // No error occurred.
- NS_R_FORMERR = 1; // Format error.
- NS_R_SERVFAIL = 2; // Server failure.
- NS_R_NXDOMAIN = 3; // Name error.
- NS_R_NOTIMPL = 4; // Unimplemented.
- NS_R_REFUSED = 5; // Operation refused.
- // these are for BIND_UPDATE
- NS_R_YXDOMAIN = 6; // Name exists
- NS_R_YXRRSET = 7; // RRset exists
- NS_R_NXRRSET = 8; // RRset does not exist
- NS_R_NOTAUTH = 9; // Not authoritative for zone
- NS_R_NOTZONE = 10; // Zone of record different from zone section
- NS_R_MAX = 11;
- // The following are EDNS extended rcodes
- NS_R_BADVERS = 16;
- // The following are TSIG errors
- // NS_R_BADSIG = 16,
- NS_R_BADKEY = 17;
- NS_R_BADTIME = 18;
-}
-
-// Currently defined type values for resources and queries.
-enum NsType {
- NS_T_INVALID = 0; // Cookie.
- NS_T_A = 1; // Host address.
- NS_T_NS = 2; // Authoritative server.
- NS_T_MD = 3; // Mail destination.
- NS_T_MF = 4; // Mail forwarder.
- NS_T_CNAME = 5; // Canonical name.
- NS_T_SOA = 6; // Start of authority zone.
- NS_T_MB = 7; // Mailbox domain name.
- NS_T_MG = 8; // Mail group member.
- NS_T_MR = 9; // Mail rename name.
- NS_T_NULL = 10; // Null resource record.
- NS_T_WKS = 11; // Well known service.
- NS_T_PTR = 12; // Domain name pointer.
- NS_T_HINFO = 13; // Host information.
- NS_T_MINFO = 14; // Mailbox information.
- NS_T_MX = 15; // Mail routing information.
- NS_T_TXT = 16; // Text strings.
- NS_T_RP = 17; // Responsible person.
- NS_T_AFSDB = 18; // AFS cell database.
- NS_T_X25 = 19; // X_25 calling address.
- NS_T_ISDN = 20; // ISDN calling address.
- NS_T_RT = 21; // Router.
- NS_T_NSAP = 22; // NSAP address.
- NS_T_NSAP_PTR = 23; // Reverse NSAP lookup (deprecated).
- NS_T_SIG = 24; // Security signature.
- NS_T_KEY = 25; // Security key.
- NS_T_PX = 26; // X.400 mail mapping.
- NS_T_GPOS = 27; // Geographical position (withdrawn).
- NS_T_AAAA = 28; // IPv6 Address.
- NS_T_LOC = 29; // Location Information.
- NS_T_NXT = 30; // Next domain (security).
- NS_T_EID = 31; // Endpoint identifier.
- NS_T_NIMLOC = 32; // Nimrod Locator.
- NS_T_SRV = 33; // Server Selection.
- NS_T_ATMA = 34; // ATM Address
- NS_T_NAPTR = 35; // Naming Authority PoinTeR
- NS_T_KX = 36; // Key Exchange
- NS_T_CERT = 37; // Certification record
- NS_T_A6 = 38; // IPv6 address (experimental)
- NS_T_DNAME = 39; // Non-terminal DNAME
- NS_T_SINK = 40; // Kitchen sink (experimentatl)
- NS_T_OPT = 41; // EDNS0 option (meta-RR)
- NS_T_APL = 42; // Address prefix list (RFC 3123)
- NS_T_DS = 43; // Delegation Signer
- NS_T_SSHFP = 44; // SSH Fingerprint
- NS_T_IPSECKEY = 45; // IPSEC Key
- NS_T_RRSIG = 46; // RRset Signature
- NS_T_NSEC = 47; // Negative security
- NS_T_DNSKEY = 48; // DNS Key
- NS_T_DHCID = 49; // Dynamic host configuratin identifier
- NS_T_NSEC3 = 50; // Negative security type 3
- NS_T_NSEC3PARAM = 51; // Negative security type 3 parameters
- NS_T_HIP = 55; // Host Identity Protocol
- NS_T_SPF = 99; // Sender Policy Framework
- NS_T_TKEY = 249; // Transaction key
- NS_T_TSIG = 250; // Transaction signature.
- NS_T_IXFR = 251; // Incremental zone transfer.
- NS_T_AXFR = 252; // Transfer zone of authority.
- NS_T_MAILB = 253; // Transfer mailbox records.
- NS_T_MAILA = 254; // Transfer mail agent records.
- NS_T_ANY = 255; // Wildcard match.
- NS_T_ZXFR = 256; // BIND-specific, nonstandard.
- NS_T_DLV = 32769; // DNSSEC look-aside validatation.
- NS_T_MAX = 65536;
-}
-
-enum IpVersion {
- IV_UNKNOWN = 0;
- IV_IPV4 = 1;
- IV_IPV6 = 2;
-}
-
-enum TransportType {
- TT_UNKNOWN = 0;
- TT_UDP = 1;
- TT_TCP = 2;
- TT_DOT = 3;
-}
-
-enum PrivateDnsModes {
- PDM_UNKNOWN = 0;
- PDM_OFF = 1;
- PDM_OPPORTUNISTIC = 2;
- PDM_STRICT = 3;
-}
-
-enum Transport {
- // Indicates this network uses a Cellular transport.
- TRANSPORT_DEFAULT = 0; // TRANSPORT_CELLULAR
- // Indicates this network uses a Wi-Fi transport.
- TRANSPORT_WIFI = 1;
- // Indicates this network uses a Bluetooth transport.
- TRANSPORT_BLUETOOTH = 2;
- // Indicates this network uses an Ethernet transport.
- TRANSPORT_ETHERNET = 3;
- // Indicates this network uses a VPN transport.
- TRANSPORT_VPN = 4;
- // Indicates this network uses a Wi-Fi Aware transport.
- TRANSPORT_WIFI_AWARE = 5;
- // Indicates this network uses a LoWPAN transport.
- TRANSPORT_LOWPAN = 6;
-}
-
-enum CacheStatus{
- // the cache can't handle that kind of queries.
- // or the answer buffer is too small.
- CS_UNSUPPORTED = 0;
- // the cache doesn't know about this query.
- CS_NOTFOUND = 1;
- // the cache found the answer.
- CS_FOUND = 2;
- // Don't do anything on cache.
- CS_SKIP = 3;
-}
-
-message DnsQueryEvent {
- optional android.stats.dnsresolver.NsRcode rcode = 1;
-
- optional android.stats.dnsresolver.NsType type = 2;
-
- optional android.stats.dnsresolver.CacheStatus cache_hit = 3;
-
- optional android.stats.dnsresolver.IpVersion ip_version = 4;
-
- optional android.stats.dnsresolver.TransportType transport = 5;
-
- // Number of DNS query retry times
- optional int32 retry_times = 6;
-
- // Ordinal number of name server.
- optional int32 dns_server_count = 7;
-
- // Used only by TCP and DOT. True for new connections.
- optional bool connected = 8;
-
- optional int32 latency_micros = 9;
-}
-
-message DnsQueryEvents {
- repeated DnsQueryEvent dns_query_event = 1;
-}
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+syntax = "proto2";
+package android.stats.dnsresolver;
+
+enum EventType {
+ EVENT_UNKNOWN = 0;
+ EVENT_GETADDRINFO = 1;
+ EVENT_GETHOSTBYNAME = 2;
+ EVENT_GETHOSTBYADDR = 3;
+ EVENT_RES_NSEND = 4;
+}
+
+// The return value of the DNS resolver for each DNS lookups.
+// bionic/libc/include/netdb.h
+// system/netd/resolv/include/netd_resolv/resolv.h
+enum ReturnCode {
+ RC_EAI_NO_ERROR = 0;
+ RC_EAI_ADDRFAMILY = 1;
+ RC_EAI_AGAIN = 2;
+ RC_EAI_BADFLAGS = 3;
+ RC_EAI_FAIL = 4;
+ RC_EAI_FAMILY = 5;
+ RC_EAI_MEMORY = 6;
+ RC_EAI_NODATA = 7;
+ RC_EAI_NONAME = 8;
+ RC_EAI_SERVICE = 9;
+ RC_EAI_SOCKTYPE = 10;
+ RC_EAI_SYSTEM = 11;
+ RC_EAI_BADHINTS = 12;
+ RC_EAI_PROTOCOL = 13;
+ RC_EAI_OVERFLOW = 14;
+ RC_RESOLV_TIMEOUT = 255;
+ RC_EAI_MAX = 256;
+}
+
+enum NsRcode {
+ NS_R_NO_ERROR = 0; // No error occurred.
+ NS_R_FORMERR = 1; // Format error.
+ NS_R_SERVFAIL = 2; // Server failure.
+ NS_R_NXDOMAIN = 3; // Name error.
+ NS_R_NOTIMPL = 4; // Unimplemented.
+ NS_R_REFUSED = 5; // Operation refused.
+ // these are for BIND_UPDATE
+ NS_R_YXDOMAIN = 6; // Name exists
+ NS_R_YXRRSET = 7; // RRset exists
+ NS_R_NXRRSET = 8; // RRset does not exist
+ NS_R_NOTAUTH = 9; // Not authoritative for zone
+ NS_R_NOTZONE = 10; // Zone of record different from zone section
+ NS_R_MAX = 11;
+ // The following are EDNS extended rcodes
+ NS_R_BADVERS = 16;
+ // The following are TSIG errors
+ // NS_R_BADSIG = 16,
+ NS_R_BADKEY = 17;
+ NS_R_BADTIME = 18;
+ NS_R_INTERNAL_ERROR = 254;
+ NS_R_TIMEOUT = 255;
+}
+
+// Currently defined type values for resources and queries.
+enum NsType {
+ NS_T_INVALID = 0; // Cookie.
+ NS_T_A = 1; // Host address.
+ NS_T_NS = 2; // Authoritative server.
+ NS_T_MD = 3; // Mail destination.
+ NS_T_MF = 4; // Mail forwarder.
+ NS_T_CNAME = 5; // Canonical name.
+ NS_T_SOA = 6; // Start of authority zone.
+ NS_T_MB = 7; // Mailbox domain name.
+ NS_T_MG = 8; // Mail group member.
+ NS_T_MR = 9; // Mail rename name.
+ NS_T_NULL = 10; // Null resource record.
+ NS_T_WKS = 11; // Well known service.
+ NS_T_PTR = 12; // Domain name pointer.
+ NS_T_HINFO = 13; // Host information.
+ NS_T_MINFO = 14; // Mailbox information.
+ NS_T_MX = 15; // Mail routing information.
+ NS_T_TXT = 16; // Text strings.
+ NS_T_RP = 17; // Responsible person.
+ NS_T_AFSDB = 18; // AFS cell database.
+ NS_T_X25 = 19; // X_25 calling address.
+ NS_T_ISDN = 20; // ISDN calling address.
+ NS_T_RT = 21; // Router.
+ NS_T_NSAP = 22; // NSAP address.
+ NS_T_NSAP_PTR = 23; // Reverse NSAP lookup (deprecated).
+ NS_T_SIG = 24; // Security signature.
+ NS_T_KEY = 25; // Security key.
+ NS_T_PX = 26; // X.400 mail mapping.
+ NS_T_GPOS = 27; // Geographical position (withdrawn).
+ NS_T_AAAA = 28; // IPv6 Address.
+ NS_T_LOC = 29; // Location Information.
+ NS_T_NXT = 30; // Next domain (security).
+ NS_T_EID = 31; // Endpoint identifier.
+ NS_T_NIMLOC = 32; // Nimrod Locator.
+ NS_T_SRV = 33; // Server Selection.
+ NS_T_ATMA = 34; // ATM Address
+ NS_T_NAPTR = 35; // Naming Authority PoinTeR
+ NS_T_KX = 36; // Key Exchange
+ NS_T_CERT = 37; // Certification record
+ NS_T_A6 = 38; // IPv6 address (experimental)
+ NS_T_DNAME = 39; // Non-terminal DNAME
+ NS_T_SINK = 40; // Kitchen sink (experimentatl)
+ NS_T_OPT = 41; // EDNS0 option (meta-RR)
+ NS_T_APL = 42; // Address prefix list (RFC 3123)
+ NS_T_DS = 43; // Delegation Signer
+ NS_T_SSHFP = 44; // SSH Fingerprint
+ NS_T_IPSECKEY = 45; // IPSEC Key
+ NS_T_RRSIG = 46; // RRset Signature
+ NS_T_NSEC = 47; // Negative security
+ NS_T_DNSKEY = 48; // DNS Key
+ NS_T_DHCID = 49; // Dynamic host configuratin identifier
+ NS_T_NSEC3 = 50; // Negative security type 3
+ NS_T_NSEC3PARAM = 51; // Negative security type 3 parameters
+ NS_T_HIP = 55; // Host Identity Protocol
+ NS_T_SPF = 99; // Sender Policy Framework
+ NS_T_TKEY = 249; // Transaction key
+ NS_T_TSIG = 250; // Transaction signature.
+ NS_T_IXFR = 251; // Incremental zone transfer.
+ NS_T_AXFR = 252; // Transfer zone of authority.
+ NS_T_MAILB = 253; // Transfer mailbox records.
+ NS_T_MAILA = 254; // Transfer mail agent records.
+ NS_T_ANY = 255; // Wildcard match.
+ NS_T_ZXFR = 256; // BIND-specific, nonstandard.
+ NS_T_DLV = 32769; // DNSSEC look-aside validatation.
+ NS_T_MAX = 65536;
+}
+
+enum IpVersion {
+ IV_UNKNOWN = 0;
+ IV_IPV4 = 1;
+ IV_IPV6 = 2;
+}
+
+enum Protocol {
+ PROTO_UNKNOWN = 0;
+ PROTO_UDP = 1;
+ PROTO_TCP = 2;
+ PROTO_DOT = 3;
+}
+
+enum PrivateDnsModes {
+ PDM_UNKNOWN = 0;
+ PDM_OFF = 1;
+ PDM_OPPORTUNISTIC = 2;
+ PDM_STRICT = 3;
+}
+
+enum NetworkType {
+ NT_UNKNOWN = 0;
+ // Indicates this network uses a Cellular transport.
+ NT_CELLULAR = 1;
+ // Indicates this network uses a Wi-Fi transport.
+ NT_WIFI = 2;
+ // Indicates this network uses a Bluetooth transport.
+ NT_BLUETOOTH = 3;
+ // Indicates this network uses an Ethernet transport.
+ NT_ETHERNET = 4;
+ // Indicates this network uses a VPN transport.
+ NT_VPN = 5;
+ // Indicates this network uses a Wi-Fi Aware transport.
+ NT_WIFI_AWARE = 6;
+ // Indicates this network uses a LoWPAN transport.
+ NT_LOWPAN = 7;
+}
+
+enum CacheStatus{
+ // the cache can't handle that kind of queries.
+ // or the answer buffer is too small.
+ CS_UNSUPPORTED = 0;
+ // the cache doesn't know about this query.
+ CS_NOTFOUND = 1;
+ // the cache found the answer.
+ CS_FOUND = 2;
+ // Don't do anything on cache.
+ CS_SKIP = 3;
+}
+
+message DnsQueryEvent {
+ optional android.stats.dnsresolver.NsRcode rcode = 1;
+
+ optional android.stats.dnsresolver.NsType type = 2;
+
+ optional android.stats.dnsresolver.CacheStatus cache_hit = 3;
+
+ optional android.stats.dnsresolver.IpVersion ip_version = 4;
+
+ optional android.stats.dnsresolver.Protocol protocol = 5;
+
+ // Number of DNS query retry times
+ optional int32 retry_times = 6;
+
+ // Ordinal number of name server.
+ optional int32 dns_server_index = 7;
+
+ // Used only by TCP and DOT. True for new connections.
+ optional bool connected = 8;
+
+ optional int32 latency_micros = 9;
+}
+
+message DnsQueryEvents {
+ repeated DnsQueryEvent dns_query_event = 1;
+}
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index f0cfc278834733646fb0b37028bfc95eecae5835..ce290d15f3550daa289d4b94aa04d96624a2a249 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -759,7 +759,7 @@
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
@hide Pending API council approval -->
@@ -884,7 +884,7 @@
targetSdkVersion} is 4 or higher.
This is a soft restricted permission which cannot be held by an app it its
- full form until the installer on record did not whitelist the permission.
+ full form until the installer on record whitelists the permission.
Specifically, if the permission is whitelisted the holder app can access
external storage and the visual and aural media collections while if the
permission is not whitelisted the holder app can only access to the visual
@@ -892,7 +892,7 @@
meaning that the whitelist state can be specified only at install time and
cannot change until the app is installed. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
- -->
+
Protection level: dangerous -->
Is this permission is not whitelisted for an app that targets an API level before
+
If this permission is not whitelisted for an app that targets an API level before
{@link android.os.Build.VERSION_CODES#Q} this permission cannot be granted to apps.
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
-->
Protection level: dangerous
This is a hard restricted permission which cannot be held by an app until
- the installer on record did not whitelist the permission. For more details see
+ the installer on record whitelists the permission. For more details see
{@link android.content.pm.PackageInstaller.SessionParams#setWhitelistedRestrictedPermissions(Set)}.
@deprecated Applications should use {@link android.telecom.CallRedirectionService} instead
@@ -1749,7 +1751,7 @@
+
Not for use by third-party applications. -->
@@ -2599,7 +2601,8 @@
android:protectionLevel="signature" />
+ as locale.
+
Protection level: signature|privileged|development -->
@@ -2898,7 +2901,8 @@
-
+
@@ -3477,7 +3481,8 @@
android:protectionLevel="signature" />
+ but signals for us to quietly ignore calls instead of throwing an exception.
+
Protection level: signature|privileged -->
@@ -3835,7 +3840,8 @@
+ device can grant permission through the Settings application.
+
Protection level: normal -->
-
+
@@ -3895,7 +3901,8 @@
android:protectionLevel="signature" />
+ to ensure that only the system can bind to it.
+
Protection level: signature|privileged -->
@@ -3937,7 +3944,8 @@
to the path in the provider where global search queries are
performed. This permission can not be held by regular applications;
it is used by applications to protect themselves from everyone else
- besides global search. -->
+ besides global search.
+
Protection level: normal -->
diff --git a/core/res/res/anim/lock_in.xml b/core/res/res/anim/lock_in.xml
deleted file mode 100644
index c7014e80d33ec236078e44b0147ad1bc23cb2e6c..0000000000000000000000000000000000000000
--- a/core/res/res/anim/lock_in.xml
+++ /dev/null
@@ -1,227 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/core/res/res/anim/lock_screen_behind_enter_subtle.xml b/core/res/res/anim/lock_screen_behind_enter_subtle.xml
new file mode 100644
index 0000000000000000000000000000000000000000..f9f69b12514c47beed7bc5dc5c00085457fc04fc
--- /dev/null
+++ b/core/res/res/anim/lock_screen_behind_enter_subtle.xml
@@ -0,0 +1,33 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/res/res/drawable/ic_audio_alarm.xml b/core/res/res/drawable/ic_audio_alarm.xml
index 96206ea3ce57be8e098d29cdb5a217ae62a34323..93f9f8f99cdc714c2a1695ac08a00cd4424656ea 100644
--- a/core/res/res/drawable/ic_audio_alarm.xml
+++ b/core/res/res/drawable/ic_audio_alarm.xml
@@ -14,8 +14,8 @@ Copyright (C) 2014 The Android Open Source Project
limitations under the License.
-->
diff --git a/core/res/res/drawable/ic_audio_alarm_mute.xml b/core/res/res/drawable/ic_audio_alarm_mute.xml
index 7f248c3b33e6be9c044d61ce77dd92f9510e3203..510a7c630fd2e999b586dd37a4b2c203c5688aac 100644
--- a/core/res/res/drawable/ic_audio_alarm_mute.xml
+++ b/core/res/res/drawable/ic_audio_alarm_mute.xml
@@ -14,8 +14,8 @@ Copyright (C) 2014 The Android Open Source Project
limitations under the License.
-->
diff --git a/core/res/res/drawable/ic_battery_80_24dp.xml b/core/res/res/drawable/ic_battery_80_24dp.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2513d0d6d6153fd82d929c715626058431b39b7e
--- /dev/null
+++ b/core/res/res/drawable/ic_battery_80_24dp.xml
@@ -0,0 +1,28 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/res/res/drawable/ic_bluetooth_share_icon.xml b/core/res/res/drawable/ic_bluetooth_share_icon.xml
index 2152af55d5b6acb3a3ee41628ce310dfa46a1bdf..6acfd57e669f12171d8e99207fde16f07bb5957b 100644
--- a/core/res/res/drawable/ic_bluetooth_share_icon.xml
+++ b/core/res/res/drawable/ic_bluetooth_share_icon.xml
@@ -19,7 +19,7 @@
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
- android:tint="@android:color/accent_device_default_light">
+ android:tint="@*android:color/accent_device_default_light">
diff --git a/core/res/res/drawable/ic_file_copy.xml b/core/res/res/drawable/ic_file_copy.xml
index b6d5e7328c404cd26bc232360532ce0329ed9de1..d05b55f1279fa3513b3569fd069224a2f148c133 100644
--- a/core/res/res/drawable/ic_file_copy.xml
+++ b/core/res/res/drawable/ic_file_copy.xml
@@ -16,9 +16,10 @@
+ android:fillColor="@android:color/white"/>
diff --git a/core/res/res/drawable/ic_qs_auto_rotate.xml b/core/res/res/drawable/ic_qs_auto_rotate.xml
index 47e1059fab44fb669a6a9b5bb35c24fa93116422..8858e2b778bb7392c4ab3303796b993fbed23f53 100644
--- a/core/res/res/drawable/ic_qs_auto_rotate.xml
+++ b/core/res/res/drawable/ic_qs_auto_rotate.xml
@@ -16,8 +16,8 @@
-->
diff --git a/core/res/res/drawable/ic_qs_flashlight.xml b/core/res/res/drawable/ic_qs_flashlight.xml
index e63595300d5f691ac5b2d22b1dcd74ad5a5c8e6c..59b0ccd493dd710eca9d06a68c5c15118056a5f7 100644
--- a/core/res/res/drawable/ic_qs_flashlight.xml
+++ b/core/res/res/drawable/ic_qs_flashlight.xml
@@ -15,8 +15,8 @@
limitations under the License.
-->
-
\ No newline at end of file
+
diff --git a/core/res/res/drawable/perm_group_activity_recognition.xml b/core/res/res/drawable/perm_group_activity_recognition.xml
index 0ade6c67417146f474659bac8af5707cb86d73e5..ef025acbcb0c1a3a6249e382bd9fb34b6b06c993 100644
--- a/core/res/res/drawable/perm_group_activity_recognition.xml
+++ b/core/res/res/drawable/perm_group_activity_recognition.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_aural.xml b/core/res/res/drawable/perm_group_aural.xml
index b2737f24b86e6705d7c712df4523fff1815cf546..4b4c62cb73b68f05f4a3e290ac54be9b7cfadc76 100644
--- a/core/res/res/drawable/perm_group_aural.xml
+++ b/core/res/res/drawable/perm_group_aural.xml
@@ -16,6 +16,7 @@ Copyright (C) 2015 The Android Open Source Project
-
-
\ No newline at end of file
+
diff --git a/core/res/res/drawable/perm_group_call_log.xml b/core/res/res/drawable/perm_group_call_log.xml
index 0dfdbee4e600c3dafef7d3ad87619e1b4adefdd3..a37ed88bebfcfe42733c20a9b98e32d641d0841d 100644
--- a/core/res/res/drawable/perm_group_call_log.xml
+++ b/core/res/res/drawable/perm_group_call_log.xml
@@ -18,6 +18,7 @@
diff --git a/core/res/res/drawable/perm_group_contacts.xml b/core/res/res/drawable/perm_group_contacts.xml
index b834a27bac4b0dd1948f3cf8158f79d9f5e8d351..dd6ae210181f53ee706edc8a1cd2d43b8bcefc13 100644
--- a/core/res/res/drawable/perm_group_contacts.xml
+++ b/core/res/res/drawable/perm_group_contacts.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_location.xml b/core/res/res/drawable/perm_group_location.xml
index a7fa52471ab4183b0fe50dd9e9a60c19d6296ffd..a87fc0dc43df83076a913d59e3f626b6f0203109 100644
--- a/core/res/res/drawable/perm_group_location.xml
+++ b/core/res/res/drawable/perm_group_location.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_microphone.xml b/core/res/res/drawable/perm_group_microphone.xml
index 9b532c1a73768ea4618e2b22e8cc74e6ea74b638..a1ed72510cf899389ddb80bf4cc5b7480b93141f 100644
--- a/core/res/res/drawable/perm_group_microphone.xml
+++ b/core/res/res/drawable/perm_group_microphone.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_phone_calls.xml b/core/res/res/drawable/perm_group_phone_calls.xml
index 324d8649270342c3cf1fe43c08d36a62f0da1420..563222698b46ddf861984e1368ce433ed9b07766 100644
--- a/core/res/res/drawable/perm_group_phone_calls.xml
+++ b/core/res/res/drawable/perm_group_phone_calls.xml
@@ -17,6 +17,7 @@
-
\ No newline at end of file
+
diff --git a/core/res/res/drawable/perm_group_sensors.xml b/core/res/res/drawable/perm_group_sensors.xml
index e4663d7206fc84710f7af173adf49c632d066cbd..f800965b6058f2ac5135b42a39bd7ea916a12589 100644
--- a/core/res/res/drawable/perm_group_sensors.xml
+++ b/core/res/res/drawable/perm_group_sensors.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_storage.xml b/core/res/res/drawable/perm_group_storage.xml
index 4b8965bd9ef849bce33416cbfd4beff1b4a715cb..fceda2b84885efd4d280e65ce36cc17ff1556866 100644
--- a/core/res/res/drawable/perm_group_storage.xml
+++ b/core/res/res/drawable/perm_group_storage.xml
@@ -17,6 +17,7 @@
diff --git a/core/res/res/drawable/perm_group_visual.xml b/core/res/res/drawable/perm_group_visual.xml
index 9b21c279e30a478b7516fdaca1992244deec2da0..bf3edea741993a0b172fb1a8cff6a014b02ac9e7 100644
--- a/core/res/res/drawable/perm_group_visual.xml
+++ b/core/res/res/drawable/perm_group_visual.xml
@@ -16,11 +16,10 @@ Copyright (C) 2015 The Android Open Source Project
-
diff --git a/core/res/res/layout/notification_template_material_media.xml b/core/res/res/layout/notification_template_material_media.xml
index 13fef67c5e2f2485697ca9c6216d2d1b9d169414..575295b1be45924ac314b58fa5d958a190da622c 100644
--- a/core/res/res/layout/notification_template_material_media.xml
+++ b/core/res/res/layout/notification_template_material_media.xml
@@ -15,7 +15,7 @@
~ limitations under the License
-->
-
-
+
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 13b2ad8e70865d10476be99cbc962657081e0795..cf1abff79bd22470866c30253caaa2e1c395281a 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -95,6 +95,7 @@
"Stemboodskappe""Wi-Fi-oproepe""SIM-status"
+ "Hoëprioriteit-SIM-status""Ander party het TTY-modus VOL versoek""Ander party het TTY-modus GOD versoek""Ander party het TTY-modus SOD versoek"
@@ -550,11 +551,11 @@
"Vingerafdrukikoon"
- "bestuur gesigstawinghardeware"
+ "bestuur gesigslothardeware""Laat program toe om metodes te benut om gesigtemplate vir gebruik by te voeg en uit te vee."
- "gebruik gesigstawinghardeware"
- "Laat die program toe om gesigstawinghardeware vir stawing te gebruik"
- "Gesigstawing"
+ "gebruik gesigslothardeware"
+ "Laat die program toe om gesigslothardeware vir stawing te gebruik"
+ "Gesigslot""Skryf jou gesig weer in""Skryf asseblief jou gesig weer in om herkenning te verbeter""Kon nie gesigdata akkuraat vasvang nie. Probeer weer."
@@ -567,7 +568,7 @@
"Beweeg foon na links.""Beweeg foon na regs.""Kyk asseblief meer reguit na jou toestel."
- "Kan nie jou gesig sien nie. Kyk na die foon."
+ "Posisioneer jou gesig direk voor die foon.""Te veel beweging. Hou foon stil.""Skryf jou gesig asseblief weer in.""Kan nie meer gesig herken nie. Probeer weer."
@@ -576,19 +577,19 @@
"Draai jou kop \'n bietjie minder.""Draai jou kop \'n bietjie minder.""Verwyder enigiets wat jou gesig versteek."
- "Maak die sensor op die skerm se borand skoon."
+ "Maak die bokant van jou skerm skoon, insluitend die swart balk""Kan nie gesig verifieer nie. Hardeware nie beskikbaar nie."
- "Probeer gesigstawing weer."
+ "Probeer gesigslot weer.""Kan nie nuwe gesigdata berg nie. Vee eers \'n ou een uit."
- "Gesighandeling is gekanselleer"
- "Gesigstawing is deur gebruiker gekanselleer"
+ "Gesighandeling is gekanselleer."
+ "Gebruiker het gesigslot gekanselleer.""Te veel pogings. Probeer later weer."
- "Te veel pogings. Gesigstawing is gedeaktiveer."
+ "Te veel pogings. Gesigslot is gedeaktiveer.""Kan nie gesig verifieer nie. Probeer weer."
- "Jy het nie gesigstawing opgestel nie"
- "Gesigstawing word nie op hierdie toestel gesteun nie"
+ "Jy het nie gesigslot opgestel nie."
+ "Gesigslot word nie op hierdie toestel gesteun nie.""Gesig %d"
@@ -1254,10 +1255,10 @@
"Tik om alle netwerke te sien""Koppel""Alle netwerke"
- "Koppel aan Wi-Fi-netwerke?"
- "Voorgestel deur %s"
- "Ja"
- "Nee"
+ "Laat voorgestelde Wi‑Fi-netwerke toe?"
+ "Netwerke wat deur %s voorgestel is. Toestel sal dalk outomaties koppel."
+ "Laat toe"
+ "Nee, dankie""Wi-Fi sal outomaties aanskakel""Wanneer jy naby \'n gestoorde hoëgehaltenetwerk is""Moenie weer aanskakel nie"
@@ -1887,8 +1888,8 @@
"Ongekategoriseer""Jy stel die belangrikheid van hierdie kennisgewings.""Dit is belangrik as gevolg van die mense wat betrokke is."
- "Laat %1$s toe om \'n nuwe gebruiker met %2$s te skep?"
- "Laat %1$s toe om \'n nuwe gebruiker met %2$s te skep (\'n gebruiker met hierdie rekening bestaan reeds)?"
+ "Laat %1$s toe om \'n nuwe gebruiker met %2$s te skep (\'n gebruiker met hierdie rekening bestaan reeds)?"
+ "Laat %1$s toe om \'n nuwe gebruiker met %2$s te skep?""Voeg \'n taal by""Streekvoorkeur""Voer taalnaam in"
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 3ad8263f6ae58d372ed844758a170769a8bc56a6..bce5e053eb44f16fd81b0c02b95e2a1ed27f657f 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -95,6 +95,7 @@
"የድምጽ መልዕክቶች""የWi-Fi ጥሪ""የሲም ሁኔታ"
+ "ከፍተኛ ቅድሚያ ተሰጪ የሲም ኹናቴ""ቢጤ መልዕክት መጻጻፊያ ስልክ ሁነታ FULL ጠይቋል""ቢጤ መልዕክት መጻጻፊያ ስልክ ሁነታ HCO ጠይቋል""ቢጤ መልዕክት መጻጻፊያ ስልክ ሁነታ VCO ጠይቋል"
@@ -550,11 +551,11 @@
"የጣት አሻራ አዶ"
- "የማረጋገጫ ሃርድዌር ፊትን ያስተዳድሩ"
+ "በመልክ መክፈቻ ሃርድዌርን ማስተዳደር""መተግበሪያው ጥቅም ላይ እንዲውሉ የፊት ቅንብር ደንቦችን ለማከል እና ለመሰረዝ የሚያስችሉ ስልቶችን እንዲያስጀምር ያስችለዋል።"
- "የፊት ማረጋገጫ ሃርድዌር ይጠቀሙ"
- "መተግበሪያው የማረጋገጫ ሃርድዌር ለማረጋገጥ ሥራ እንዲጠቀም ያስችለዋል"
- "በመልክ ማረጋገጥ"
+ "በመልክ መክፈት ሃርድዌርን መጠቀም"
+ "መተግበሪያው የመልክ መክፈቻ ሃርድዌርን ለማረጋገጥ እንዲጠቀም ያስችለዋል"
+ "በመልክ መክፈት""የእርስዎን ፊት ዳግመኛ ያስመዝግቡ""ማንነትን ለይቶ ማወቅን ለማሻሻል፣ እባክዎ የእርስዎን ፊት ዳግም ያስመዝግቡ""ትክክለኛ የፊት ውሂብ ማንሳት አልተቻለም። እንደገና ይሞክሩ።"
@@ -567,7 +568,7 @@
"ስልክን ወደ ግራ ያንቀሳቅሱ።""ስልክን ወደ ቀኝ ያንቀሳቅሱ።""እባክዎ መሣሪያዎን ይበልጥ በቀጥታ ይመልከቱ።"
- "የእርስዎን ፊት መመልከት አይችልም። ስልኩ ላይ ይመልከቱ።"
+ "መልክዎን በቀጥታ ከስልኩ ፊት ያድርጉት።""ከልክ በላይ ብዙ እንቅስቃሴ። ስልኩን ቀጥ አድርገው ይያዙት።""እባክዎ ፊትዎን እንደገና ያስመዝግቡ""ከእንግዲህ ፊትን ለይቶ ማወቅ አይችልም። እንደገና ይሞክሩ።"
@@ -576,19 +577,19 @@
"ጭንቅላትዎን ትንሽ ብቻ ያዙሩት።""ጭንቅላትዎን ትንሽ ብቻ ያዙሩት።""የእርስዎን ፊት የሚደብቀውን ሁሉንም ነገር በማስወገድ ላይ"
- "በማያ ገጹ ላይኛው ጫፍ ላይ ዳሳሹን ያጽዱ።"
+ "የማያ ገጽዎን አናት ያጽዱት፣ ጥቁር አሞሌውን ጨምሮ""መልክን ማረጋገጥ አይቻልም። ሃርድዌር የለም።"
- "በመልክ ማረጋገጥን እንደገና ይሞክሩ።"
+ "በመልክ መክፈትን እንደገና ይሞክሩ።""አዲስ የመልክ ውውሂብ ማስቀመጥ አልተቻለም። መጀመሪያ የድሮውን ይሰርዙት።"
- "የመልክ ክወና ተሰርዟል"
- "መልክን ማረጋገጥ በተጠቃሚ ተሰርዟል"
+ "የፊት ሥርዓተ ክወና ተሰርዟል።"
+ "በመልክ መክፈት በተጠቃሚ ተሰርዟል።""ከልክ በላይ ብዙ ሙከራዎች። በኋላ ላይ እንደገና ይሞክሩ።"
- "በጣም ብዙ ሙከራዎች። የመልክ ማረጋገጫ ተሰናክሏል።"
+ "በጣም ብዙ ሙከራዎች። በመልክ መክፈት ተሰናክሏል።""ፊትን ማረጋገጥ አይቻልም። እንደገና ይሞክሩ።"
- "የመልክ ማረጋገጫን አላቀናበሩም"
- "የመልክ ማረጋገጫ መስጫ በዚህ መሣሪያ ላይ አይደገፍም።"
+ "በመልክ መክፈትን አላቀናበሩም።"
+ "በመልክ መክፈት መስጫ በዚህ መሣሪያ ላይ አይደገፍም።""ፊት %d"
@@ -1254,10 +1255,10 @@
"ሁሉንም አውታረ መረቦችን ለማየት መታ ያድርጉ""አገናኝ""ሁሉም አውታረ መረቦች"
- "ከWi-Fi አውታረ መረቦች ጋር ይገናኝ?"
- "በ%s የተጠቆሙ"
- "አዎ"
- "አይ"
+ "የተጠቆሙ የWi‑Fi አውታረ መረቦች ይፈቀዱ?"
+ "በ%s የተጠቆሙ አውታረ መረቦች። መሣሪያ በራስ-ሰር ሊገናኝ ይችላል።"
+ "ፍቀድ"
+ "አይ፣ አመሰግናለሁ""Wi‑Fi በራስ-ሰር ይበራል""ከፍተኛ ጥራት ያለው የተቀመጠ አውታረ መረብ አቅራቢያ ሲሆኑ""መልሰህ አታብራ"
@@ -1887,8 +1888,8 @@
"ያልተመደቡ""የእነዚህን ማሳወቂያዎች አስፈላጊነት አዘጋጅተዋል።""ይሄ በሚሳተፉ ሰዎች ምክንያት አስፈላጊ ነው።"
- "%1$s በ%2$s አዲስ ተጠቃሚ እንዲፈጥር ይፈቀድለት?"
- "%1$s በ%2$s አዲስ ተጠቃሚ እንዲፈጥር ይፈቀድለት (ይህ መለያ ያለው ተጠቃሚ አስቀድሞ አለ)?"
+ "%1$s በ%2$s አዲስ ተጠቃሚ እንዲፈጥር ይፈቀድለት (ይህ መለያ ያለው ተጠቃሚ አስቀድሞ አለ)?"
+ "%1$s አዲስ ተጠቃሚ ከ %2$s ጋር መፍጠር እንዲችል ይፍቀዱ?""ቋንቋ ያክሉ""የክልል ምርጫ""የቋንቋ ስም ይተይቡ"
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 45031746ca2a1343149cb1802df8ee783b532cdf..9ead8caee202107f2e149823faa47dde17169f5a 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -99,6 +99,7 @@
"رسائل البريد الصوتي""الاتصال عبر Wi-Fi""حالة شريحة SIM"
+ "حالة شريحة SIM ذات أولوية""طلب النظير وضع TTY الكامل""طلب النظير وضع TTY على HCO""طلب النظير وضع TTY على VCO"
@@ -470,7 +471,7 @@
"للسماح للتطبيق باستخدام مرسل الأشعة تحت الحمراء الخاص بالجهاز اللوحي.""يتيح للتطبيق استخدام مرسل الأشعة تحت الحمراء في جهاز التلفزيون.""للسماح للتطبيق باستخدام مرسل الأشعة تحت الحمراء الخاص بالهاتف."
- "تعيين الخلفية"
+ "ضبط الخلفية""للسماح للتطبيق بتعيين خلفية النظام.""تعديل حجم الخلفية""للسماح للتطبيق بتعيين تلميحات حجم خلفية النظام."
@@ -532,7 +533,7 @@
"للسماح للتطبيق بتعديل مجموعة صورك.""قراءة المواقع من مجموعة الوسائط التابعة لك""للسماح للتطبيق بقراءة المواقع من مجموعة الوسائط التابعة لك."
- "التحقق من هويتك"
+ "إثبات هويتك""معدّات المقاييس الحيوية غير متاحة.""تم إلغاء المصادقة.""لم يتم التعرف عليها."
@@ -562,11 +563,11 @@
"رمز بصمة الإصبع"
- "إدارة أجهزة مصادقة الوجه"
+ "إدارة أجهزة \"فتح القفل بالوجه\"""السماح للتطبيق باستدعاء طرق لإضافة نماذج من الوجوه وحذفها"
- "استخدام أجهزة مصادقة الوجه"
- "السماح للتطبيق باستخدام أجهزة مصادقة الوجه"
- "المصادقة بالوجه"
+ "استخدام أجهزة \"فتح القفل بالوجه\""
+ "السماح للتطبيق باستخدام أجهزة \"فتح القفل بالوجه\" لإجراء المصادقة"
+ "فتح القفل بالوجه""إعادة تسجيل وجهك""لتحسين قدرة الجهاز على معرفة وجهك، يُرجى إعادة تسجيل الوجه.""تعذّر تسجيل بيانات دقيقة للوجه. حاول مرة أخرى."
@@ -579,7 +580,7 @@
"يُرجى نقل الهاتف إلى اليمين.""يُرجى نقل الهاتف إلى اليسار.""يُرجى النظر إلى جهازك مباشرة أكثر."
- "يتعذّر رؤية وجهك. يُرجى النظر إلى الهاتف."
+ "ضع وجهك أمام الهاتف مباشرة.""حركة أكثر من اللازم يُرجى حمل بدون حركة.""يُرجى إعادة تسجيل وجهك.""لم يعُد يمكن التعرّف على الوجه. حاول مرة أخرى."
@@ -588,19 +589,19 @@
"حرّك رأسك قليلاً نحو الأمام مباشرة.""حرّك رأسك قليلاً نحو الوسط.""عليك بإزالة أي شيء يُخفي وجهك."
- "نظِّف المستشعر أعلى الشاشة."
+ "يُرجى تنظيف الجزء العلوي من الشاشة، بما في ذلك الشريط الأسود.""يتعذّر التحقُّق من الوجه. الجهاز غير مُتاح."
- "جرِّب مصادقة الوجه مرة أخرى."
+ "حاول استخدام \"فتح القفل بالوجه\" مرة أخرى.""يتعذَّر تخزين بيانات الوجه الجديد. احذف الوجه القديم أولاً."
- "تم إلغاء عملية مصادقة الوجه."
- "ألغَى المستخدم مصادقة الوجه."
+ "تمّ إلغاء عملية مصادقة الوجه."
+ "ألغى المستخدم \"فتح القفل بالوجه\".""تمّ إجراء محاولات كثيرة. أعِد المحاولة لاحقًا."
- "محاولات كثيرة جدًا. تم إيقاف مصادقة الوجه."
+ "تم إجراء عدد كبير جدًا من المحاولات. وتم إيقاف \"فتح القفل بالوجه\".""يتعذّر التحقق من الوجه. حاول مرة أخرى."
- "لم يسبق لك إعداد مصادقة الوجه."
- "لا تتوفّر إمكانية مصادقة الوجه على هذا الجهاز."
+ "لم يسبق لك إعداد \"فتح القفل بالوجه\"."
+ "\"فتح القفل بالوجه\" غير متوفر على هذا الجهاز.""الوجه %d"
@@ -1342,10 +1343,10 @@
"انقر للاطلاع على جميع الشبكات""اتصال""جميع الشبكات"
- "هل تريد الاتصال بشبكات Wi-Fi؟"
- "اقتراح من %s"
- "نعم"
- "لا"
+ "هل تريد السماح لشبكات Wi‑Fi المقترحة؟"
+ "شبكات %s المقترحة - قد يتم توصيل الجهاز تلقائيًا."
+ "سماح"
+ "لا، شكرًا""سيتم تشغيل شبكة Wi-Fi تلقائيًا.""عندما تكون بالقرب من شبكة محفوظة عالية الجودة""عدم إعادة التشغيل"
@@ -1676,7 +1677,7 @@
"جارٍ الإرسال...""تشغيل المتصفح؟""هل تريد قبول المكالمة؟"
- "دومًا"
+ "دائمًا""ضبط على الفتح دائمًا""مرة واحدة فقط""الإعدادات"
@@ -2023,8 +2024,8 @@
"غير مصنفة""لقد عيَّنت أهمية هذه الإشعارات.""هذه الرسالة مهمة نظرًا لأهمية الأشخاص المعنيين."
- "هل تسمح لـ %1$s بإنشاء مستخدم جديد باستخدام %2$s؟"
- "هل تسمح لـ %1$s بإنشاء مستخدم جديد باستخدام %2$s (يوجد مستخدم بهذا الحساب مسبقًا)؟"
+ "هل تسمح لتطبيق %1$s بإنشاء مستخدم جديد باستخدام %2$s (يوجد مستخدم بهذا الحساب مسبقًا)؟"
+ "هل تسمح لتطبيق %1$s بإنشاء مستخدم جديد باستخدام %2$s ؟""إضافة لغة""تفضيل المنطقة""اكتب اسم اللغة"
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index fe08ba3d339bbd84e27d35d09cd9d2ed9b74c372..34e020efd33ee692c35a0dc554930099ad7c45f9 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -95,6 +95,7 @@
"ভইচমেইলৰ বাৰ্তাসমূহ""ৱাই-ফাই কলিং""ছিমৰ স্থিতি"
+ "উচ্চ অগ্ৰাধিকাৰযুক্ত ছিমৰ স্থিতি""নেটৱৰ্ক পীয়েৰে TTY ম\'ড FULLলৈ সলনি কৰিবলৈ অনুৰোধ কৰিছে""নেটৱৰ্ক পীয়েৰে TTY ম\'ড HCOলৈ সলনি কৰিবলৈ অনুৰোধ কৰিছে""নেটৱৰ্ক পীয়েৰে TTY ম\'ড VCO লৈ সলনি কৰিবলৈ অনুৰোধ কৰিছে"
@@ -550,11 +551,11 @@
"ফিংগাৰপ্ৰিণ্ট আইকন"
- "মুখমণ্ডল সত্যাপন হাৰ্ডৱেৰ পৰিচালনা কৰক"
+ "মুখাৱয়বৰদ্বাৰা আনলক হার্ডৱেৰ পৰিচালনা কৰক""মুখমণ্ডলৰ টেম্প্লেট যোগ কৰাৰ বা মচাৰ পদ্ধতি কামত লগাবলৈ আহ্বান কৰিবলৈ এপটোক অনুমতি দিয়ে।"
- "মুখমণ্ডল সত্যাপন হাৰ্ডৱেৰ ব্যৱহাৰ কৰক"
- "বিশ্বাসযোগ্য়তা প্ৰমাণীকৰণৰ বাবে এপক মুখমণ্ডল সত্যাপন হাৰ্ডৱেৰ ব্য়ৱহাৰ কৰিবলৈ অনুমতি দিয়ে"
- "মুখমণ্ডলৰ বিশ্বাসযোগ্যতাৰ প্ৰমাণীকৰণ"
+ "মুখাৱয়বৰদ্বাৰা আনলক হার্ডৱেৰ ব্যৱহাৰ কৰক"
+ "বিশ্বাসযোগ্যতা প্ৰমাণীকৰণৰ বাবে এপ্ক মুখাৱয়বৰদ্বাৰা আনলক কৰা হাৰ্ডৱেৰ ব্যৱহাৰ কৰিবলৈ দিয়ে"
+ "মুখাৱয়বৰদ্বাৰা আনলক কৰা সুবিধা""আপোনাৰ মুখমণ্ডল পুনৰ পঞ্জীয়ণ কৰক""চিনাক্তকৰণৰ সুবিধাটো উন্নত কৰিবলৈ, অনুগ্ৰহ কৰি আপোনাৰ মুখমণ্ডল পুনৰ পঞ্জীয়ন কৰক""সঠিক মুখমণ্ডলৰ ডেটা কেপচাৰ নহ’ল। আকৌ চেষ্টা কৰক।"
@@ -567,7 +568,7 @@
"ফ’নটো বাওঁফালে নিয়ক।""ফ’নটো সোঁফালে নিয়ক।""আপোনাৰ ডিভাইচটোলৈ অধিক পোনে পোনে চাওক।"
- "আপোনাৰ মুখমণ্ডল দেখা নাই। ফ’নটোলৈ চাওক।"
+ "আপোনাৰ মুখখন পোনপটীয়াকৈ ফ’নটোৰ সন্মুখত ৰাখক।""বেছি লৰচৰ কৰি আছে। ফ’নটো স্থিৰকৈ ধৰক।""আপোনাৰ মুখমণ্ডল পুনৰ পঞ্জীয়ন কৰক।""মুখমণ্ডল আৰু চিনাক্ত কৰিব নোৱাৰি। আকৌ চেষ্টা কৰক।"
@@ -576,19 +577,19 @@
"আপোনাৰ মূৰটো সামান্য কমকৈ ঘূৰাওক।""আপোনাৰ মূৰটো সামান্য কমকৈ ঘূৰাওক।""আপোনাৰ মুখখন ঢাকি ৰখা বস্তুবোৰ আঁতৰাওক।"
- "স্ক্ৰীণৰ একেবাৰে ওপৰৰ কাষত থকা ছেন্সৰটো চাফা কৰক।"
+ "ক’লা বাৰডালকে ধৰি আপোনাৰ স্ক্রীণৰ ওপৰৰ অংশ চাফা কৰক""মুখমণ্ডল সত্যাপন কৰিব পৰা নগ’ল। হাৰ্ডৱেৰ নাই।"
- "আকৌ মুখমণ্ডল সত্যাপন কৰিবলৈ চেষ্টা কৰক।"
+ "পুনৰ মুখাৱয়বৰদ্বাৰা আনলক কৰি চাওক।""নতুন মুখমণ্ডলৰ ডেটা জমা কৰিব পৰা নাই। প্ৰথমে পুৰণি এখন মচক।"
- "মুখমণ্ডলৰ প্ৰক্ৰিয়া বাতিল কৰা হ’ল"
- "ব্যৱহাৰকাৰীয়ে মুখমণ্ডল প্ৰমাণীকৰণ বাতিল কৰিছে"
+ "মুখমণ্ডলৰ প্ৰক্ৰিয়া বাতিল কৰা হ’ল।"
+ "ব্যৱহাৰকাৰীয়ে মুখাৱয়বৰদ্বাৰা আনলক কৰাটো বাতিল কৰিছে।""অত্যধিক ভুল প্ৰয়াস। কিছুসময়ৰ পাছত আকৌ চেষ্টা কৰক।"
- "অতি বেছি প্ৰয়াস। মুখমণ্ডল প্ৰমাণীকৰণ অক্ষম কৰা হ’ল।"
+ "অতি বেছি প্ৰয়াস। মুখাৱয়বৰদ্বাৰা আনলক কৰাটো অক্ষম কৰা হৈছে।""মুখমণ্ডল সত্যাপন কৰিব পৰা নগ’ল। আকৌ চেষ্টা কৰক।"
- "আপুনি মুখমণ্ডল প্ৰমাণীকৰণ ছেট আপ কৰা নাই"
- "এই ডিভাইচটোত মুখমণ্ডল প্ৰমাণীকৰণ ব্যৱহাৰ কৰিব নোৱাৰি"
+ "আপুনি মুখাৱয়বৰদ্বাৰা আনলক কৰাটো ছেট আপ কৰা নাই।"
+ "এই ডিভাইচটোত মুখাৱয়বৰদ্বাৰা আনলক কৰা সুবিধাটো নচলে।""মুখমণ্ডল %d"
@@ -1254,10 +1255,10 @@
"সকলো নেটৱৰ্ক চাবলৈ টিপক""সংযোগ কৰক""সকলো নেটৱৰ্ক"
- "ৱাই-ফাই নেটৱৰ্কৰ সৈতে সংযোগ কৰিবনে?"
- "%sএ প্ৰস্তাব দিয়া"
- "হয়"
- "নহয়"
+ "পৰামর্শ হিচাপে পোৱা নেটৱর্কবোৰক অনুমতি দিবনে?"
+ "%sএ পৰামর্শ হিচাপে দিয়া নেটৱর্কবোৰ। ডিভাইচটো স্বয়ংক্ৰিয়ভাৱে সংযোগ হ\'ব পাৰে।"
+ "অনুমতি দিয়ক"
+ "নালাগে, ধন্যবাদ""ৱাই-ফাই স্বয়ংক্ৰিয়ভাৱে অন হ\'ব""যেতিয়া আপুনি ছেভ কৰি থোৱা উচ্চ মানৰ নেটৱৰ্কৰ কাষত থাকে""পুনৰাই অন নকৰিব"
@@ -1887,8 +1888,8 @@
"শ্ৰেণীবদ্ধ নকৰা""এই জাননীবোৰৰ গুৰুত্ব আপুনি ছেট কৰব লাগিব।""এই কার্যৰ সৈতে জড়িত থকা লোকসকলক ভিত্তি কৰি এইয়া গুৰুত্বপূর্ণ বুলি বিবেচনা কৰা হৈছ।"
- "%1$s ক %2$sৰ জৰিয়তে নতুন ব্য়ৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে?"
- "%1$sক %2$sৰ (এই একাউন্টৰ এজন ব্য়ৱহাৰকাৰী ইতিমধ্যে আছে) জৰিয়তে নতুন ব্য়ৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে?"
+ "%1$sক %2$sৰ (এই একাউণ্টটোৰ এজন ব্যৱহাৰকাৰী ইতিমধ্যে আছে) জৰিয়তে এজন নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে ?"
+ "%1$sক %2$sৰ জৰিয়তে এজন নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে?""ভাষা যোগ কৰক""অঞ্চলৰ অগ্ৰাধিকাৰ""ভাষাৰ নাম লিখক"
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 4ac94c1ca20a11a96c034325de372ebb1f64d8f8..66722041575efea601374dc29ef8aee11aae2cd3 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -95,6 +95,7 @@
"Səsli e-poçt mesajları""Wi-Fi zəngi""SIM status"
+ "Yüksək Prioritetli SIM statusu""Eskpert TTY Rejimi FULL-u sorğuladı""Ekspert TTY Rejimi HCO-nu sorğuladı""Ekspert TTY Rejimi VCO-nu sorğuladı"
@@ -550,11 +551,11 @@
"Barmaq izi ikonası"
- "üz identifikasiyası proqramını idarə edin"
+ "üz kilidi avadanlığını idarə edin""Proqramdan istifadə üçün barmaq izi şablonlarını əlavə etmək və silmək məqsədilə üsullara müraciət etməyə imkan verir."
- "üz identifikasiyası proqramından istifadə edin"
- "Tətbiqin üz identifikasiyası proqramından identifikasiya zamanı istifadə etməsinə icazə verir"
- "Üz identifikasiyası"
+ "üz kilidi avadanlığından istifadə edin"
+ "İdentifikasiya üçün tətbiqin üz kilidi avadanlığından istifadə etməsinə icazə verir"
+ "Üz kilidi""Üzünüzü yenidən qeydiyyatdan keçirin""Tanınmanı təkmilləşdirmək üçün üzünüzü yenidən qeydiyyatdan keçirin""Dəqiq üz datası əldə edilmədi. Yenidən cəhd edin."
@@ -567,7 +568,7 @@
"Telefonu sola hərəkət etdirin.""Telefonu sağa hərəkət etdirin.""Birbaşa cihaza baxın."
- "Üzünüz görünmür. Telefona baxın."
+ "Üzünüzü telefonun qarşısında sabit saxlayın.""Cihaz stabil deyil. Telefonu tərpətməyin.""Üzünüzü yenidən qeydiyyatdan keçirin.""Üzü artıq tanımaq olmur. Yenidən cəhd edin."
@@ -576,19 +577,19 @@
"Başınızı bir az döndərin.""Başınızı bir az döndərin.""Üzünüzü gizlədən maneələri kənarlaşdırın."
- "Ekranın yuxarı küncündəki sensoru təmizləyin."
+ "Qara panel daxil olmaqla, ekranın yuxarısını təmizləyin""Üz doğrulanmadı. Avadanlıq əlçatan deyil."
- "Üz identifikasiyasını yenidən sınayın."
+ "Üz kilidini yenidən sınayın.""Yeni üz datası saxlanmadı. Əvvəlcə köhnə olanı silin."
- "Üz əməliyyatı ləğv edildi"
- "Üz dorğulaması istifadəçi tərəfindən ləğv edildi"
+ "Üz əməliyyatı ləğv edildi."
+ "İstifadəçi üz kilidini ləğv edib.""Həddindən çox cəhd. Sonraya saxlayın."
- "Həddindən çox cəhd. Üz doğrulaması deaktiv edildi."
+ "Həddindən çox cəhd. Üz kilidi deaktiv edildi.""Üz doğrulanmadı. Yenidən cəhd edin."
- "Üz doğrulaması quraşdırmamısınız"
- "Üz doğrulaması bu cihazda dəstəklənmir"
+ "Üz kilidi quraşdırmamısınız."
+ "Üz kilidi bu cihazda dəstəklənmir.""Üz %d"
@@ -1254,10 +1255,10 @@
"Bütün şəbəkələri görmək üçün klikləyin""Qoşulun""Bütün şəbəkələr"
- "Wi-Fi şəbəkələrinə qoşulsun?"
- "%s tərəfindən təklif edildi"
- "Bəli"
- "Xeyr"
+ "Təklif edilən Wi‑Fi şəbəkələrinə icazə verilsin?"
+ "%s təklif edilən şəbəkə. Cihaz avtomatik qoşula bilər."
+ "İcazə verin"
+ "Xeyr, təşəkkürlər""Wi‑Fi avtomatik olaraq aktiv ediləcək""Yadda saxlanmış yüksək keyfiyyətli şəbəkələr yaxınlıqda olduqda""Yenidən aktiv etməyin"
@@ -1887,8 +1888,8 @@
"Kateqoriyasız""Bildirişlərin əhəmiyyətini Siz ayarlaryırsınız.""İnsanlar cəlb olunduğu üçün bu vacibdir."
- "%1$s tətbiqinə %2$s hesabı ilə yeni İstifadəçi yaratmağa icazə verilsin?"
- "%1$s tətbiqinə%2$s (bu hesab ilə İstifadəçi artıq mövcuddur) hesabı ilə yeni İstifadəçi yaratmağa icazə verilsin?"
+ "%1$s tətbiqinə %2$s (artıq bu hesabı olan İstifadəçi mövcuddur) ilə yeni İstifadəçi yaratmağa icazə verilsin?"
+ "%1$s tətbiqinə %2$s ilə yeni İstifadəçi yartmağa icazə verilsin?""Dil əlavə edin""Region seçimi""Dil adını daxil edin"
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 3911067ba4f81e6344ff9e84dd9f904c27f70277..f21cabfde1e8739bfcbbcec6304897c38f254c10 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -27,7 +27,7 @@
"TB""PB""%1$s%2$s"
- "<Bez naslova>"
+ "<Bez imena>""(Nema broja telefona)""Nepoznato""Glasovna pošta"
@@ -96,6 +96,7 @@
"Poruke govorne pošte""Pozivanje preko Wi-Fi mreže""Status SIM-a"
+ "Obaveštenja SIM kartice sa statusom „visok prioritet“""Korisnik zahteva POTPUN režim TTY""Korisnik zahteva PRENOS ZVUKA za režim TTY""Korisnik zahteva PRENOS GLASA za režim TTY"
@@ -553,11 +554,11 @@
"Ikona otiska prsta"
- "upravljanje hardv. za potvrdu identiteta pomoću lica"
+ "upravljanje hardv. za otključavanje licem""Dozvoljava da aplikacija aktivira metode za dodavanje i brisanje šablona lica radi korišćenja."
- "korišćenje hardv. za potvrdu identiteta pomoću lica"
- "Dozvoljava da aplikacija koristi hardver za potvrdu identiteta pomoću lica"
- "Potvrda identiteta licem"
+ "korišćenje hardvera za otključavanje licem"
+ "Dozvoljava da aplikacija koristi hardver za otključavanje licem radi potvrde identiteta"
+ "Otključavanje licem""Ponovo registrujte lice""Da biste poboljšali prepoznavanje, ponovo registrujte lice""Snimanje lica nije uspelo. Probajte ponovo."
@@ -570,7 +571,7 @@
"Pomerite telefon ulevo.""Pomerite telefon udesno.""Gledajte pravo u uređaj."
- "Ne vidi se lice. Gledajte u telefon."
+ "Postavite lice direktno ispred telefona""Mnogo se pomerate. Držite telefon mirno.""Ponovo registrujte lice.""Više ne može da se prepozna lice. Probajte ponovo."
@@ -579,19 +580,19 @@
"Malo manje pomerite glavu.""Malo manje pomerite glavu.""Uklonite sve što vam zaklanja lice."
- "Očistite senzor na gornjoj ivici ekrana."
+ "Očistite gornji deo ekrana, uključujući crnu traku""Provera lica nije uspela. Hardver nije dostupan."
- "Probajte ponovo potvrdu identiteta pomoću lica."
+ "Probajte ponovo otključavanje licem.""Novi podaci o licu nisu sačuvani. Prvo izbrišete prethodne."
- "Obrada lica je otkazana"
- "Korisnik je otkazao potvrdu identiteta licem"
+ "Obrada lica je otkazana."
+ "Korisnik je otkazao otključavanje licem""Previše pokušaja. Probajte ponovo kasnije."
- "Previše pokušaja. Potvrda identiteta licem je onemogućena."
+ "Previše pokušaja. Otključavanje licem je onemogućeno.""Provera lica nije uspela. Probajte ponovo."
- "Niste podesili potvrdu identiteta licem"
- "Prepoznavanje lica nije podržano na ovom uređaju"
+ "Niste podesili otključavanje licem"
+ "Otključavanje licem nije podržano na ovom uređaju""Lice %d"
@@ -1276,10 +1277,10 @@
"Dodirnite da biste videli sve mreže""Poveži""Sve mreže"
- "Želite li da se povežete sa Wi-Fi mrežama?"
- "%s predlaže"
- "Da"
- "Ne"
+ "Želite da dozvolite predložene Wi‑Fi mreže?"
+ "Mreže koje predlaže %s. Uređaj će se možda povezati automatski."
+ "Dozvoli"
+ "Ne, hvala""Wi‑Fi će se automatski uključiti""Kada ste u blizini sačuvane mreže visokog kvaliteta""Ne uključuj ponovo"
@@ -1921,8 +1922,8 @@
"Nekategorizovano""Vi podešavate važnost ovih obaveštenja.""Ovo je važno zbog ljudi koji učestvuju."
- "Želite li da dozvolite aplikaciji %1$s da napravi novog korisnika za %2$s?"
- "Želite li da dozvolite aplikaciji %1$s da napravi novog korisnika za %2$s (korisnik sa ovim nalogom već postoji)?"
+ "Želite li da dozvolite da %1$s napravi novog korisnika sa nalogom %2$s (korisnik sa tim nalogom već postoji)?"
+ "Želite li da dozvolite da %1$s napravi novog korisnika sa nalogom %2$s?""Dodajte jezik""Podešavanje regiona""Unesite naziv jezika"
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index e416c4516f9b1d9f0d317fd0ea2f4078ecdeaa9c..918c51fdab4048cb082617f3395117208ebf1a3c 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -97,6 +97,7 @@
"Паведамленні галасавой пошты""Wi-Fi-тэлефанія""Статус SIM-карты"
+ "Стан SIM-карты з высокім прыярытэтам""Аднарангавая прылада запытала рэжым TTY FULL""Аднарангавая прылада запытала рэжым TTY НСО""Аднарангавая прылада запытала рэжым TTY VCO"
@@ -556,11 +557,11 @@
"Значок адбіткаў пальцаў"
- "кіраваць абсталяваннем для распазнавання твару"
+ "кіраваць апаратным забеспячэннем для распазнавання твару""Праграма зможа дадаваць і выдаляць шаблоны твару."
- "карыстацца абсталяваннем для распазнавання твару"
- "Праграма зможа выкарыстоўваць абсталяванне распазнавання твару для аўтэнтыфікацыі"
- "Распазнаванне твару"
+ "выкарыстоўваць апаратнае забеспячэнне для распазнавання твару"
+ "Для аўтэнтыфікацыі праграма зможа ўжываць апаратнае забеспячэнне для распазнавання твару"
+ "Распазнаванне твару""Паўтарыце рэгістрацыю твару""Каб палепшыць распазнавальнасць, яшчэ раз выканайце рэгістрацыю твару""Не атрымалася распазнаць твар. Паўтарыце спробу."
@@ -573,7 +574,7 @@
"Перамясціце тэлефон улева.""Перамясціце тэлефон управа.""Глядзіце прама на экран прылады."
- "Не відаць твару. Глядзіце на тэлефон."
+ "Трымайце тэлефон прама перад тварам.""Трымайце прыладу нерухома. Трымайце тэлефон роўна.""Паўтарыце рэгістрацыю твару.""Не ўдаецца распазнаць твар. Паўтарыце спробу."
@@ -582,19 +583,19 @@
"Галава не ў цэнтры.""Вы занадта моцна павярнулі галаву.""Прыміце ўсё, што закрывае ваш твар."
- "Ачысціце датчык уверсе экрана."
+ "Ачысціце ад бруду верхнюю частку экрана, у тым ліку чорную панэль""Твар не спраўджаны. Абсталяванне недаступнае."
- "Выканайце распазнаванне твару паўторна."
+ "Выканайце распазнаванне твару паўторна.""Новыя даныя пра твар не захаваны. Спачатку выдаліце старыя."
- "Распазнаванне твару скасавана"
- "Распазнаванне твару скасавана карыстальнікам"
+ "Распазнаванне твару скасавана."
+ "Распазнаванне твару скасавана карыстальнікам.""Занадта шмат спроб. Паўтарыце спробу пазней."
- "Занадта шмат спроб. Распазнаванне твару выключана."
+ "Занадта шмат спроб. Распазнаванне твару выключана.""Не ўдалося спраўдзіць твар. Паўтарыце спробу."
- "Вы не наладзілі распазнаванне твару"
- "На гэтай прыладзе распазнаванне твару не падтрымліваецца"
+ "Вы не наладзілі распазнаванне твару."
+ "На гэтай прыладзе распазнаванне твару не падтрымліваецца.""Твар %d"
@@ -839,7 +840,7 @@
"Спыніць""Перамотка назад""Перамотка ўперад"
- "Толькі экстраныя выклікі"
+ "Толькі экстранныя выклікі""Сетка заблакаваная""SIM-карта заблакавана PUK-кодам.""Глядзіце \"Інструкцыю для карыстальніка\" або звяжыцеся са службай тэхнiчнай падтрымкі."
@@ -988,7 +989,7 @@
"Апошні месяц""Раней"
- "дата: %s"
+ "%s""у %s""у %s""дзень"
@@ -1298,10 +1299,10 @@
"Дакраніцеся, каб убачыць усе сеткі""Падключыцца""Усе сеткі"
- "Падключыцца да сетак Wi-Fi?"
- "Прапанавана ўладальнікам %s"
- "Так"
- "Не"
+ "Дазволіць падключэнне да прапанаваных сетак Wi‑Fi?"
+ "Праграма \"%s\" прапанавала сеткі. Прылада можа падключыцца да ніх аўтаматычна."
+ "Дазволіць"
+ "Не, дзякуй""Wi‑Fi уключыцца аўтаматычна""Побач з захаванай сеткай з высакаякасным сігналам""Не ўключаць зноў"
@@ -1386,7 +1387,7 @@
"Дазволу не патрабуецца""за гэта можа спаганяцца плата""ОК"
- "Зарадка гэтай прылады праз USB"
+ "Прылада зараджаецца праз USB""Зарадка падключанай прылады праз USB""Перадача файлаў праз USB""Перадача фота (PTP) праз USB"
@@ -1398,7 +1399,7 @@
"Выяўлены аксесуар аналагавага аўдыя""Далучаная прылада не сумяшчальная з гэтым тэлефонам. Націсніце, каб даведацца больш.""Адладка па USB падключана"
- "Націсніце, каб адключыць адладку па USB"
+ "Націсніце, каб выключыць адладку па USB""Выберыце, каб адключыць адладку USB.""Тэставы рэжым уключаны""Каб выключыць тэставы рэжым, скіньце налады да заводскіх значэнняў."
@@ -1717,8 +1718,8 @@
"%1$s быў адключаны з дапамогай камбінацыі хуткага доступу для спецыяльных магчымасцей""Каб карыстацца сэрвісам \"%1$s\", націсніце і ўтрымлівайце на працягу трох секунд абедзве клавішы гучнасці""Выберыце службу для выкарыстання пры націску кнопкі \"Спецыяльныя магчымасці\":"
- "З дапамогай жэста спецыяльных магчымасцей (правесці двума пальцамі па экране знізу ўверх) выберыце службу для выкарыстання:"
- "З дапамогай жэста спецыяльных магчымасцей (правесці трыма пальцамі па экране знізу ўверх) выберыце службу для выкарыстання:"
+ "Выберыце службу, дзе будзе выкарыстоўвацца жэст спецыяльных магчымасцей (правесці двума пальцамі па экране знізу ўверх):"
+ "Выберыце службу, дзе будзе выкарыстоўвацца жэст спецыяльных магчымасцей (правесці двума пальцамі па экране знізу ўверх):""Каб пераключыцца на другую службу, націсніце і ўтрымлівайце кнопку спецыяльных магчымасцей.""Каб пераключыцца на другую службу, правядзіце ўверх двума пальцамі, утрымліваючы іх на экране.""Каб пераключыцца на іншую службу, правядзіце ўверх трыма пальцамі, утрымліваючы іх на экране."
@@ -1955,8 +1956,8 @@
"Некатэгарызаванае""Вы задалі важнасць гэтых апавяшчэнняў.""Гэта важна, бо з гэтым звязаны пэўныя людзі."
- "Дазволіць %1$s стварыць новага Карыстальніка з уліковым запісам %2$s?"
- "Дазволіць %1$s стварыць новага Карыстальніка з уліковым запісам %2$s (Карыстальнік з гэтым уліковым запісам ужо існуе)?"
+ "Дазволіць праграме \"%1$s\" стварыць новага Карыстальніка з уліковым запісам %2$s (Карыстальнік з гэтым уліковым запісам ужо існуе)?"
+ "Дазволіць праграме \"%1$s\" стварыць новага Карыстальніка з уліковым запісам %2$s?""Дадаць мову""Параметры рэгіёна""Увядзіце назву мовы"
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 843452275809e5b4f21f86033e1ea6b4338fba62..542a550585274c53ca250c9f5a5f14eb46b0b74f 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -95,6 +95,7 @@
"Съобщения в гласовата поща""Обаждания през Wi-Fi""Състояние на SIM картата"
+ "Състояние на SIM картата с висок приоритет""Отсрещният потребител заяви пълен TTY режим (FULL)""Отсрещният потребител заяви TTY режим с пренос на слух (HCO)""Отсрещният потребител заяви TTY режим с пренос на глас (VCО)"
@@ -550,11 +551,11 @@
"Икона за отпечатък"
- "управление на хардуера за удостоверяване с лице"
+ "управление на хардуера за отключване с лице""Разрешава на прил. да извиква методи за добавяне и изтриване на лицеви шаблони за ползване"
- "използване на хардуера за удостоверяване с лице"
- "Разрешава на приложението при необходимост да използва хардуера за удостоверяване с лице"
- "Удостоверяване с лице"
+ "използване на хардуера за отключване с лице"
+ "Разрешава на приложението да използва хардуера за отключване с лице с цел удостоверяване"
+ "Отключване с лице""Регистрирайте отново лицето си""С цел подобряване на разпознаването регистрирайте отново лицето си""Лицето не бе заснето точно. Опитайте отново."
@@ -567,7 +568,7 @@
"Преместете телефона наляво.""Преместете телефона надясно.""Моля, гледайте точно към устройството си."
- "Лицето ви не се вижда. Погледнете към телефона."
+ "Позиционирайте лицето си директно пред телефона.""Твърде много движение. Дръжте телефона неподвижно.""Моля, регистрирайте лицето си отново.""Лицето не бе разпознато. Опитайте отново."
@@ -576,19 +577,19 @@
"Не завъртайте главата си толкова много.""Не завъртайте главата си толкова много.""Премахнете всичко, което закрива лицето ви."
- "Изчистете сензора в горния край на екрана."
+ "Почистете горната част на екрана си, включително черната лента""Лицето не може да се потвърди. Хардуерът не е налице."
- "Опитайте отново да удостоверите с лице."
+ "Опитайте отново да отключите с лице.""Не може да се запази ново лице. Първо изтрийте старо."
- "Операцията с лице е анулирана"
- "Удостоверяването с лице е анулирано от потребителя"
+ "Операцията с лице е анулирана."
+ "Отключването с лице е анулирано от потребителя.""Твърде много опити. Опитайте отново по-късно."
- "Твърде много опити. Удостоверяването с лице е деактивирано."
+ "Твърде много опити. Отключването с лице е деактивирано.""Лицето не може да се потвърди. Опитайте отново."
- "Не сте настроили удостоверяването с лице"
- "Удостоверяването с лице не се поддържа на това устройство"
+ "Не сте настроили отключването с лице."
+ "Отключването с лице не се поддържа на това устройство.""Лице %d"
@@ -1254,10 +1255,10 @@
"Докоснете, за да видите всички мрежи""Свързване""Всички мрежи"
- "Да се установи ли връзка с Wi-Fi мрежи?"
- "Предложено от %s"
- "Да"
- "Не"
+ "Да се разрешат ли предложените Wi‑Fi мрежи?"
+ "Предложени от %s мрежи. Устройството може да се свърже автоматично."
+ "Разрешаване"
+ "Не, благодаря""Wi‑Fi ще се включи автоматично""Когато сте в района на запазена мрежа с високо качество""Без повторно включване"
@@ -1354,7 +1355,7 @@
"Открит е аналогов аудиоаксесоар""Свързаното устройство не е съвместимо с този телефон. Докоснете, за да научите повече.""Отстраняване на грешки през USB"
- "Докоснете, за да изключите отстраняването на грешки през USB"
+ "Докоснете, за да изключите""Изберете, за да деактивирате отстраняването на грешки през USB.""Режимът за тестова среда е активиран""Възстановете фабричните настройки, за да деактивирате режима за тестова среда."
@@ -1887,8 +1888,8 @@
"Некатегоризирани""Зададохте важността на тези известия.""Това е важно заради участващите хора."
- "Да се разреши ли на %1$s да създаде нов потребител с профила %2$s?"
- "Да се разреши ли на %1$s да създаде нов потребител с профила %2$s (вече съществува потребител с този профил)?"
+ "Да се разреши ли на %1$s да създаде нов потребител с профила %2$s (вече съществува потребител с този профил)?"
+ "Да се разреши ли на %1$s да създаде нов потребител с профила %2$s?""Добавяне на език""Предпочитание за региона""Въведете име на език"
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 7170dbbd6192b70c162d4db1b50a9f96ceeb339d..b8ee884b6d968e539f19bd9941f78ea7ee1e0473 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -70,7 +70,7 @@
"তিন ভাবে কল করা""অবাঞ্ছিত বিরক্তিকর কলগুলি প্রত্যাখ্যান""যে নম্বরটি থেকে কল করা হয় সেটি পাঠানো"
- "বিরক্ত করবেন না"
+ "বিরক্ত করবে না""ডিফল্টরূপে কলার আইডি সীমাবদ্ধ করা থাকে৷ পরবর্তী কল: সীমাবদ্ধ""ডিফল্টরূপে কলার আইডি সীমাবদ্ধ করা থাকে৷ পরবর্তী কল: সীমাবদ্ধ নয়""ডিফল্টরূপে কলার আইডি সীমাবদ্ধ করা থাকে না৷ পরবর্তী কল: সীমাবদ্ধ"
@@ -95,6 +95,7 @@
"ভয়েসমেল মেসেজ""ওয়াই-ফাই কলিং""সিম কার্ডের স্টাটাস"
+ "উচ্চ প্রায়রিটি সিম স্ট্যাটাস""পির TTY মোড FULL অনুরোধ করেছে""পির TTY মোড HCO অনুরোধ করেছে""পির TTY মোড VCO অনুরোধ করেছে"
@@ -550,11 +551,11 @@
"আঙ্গুলের ছাপ আইকন"
- "ফেস যাচাইকরণ হার্ডওয়্যার পরিচালনা করুন"
+ "মুখের সাহায্যে আনলক করার হার্ডওয়্যার ম্যানেজ করা""ব্যবহার করার জন্য ফেস টেম্পলেট যোগ করা এবং মোছার পদ্ধতি গ্রহণ করতে অ্যাপটিকে অনুমতি দেয়৷"
- "ফেস যাচাইকরণ হার্ডওয়্যার ব্যবহার করুন"
- "প্রমাণীকরণের জন্য ফেস যাচাইকরণ হার্ডওয়্যার ব্যবহার করার অনুমতি অ্যাপটিকে দেয়"
- "ফেস যাচাইকরণ"
+ "মুখের সাহায্যে আনলক করার হার্ডওয়্যার ব্যবহার করা"
+ "অ্যাপকে যাচাইকরণের জন্য মুখের সাহায্যে আনলক করার হার্ডওয়্যার ব্যবহার করতে দেয়"
+ "মুখের সাহায্যে আনলক""আপনার ফেস আবার এনরোল করুন""শনাক্তকরণের উন্নতি করতে আপনার ফেস আবার এনরোল করুন""মুখের সঠিক ডেটা পাওয়া যায়নি। আবার চেষ্টা করুন।"
@@ -567,7 +568,7 @@
"ফোনটি বাঁদিকে সরান।""ফোনটি ডানদিকে সরান।""সরাসরি ডিভাইসের দিকে তাকান।"
- "আপনার মুখ দেখা যাচ্ছে না। ফোনের দিকে তাকান।"
+ "আপনার মুখ সরাসরি ফোনের সামনে রাখুন।""খুব বেশি নড়ছে। ফোনটি যাতে না কাঁপে সেইভাবে ধরুন।""আপনার মুখের ছবি আবার নথিভুক্ত করুন।""আর মুখ চিনতে পারবেন না। আবার চেষ্টা করুন।"
@@ -576,19 +577,19 @@
"আপনার মাথাটি নিচের দিকে সামান্য নামান।""আপনার মাথাটি সামান্য ঘোরান।""আপনার ফেসকে আড়াল করে এমন সব কিছু সরিয়ে দিন।"
- "স্ক্রিনের উপরের প্রান্তের সেন্সর মুছুন।"
+ "ব্ল্যাক বার সহ আপনার স্ক্রিনের উপরের অংশ মুছে ফেলুন""ফেস যাচাই করা যায়নি। হার্ডওয়্যার উপলভ্য নেই।"
- "ফেস যাচাইকরণের ফিচার আবার ব্যবহার করুন।"
+ "আবার মুখের সাহায্যে আনলক করার চেষ্টা করুন।""নতুন ফেস ডেটা স্টোর করা যায়নি। প্রথমে পুরনোটি মুছে ফেলুন।"
- "ফেস যাচাই করার প্রসেস বাতিল করা হয়েছে"
- "ব্যবহারকারী মুখ শনাক্তকরণ প্রক্রিয়া বাতিল করেছেন"
+ "ফেস অপারেশন বাতিল করা হয়েছে৷"
+ "ব্যবহারকারী মুখের সাহায্যে আনলক বাতিল করে দিয়েছেন।""অনেকবার চেষ্টা করা হয়েছে। পরে আবার চেষ্টা করুন।"
- "অনেকবার চেষ্টা করেছেন। ফেস যাচাই করার ফিচারটি বন্ধ করা আছে।"
+ "অনেকবার চেষ্টা করেছেন। মুখের সাহায্যে আনলক করার সুবিধা বন্ধ করা হয়েছে।""আপনার মুখ যাচাই করা যাচ্ছে না। আবার চেষ্টা করুন।"
- "ফেস যাচাই করার প্রক্রিয়াটি সেট-আপ করেননি"
- "এই ডিভাইসে ফেস যাচাই করা যাবে না"
+ "এখনও মুখের সাহায্যে আনলক করার সুবিধা সেট-আপ করেননি।"
+ "এই ডিভাইসে মুখের সাহায্যে আনলক করার সুবিধাটি কাজ করে না।""%d ফেস"
@@ -647,8 +648,8 @@
"ধারককে, একটি ক্যারিয়ার মেসেজিং পরিষেবার উচ্চ স্তরের ইন্টারফেসে জুড়তে অনুমতি দেয়৷ সধারণ অ্যাপ্লিকেশনগুলির জন্য কখনই প্রয়োজন হয় না৷""পরিষেবা প্রদানকারীর সাথে যুক্ত হন""কোনো পরিষেবা প্রদানকারীর সাথে যুক্ত হতে ধারককে অনুমতি দিন। সাধারণ অ্যাপ্লিকেশানের জন্য প্র্রয়োজন হয় না।"
- "\'বিরক্ত করবেন না\' -তে অ্যাক্সেস"
- "অ্যাপটিকে \'বিরক্ত করবেন না\' কনফিগারেশন পড়া এবং লেখার অনুমতি দেয়।"
+ "\'বিরক্ত করবে না\' -তে অ্যাক্সেস"
+ "অ্যাপটিকে \'বিরক্ত করবে না\' কনফিগারেশন পড়া এবং লেখার অনুমতি দেয়।""দেখার অনুমতি কাজে লাগানো শুরু করুন""কোনও অ্যাপের কোনও নির্দিষ্ট অনুমতির ব্যবহার শুরু করার ক্ষেত্রে হোল্ডারকে সাহায্য করে। সাধারণ অ্যাপের জন্য এটির পরিবর্তন হওয়ার কথা নয়।""পাসওয়ার্ড নিয়মগুলি সেট করে"
@@ -1254,10 +1255,10 @@
"সমস্ত নেটওয়ার্ক দেখতে ট্যাপ করুন""সংযুক্ত করুন""সব নেটওয়ার্ক"
- "ওয়াই-ফাই নেটওয়ার্কের সাথে কানেক্ট করতে চান?"
- "%s সাজেস্ট করেছে"
- "হ্যাঁ"
- "না"
+ "সাজেস্ট করা ওয়াই-ফাই নেটওয়ার্কে কানেক্ট করার অনুমতি দিতে চান?"
+ "%s-এর সাজেস্ট করা নেটওয়ার্ক। ডিভাইস নিজে থেকে কানেক্ট হতে পারে।"
+ "অনুমতি দিন"
+ "না থাক""ওয়াই-ফাই অটোমেটিক চালু হবে""যখন আপনি একটি উচ্চ মানের সংরক্ষিত নেটওয়ার্ক কাছাকাছি থাকেন""আবার চালু করবেন না"
@@ -1312,7 +1313,7 @@
"এসএমএস পাঠানো হচ্ছে""<b>%1$s</b> অনেকগুলি এসএমএস পাঠাচ্ছে৷ আপনি কি এই অ্যাপ্লিকেশানটিকে মেসেজ পাঠানো চালিয়ে যাওয়ার অনুমতি দিতে চান?""অনুমতি দিন"
- "আস্বীকার করুন"
+ "অস্বীকার করুন""<b>%1$s</b> <b>%2$s</b> এ একটি মেসেজ পাঠাতে চায়৷""এটির জন্য আপনার মোবাইল অ্যাকাউন্টে ""চার্জ বহন করতে হতে পারে""।""এর ফলে আপনার মোবাইল অ্যাকাউন্টে চার্জ লাগতে পারে।"
@@ -1354,7 +1355,7 @@
"সংযুক্ত ডিভাইস চার্জ করা হচ্ছে। আরও বিকল্প দেখতে ট্যাপ করুন।""অ্যানালগ অডিও অ্যাক্সেসরি শনাক্ত করা হয়েছে""সংযুক্ত ডিভাইসটি এই ফোনের সাথে ব্যবহার করা যাবে না। আরও জানতে ট্যাপ করুন।"
- "USB ডিবাগিং সংযুক্ত হয়েছে"
+ "USB ডিবাগিং কানেক্ট হয়েছে""ইউএসবি ডিবাগিং বন্ধ করতে ট্যাপ করুন""USB ডিবাগিং অক্ষম করতে বেছে নিন।""টেস্ট হারনেস মোড চালু আছে"
@@ -1447,7 +1448,7 @@
"আপনি কি এই অনুরোধটিকে মঞ্জুরি দিতে চান?""অ্যাক্সেসের অনুরোধ""অনুমতি দিন"
- "আস্বীকার করুন"
+ "অস্বীকার করুন""অনুমতির অনুরোধ করা হয়েছে""%sঅ্যাকাউন্টের জন্য\nঅনুমতির অনুরোধ করা হয়েছে৷""আপনি এই অ্যাপ্লিকেশানটি আপনার কর্মস্থলের প্রোফাইলের বাইরে ব্যবহার করছেন"
@@ -1848,10 +1849,10 @@
"%1$s পর্যন্ত""%1$s পর্যন্ত (পরবর্তী অ্যালার্ম)""যতক্ষণ না আপনি বন্ধ করছেন"
- "যতক্ষণ পর্যন্ত না আপনি বিরক্ত করবেন না বন্ধ করছেন"
+ "যতক্ষণ পর্যন্ত না আপনি বিরক্ত করবে না বন্ধ করছেন""%1$s / %2$s""সঙ্কুচিত করুন"
- "বিরক্ত করবেন না"
+ "বিরক্ত করবে না""ডাউনটাইম""সপ্তাহান্তের রাত্রি""সপ্তাহান্ত"
@@ -1888,8 +1889,8 @@
"বিভাগ নির্ধারিত নয়""আপনি এই বিজ্ঞপ্তিগুলির গুরুত্ব সেট করেছেন।""লোকজন জড়িত থাকার কারণে এটি গুরুত্বপূর্ণ।"
- "%1$s কে %2$s এর সাথে একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি দেবেন কি?"
- "%1$s কে %2$s (একজন ব্যবহারকারী এই অ্যাকাউন্টে ইতিমধ্যেই বিদ্যমান আছেন) এর সাথে একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি দেবেন কি?"
+ "%2$s-এ (একজন ব্যবহারকারী এই অ্যাকাউন্টে আগে থেকেই রয়েছেন) একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি %1$s-কে দেবেন?"
+ "%2$s-এ একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি %1$s-কে দেবেন?""একটি ভাষা যোগ করুন""পছন্দের অঞ্চল""ভাষার নাম লিখুন"
@@ -1989,10 +1990,10 @@
"কল এবং বিজ্ঞপ্তি আসলে ভাইব্রেট হবে""কল এবং বিজ্ঞপ্তিগুলি মিউট করা হবে""সিস্টেমে হয়ে থাকা পরিবর্তন"
- "বিরক্ত করবেন না"
- "নতুন: \'বিরক্ত করবেন না\' মোড চালু আছে, তাই বিজ্ঞপ্তি লুকিয়ে ফেলা হচ্ছে"
+ "বিরক্ত করবে না"
+ "নতুন: \'বিরক্ত করবে না\' মোড চালু আছে, তাই বিজ্ঞপ্তি লুকিয়ে ফেলা হচ্ছে""আরও জানতে এবং পরিবর্তন করতে ট্যাপ করুন।"
- "\'বিরক্ত করবেন না\' মোডের সেটিং বদলে গেছে"
+ "\'বিরক্ত করবে না\' মোডের সেটিং বদলে গেছে""কী কী ব্লক করা আছে তা দেখতে ট্যাপ করুন।""সিস্টেম""সেটিংস"
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index c7ea23d090bd992566615ca84d76809a063f1f7f..6a2a63af62b85e58ece43f734355e51d8fd4e237 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -96,6 +96,7 @@
"Poruke govorne pošte""Pozivanje putem WiFi-ja""Status SIM-a"
+ "Status visokog prioriteta SIM-a""Ravnopravni uređaj zatražio načina rada TTY FULL""Ravnopravni uređaj zatražio načina rada TTY HCO""Ravnopravni uređaj zatražio načina rada TTY VCO"
@@ -293,7 +294,7 @@
"Dozvoliti aplikaciji <b>%1$s</b> da pristupi vašem kalendaru?""SMS""šalje i pregleda SMS poruke"
- "Dozvoliti aplikaciji <b>%1$s</b> slanje i pregled SMS poruka?"
+ "Dozvoliti aplikaciji <b>%1$s</b> da šalje i pregleda SMS poruke?""Pohrana""pristupa slikama, medijskim fajlovima i fajlovima na vašem uređaju""Dozvoliti aplikaciji <b>%1$s</b> da pristupa fotografijama, medijima i fajlovima na vašem uređaju?"
@@ -486,9 +487,9 @@
"uspostavljanje i prekidanje WiFi veze""Omogućava aplikaciji uspostavljanje i prekidanje veze sa WiFi pristupnim tačkama, kao i promjenu konfiguracije uređaja za WiFi mreže.""dozvoljava prijem paketa kroz WiFi Multicast"
- "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću multicast tehnologije, a ne samo na vaš tablet. Troši više energije nego rad van multicast načina rada."
- "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću multicast tehnologije, a ne samo na vaš TV. Troši više energije nego rad van multicast načina rada."
- "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću multicast tehnologije, a ne samo na vaš telefon. Troši više energije nego rad van multicast načina rada."
+ "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću višesmjernih adresa, a ne samo na vaš tablet. Troši više energije nego rad van multicast načina rada."
+ "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću višesmjernih adresa, a ne samo na vaš TV. Troši više energije nego rad van multicast načina rada."
+ "Omogućava aplikaciji prijem paketa poslanih svim uređajima na WiFi mreži pomoću višesmjernih adresa, a ne samo na vaš telefon. Troši više energije nego rad van multicast načina rada.""pristup Bluetooth postavkama""Dozvoljava aplikaciji konfiguriranje lokalnog Bluetooth tableta te otkrivanje udaljenih uređaja i sparivanje s njima.""Dozvoljava aplikaciji konfiguriranje lokalnog Bluetooth TV-a te otkrivanje i povezivanje s udaljenim uređajima."
@@ -553,11 +554,11 @@
"Ikona za otisak prsta"
- "upravljanje hardverom za autentifikaciju licem"
+ "upravljanje hardverom za otključavanje licem""Omogućava aplikaciji korištenje metoda za dodavanje i brisanje šablona lica za upotrebu."
- "upotreba hardvera za autentifikaciju licem"
- "Omogućava aplikaciji da za autentifikaciju koristi hardver za autentifikaciju licem"
- "Autentifikacija licem"
+ "korištenje hardvera za otključavanje licem"
+ "Omogućava aplikaciji da za autentifikaciju koristi hardver za otključavanje licem"
+ "Otključavanje licem""Ponovo registrirajte lice""Ponovo registrirajte lice da poboljšate prepoznavanje""Lice nije snimljeno precizno. Pokušajte ponovo."
@@ -570,7 +571,7 @@
"Pomjerite telefon ulijevo.""Pomjerite telefon udesno.""Gledajte direktno u uređaj."
- "Ne vidi se lice. Gledajte u telefon."
+ "Postavite lice direktno ispred telefona""Previše pokreta. Držite telefon mirno.""Ponovo registrirajte lice.""Nije više moguće prepoznati lice. Pokušajte opet."
@@ -579,19 +580,19 @@
"Malo manje zakrenite glavu.""Malo manje zakrenite glavu.""Uklonite prepreke koje blokiraju vaše lice."
- "Očistite senzor na gornjem rubu ekrana."
+ "Očistite vrh ekrana, uključujući crnu traku""Nije moguće potvrditi lice. Hardver nije dostupan."
- "Pokušajte ponovo s autentifikacijom lica."
+ "Pokušajte ponovo s otključavanjem licem.""Nije moguće sačuvati nove podatke o licu. Prvo izbrišite stare."
- "Prepoznavanje lica je otkazano"
- "Korisnik je otkazao provjeru lica"
+ "Prepoznavanje lica je otkazano."
+ "Korisnik je otkazao otključavanje licem.""Previše pokušaja. Pokušajte ponovo kasnije."
- "Previše pokušaja. Autentifikacija licem je onemogućena."
+ "Previše pokušaja. Otključavanje licem je onemogućeno.""Nije moguće potvrditi lice. Pokušajte ponovo."
- "Niste postavili autentifikaciju pomoću lica"
- "Autentifikacija pomoću lica nije podržana na ovom uređaju"
+ "Niste postavili otključavanje licem."
+ "Otključavanje licem nije podržano na ovom uređaju.""Lice %d"
@@ -1278,10 +1279,10 @@
"Dodirnite da vidite sve mreže""Povežite se""Sve mreže"
- "Povezivati na WiFi mreže?"
- "Predlaže %s"
- "Da"
- "Ne"
+ "Dozvoliti predložene WiFi mreže?"
+ "Mreže koje predlaže %s. Uređaj će se možda povezati automatski."
+ "Dozvoli"
+ "Ne, hvala""WiFi će se uključiti automatski""Kada ste u blizini sačuvane mreže visokog kvaliteta""Nemoj ponovo uključiti"
@@ -1377,7 +1378,7 @@
"Punjenje povezanog uređaja. Dodirnite za više opcija.""Otkriven je analogni periferni uređaj""Priključeni uređaj nije kompatibilan s ovim telefonom. Dodirnite da saznate više."
- "Otklanjanje grešaka putem uređaja spojenog na USB je uspostavljeno"
+ "Otklanjanje grešaka putem USB-a je uspostavljeno""Dodirnite da isključite otklanjanje grešaka putem USB-a""Odaberite da onemogućite ispravljanje grešaka koristeći USB""Omogućen način rada okvira za testiranje"
@@ -1923,8 +1924,8 @@
"Nije kategorizirano""Vi određujete značaj ovih obavještenja.""Ovo je značajno zbog osoba koje su uključene."
- "Da li dozvoljavate aplikaciji %1$s da kreira novog korisnika s računom %2$s?"
- "Da li dozvoljavate da %1$s kreira novog korisnika za %2$s (Korisnik sa ovim nalogom već postoji)?"
+ "Dozvoliti aplikaciji %1$s da kreira novog korisnika s računom %2$s (korisnik s ovim računom već postoji)?"
+ "Dozvoliti aplikaciji %1$s da kreira novog korisnika s računom %2$s?""Dodajte jezik""Izbor regije""Upišite ime jezika"
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 5c7dba85e90dceec258ebff4c650fd2824114ffa..ad045439a7af9bba6cf9c7a6958b842b6585c12e 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -95,6 +95,7 @@
"Missatges de veu""Trucades per Wi-Fi""Estat de la SIM"
+ "Estat de la SIM d\'alta prioritat""L\'altre dispositiu ha sol·licitat el mode TTY COMPLET.""L\'altre dispositiu ha sol·licitat el mode TTY HCO.""L\'altre dispositiu ha sol·licitat el mode TTY VCO."
@@ -550,11 +551,11 @@
"Icona d\'empremta digital"
- "gestiona el maquinari d\'autenticació facial"
+ "gestiona el maquinari de desbloqueig facial""Permet que l\'aplicació afegeixi i suprimeixi plantilles de cares que es puguin fer servir."
- "utilitza el maquinari d\'autenticació facial"
- "Permet que l\'aplicació faci servir maquinari d\'autenticació facial"
- "Autenticació facial"
+ "utilitza el maquinari de desbloqueig facial"
+ "Permet que l\'aplicació faci servir el maquinari de desbloqueig facial per a l\'autenticació"
+ "Desbloqueig facial""Torna a registrar la cara""Per millorar el reconeixement, torna a registrar la cara""No es reconeix la teva cara. Torna-ho a provar."
@@ -567,34 +568,34 @@
"Mou el telèfon cap a l\'esquerra.""Mou el telèfon cap a la dreta.""Mira més directament cap al dispositiu."
- "No se\'t veu la cara. Mira el telèfon."
+ "Posa la cara directament davant del telèfon.""Massa moviment. Subjecta bé el telèfon.""Torna a registrar la teva cara.""Ja no es reconeix la teva cara. Torna-ho a provar.""És massa semblant; canvia de postura."
- "Inclina el cap una mica menys."
- "Inclina el cap una mica menys."
- "No inclinis tant el cap."
+ "No giris tant el cap."
+ "No inclinis tant el cap."
+ "No giris tant el cap.""Suprimeix qualsevol cosa que amagui la teva cara."
- "Neteja el sensor de l\'extrem superior."
+ "Neteja la part superior de la pantalla, inclosa la barra negra""No es pot verificar la cara. Maquinari no disponible."
- "Torna a provar l\'autenticació facial."
+ "Torna a provar el desbloqueig facial.""No es poden desar dades facials noves. Suprimeix-ne d\'antigues."
- "S\'ha cancel·lat el reconeixement facial"
- "L\'usuari ha cancel·lat l\'autenticació facial"
+ "S\'ha cancel·lat el reconeixement facial."
+ "L\'usuari ha cancel·lat el desbloqueig facial.""Massa intents. Torna-ho a provar més tard."
- "Massa intents. S\'ha desactivat l\'autenticació facial."
+ "Massa intents. S\'ha desactivat el desbloqueig facial.""No es pot verificar la cara. Torna-ho a provar."
- "No has configurat l\'autenticació facial"
- "L\'autenticació facial no és compatible amb el dispositiu."
+ "No has configurat el desbloqueig facial"
+ "El desbloqueig facial no és compatible amb el dispositiu.""Cara %d""Icona facial""llegir la configuració de sincronització"
- "Permet que l\'aplicació llegeixi la configuració de sincronització d\'un compte. Per exemple, això pot determinar que l\'aplicació Persones estigui sincronitzada amb un compte."
+ "Permet que l\'aplicació llegeixi la configuració de sincronització d\'un compte. Per exemple, això pot determinar que l\'aplicació Contactes estigui sincronitzada amb un compte.""activar o desactivar la sincronització""Permet que una aplicació modifiqui la configuració de sincronització d\'un compte. Per exemple, aquesta acció es pot fer servir per activar la sincronització de l\'aplicació Persones amb un compte.""llegir les estadístiques de sincronització"
@@ -845,9 +846,9 @@
"Has dibuixat el patró de desbloqueig %1$d vegades de manera incorrecta. Si falles %2$d vegades més, se\'t demanarà que desbloquegis la tauleta amb l\'inici de sessió de Google.\n\n Torna-ho a provar d\'aquí a %3$d segons.""Has dibuixat el patró de desbloqueig incorrectament %1$d vegades. Tens %2$d intents més abans no hagis de desbloquejar el televisor amb les dades d\'inici de sessió de Google.\n\n Torna a provar-ho d\'aquí a %3$d segons.""Has dibuixat el patró de desbloqueig %1$d vegades de manera incorrecta. Si falles %2$d vegades més, se\'t demanarà que desbloquegis el telèfon amb l\'inici de sessió de Google.\n\n Torna-ho a provar d\'aquí a %3$d segons."
- "Has provat de desbloquejar la tauleta %1$d vegades incorrectament. D\'aquí a %2$d intents incorrectes més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."
+ "Has provat de desbloquejar la tauleta %1$d vegades de manera incorrecta. Si falles %2$d vegades més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris.""Has provat de desbloquejar el televisor incorrectament %1$d vegades. Tens %2$d intents més abans no es restableixin els valors de fàbrica de l\'aparell i es perdin totes les dades d\'usuari."
- "Has provat de desbloquejar la tauleta %1$d vegades incorrectament. D\'aquí a %2$d intents incorrectes més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."
+ "Has provat de desbloquejar la tauleta %1$d vegades de manera incorrecta. Si falles %2$d vegades més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris.""Has provat de desbloquejar la tauleta %d vegades incorrectament. Ara la tauleta es restablirà a la configuració predeterminada de fàbrica.""Has provat de desbloquejar el televisor incorrectament %d vegades. Ara es restabliran els valors de fàbrica de l\'aparell.""Has provat de desbloquejar el telèfon %d vegades incorrectament. Ara el telèfon es restablirà a la configuració predeterminada de fàbrica."
@@ -1254,10 +1255,10 @@
"Toca per veure totes les xarxes""Connecta""Totes les xarxes"
- "Vols connectar-te a una xarxa Wi‑Fi?"
- "Suggerida per %s"
- "Sí"
- "No"
+ "Vols permetre les xarxes Wi‑Fi suggerides?"
+ "Xarxes suggerides de l\'aplicació %s. El dispositiu pot connectar-se automàticament."
+ "Permet"
+ "No, gràcies""La Wi-Fi s\'activarà automàticament""Quan siguis a prop d\'una xarxa de qualitat desada""No tornis a activar"
@@ -1482,7 +1483,7 @@
"Enrere""Següent""Omet"
- "Cap coincidència"
+ "No s\'ha trobat cap coincidència""Troba-ho a la pàgina"%d de %d
@@ -1647,9 +1648,9 @@
"Has escrit malament el PIN %1$d vegades. \n\nTorna-ho a provar d\'aquí a %2$d segons.""Has escrit malament la contrasenya %1$d vegades. \n\nTorna-ho a provar d\'aquí a %2$d segons.""Has dibuixat el patró de desbloqueig de manera incorrecta %1$d vegades. \n\nTorna-ho a provar d\'aquí a %2$d segons."
- "Has provat de desbloquejar la tauleta %1$d vegades de manera incorrecta. D\'aquí a %2$d intents incorrectes més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."
+ "Has provat de desbloquejar la tauleta %1$d vegades de manera incorrecta. Si falles %2$d vegades més, la tauleta es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris.""Has provat de desbloquejar el televisor incorrectament %1$d vegades. Tens %2$d intents més abans no es restableixin els valors de fàbrica de l\'aparell i es perdin totes les dades d\'usuari."
- "Has provat de desbloquejar el telèfon %1$d vegades de manera incorrecta. D\'aquí a %2$d intents incorrectes més, el telèfon es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris."
+ "Has provat de desbloquejar el telèfon %1$d vegades de manera incorrecta. Si falles %2$d vegades més, el telèfon es restablirà a la configuració predeterminada de fàbrica i es perdran totes les dades dels usuaris.""Has provat de desbloquejar la tauleta %d vegades de manera incorrecta. Ara la tauleta es restablirà a la configuració predeterminada de fàbrica.""Has provat de desbloquejar el televisor incorrectament %d vegades. Ara es restabliran els valors de fàbrica de l\'aparell.""Has provat de desbloquejar el telèfon %d vegades de manera incorrecta. Ara el telèfon es restablirà a la configuració predeterminada de fàbrica."
@@ -1887,8 +1888,8 @@
"Sense classificar""Has definit la importància d\'aquestes notificacions.""Aquest missatge és important per les persones implicades."
- "Concedeixes permís a %1$s per crear un usuari amb el compte %2$s?"
- "Concedeixes permís a %1$s per crear un usuari amb el compte %2$s? (Ja hi ha un usuari amb aquest compte.)"
+ "Concedeixes permís a %1$s per crear un usuari amb el compte %2$s? (Ja hi ha un usuari amb aquest compte.)"
+ "Concedeixes permís a %1$s per crear un usuari amb el compte %2$s?""Afegeix un idioma""Preferència de regió""Nom de l\'idioma"
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 40150ff1b66aafcd44433a22bc543e301668a450..61b539518688373bb45389e99c9354735ff0edf4 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -97,6 +97,7 @@
"Hlasové zprávy""Volání přes Wi-Fi""Stav SIM karty"
+ "Stav SIM karty: vysoká priorita""Partner požádal o přechod na režim TTY FULL""Partner požádal o přechod na režim TTY HCO""Partner požádal o přechod na režim TTY VCO"
@@ -556,11 +557,11 @@
"Ikona otisku prstů"
- "správa hardwaru k ověření obličeje"
+ "správa hardwaru k odemknutí obličejem""Umožňuje aplikaci volat metody k přidání a smazání šablon obličeje, které budou použity."
- "použití hardwaru k ověření obličeje"
- "Umožňuje aplikaci provést ověření pomocí hardwaru k ověření obličeje"
- "Ověřování obličejem"
+ "použití hardwaru k odemknutí obličejem"
+ "Umožňuje aplikaci provést ověření pomocí hardwaru k odemknutí obličejem"
+ "Odemknutí obličejem""Zaznamenejte obličej znovu""Chcete-li rozpoznání zdokonalit, zaznamenejte obličej znovu""Obličej se nepodařilo zachytit. Zkuste to znovu."
@@ -573,7 +574,7 @@
"Přesuňte telefon vlevo.""Přesuňte telefon vpravo.""Dívejte se přímo na zařízení."
- "Obličej není vidět. Podívejte se na telefon."
+ "Umístěte obličej přímo před telefon.""Příliš mnoho pohybu. Držte telefon nehybně.""Zaznamenejte obličej znovu.""Obličej už nelze rozpoznat. Zkuste to znovu."
@@ -582,19 +583,19 @@
"Natočte hlavu o něco méně.""Natočte hlavu o něco méně.""Odstraňte vše, co vám zakrývá obličej."
- "Vyčistěte snímač u horního okraje obrazovky."
+ "Očistěte horní část obrazovky včetně černé části""Obličej nelze ověřit. Hardware není dostupný."
- "Zopakujte ověření obličeje."
+ "Zopakujte odemknutí obličejem.""Údaje o novém obličeji nelze uložit. Nejdřív vymažte starý."
- "Operace snímání obličeje byla zrušena"
- "Ověření obličejem zrušil uživatel"
+ "Operace snímání obličeje byla zrušena."
+ "Odemknutí obličejem zrušil uživatel.""Příliš mnoho pokusů. Zkuste to později."
- "Příliš mnoho pokusů. Ověření obličejem je vypnuto."
+ "Příliš mnoho pokusů. Odemknutí obličejem bylo deaktivováno.""Obličej se nepodařilo ověřit. Zkuste to znovu."
- "Ověření obličejem nemáte nastavené"
- "Ověření obličejem na tomto zařízení není podporováno"
+ "Ověření obličejem nemáte nastavené."
+ "Odemknutí obličejem na tomto zařízení není podporováno.""Obličej %d"
@@ -824,7 +825,7 @@
"Zkusit znovu""Funkce a data jsou k dispozici po odemčení""Překročili jste maximální povolený počet pokusů o odemknutí obličejem."
- "Není vložena SIM karta"
+ "Chybí SIM karta""V tabletu není SIM karta.""V televizi není SIM karta.""V telefonu není žádná SIM karta."
@@ -1298,10 +1299,10 @@
"Klepnutím zobrazíte všechny sítě""Připojit""Všechny sítě"
- "Připojit k sítím Wi-Fi?"
- "Navrženo kanálem %s"
- "Ano"
- "Ne"
+ "Povolit navrhované sítě Wi-Fi?"
+ "Sítě navrhované aplikací %s. Zařízení se může připojovat automaticky."
+ "Povolit"
+ "Ne, díky""Wi‑Fi se zapne automaticky""Když budete v dosahu kvalitní uložené sítě""Znovu nezapínat"
@@ -1955,8 +1956,8 @@
"Neklasifikováno""Důležitost oznámení určujete vy.""Tato zpráva je důležitá kvůli lidem zapojeným do konverzace."
- "Povolit aplikaci %1$s vytvořit nového uživatele s účtem %2$s?"
- "Povolit aplikaci %1$s vytvořit nového uživatele s účtem %2$s? (Uživatel s tímto účtem již existuje.)"
+ "Povolit aplikaci %1$s vytvořit nového uživatele s účtem %2$s? (Uživatel s tímto účtem již existuje.)"
+ "Povolit aplikaci %1$s vytvořit nového uživatele s účtem %2$s?""Přidat jazyk""Preferovaná oblast""Zadejte název jazyka"
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index d841631e861045b328958070a3229d4537f8dd99..88176362635c5434dd77335167496b831e6234fc 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -95,6 +95,7 @@
"Talebeskeder""Wi-Fi-opkald""SIM-status"
+ "SIM-kort med høj prioritet""Den anden enhed har skiftet til FULD TTY-tilstand""Den anden enhed har skiftet til TTY-tilstanden HCO""Den anden enhed har skiftet til TTY-tilstanden VCO"
@@ -225,7 +226,7 @@
"Indstillinger for telefon""Skærmlås""Sluk"
- "Nødopkald"
+ "Nødsituation""Fejlrapport""Afslut sessionen""Screenshot"
@@ -550,11 +551,11 @@
"Ikon for fingeraftryk"
- "administrer hardware til ansigtsgenkendelse"
+ "administrere hardware til ansigtslås""Tillader, at appen kan bruge metoder til at tilføje og slette ansigtsskabeloner."
- "brug hardware til ansigtsgenkendelse"
- "Tillader, at appen bruger ansigtsgenkendelseshardware til godkendelse"
- "Ansigtsgodkendelse"
+ "bruge hardware til ansigtslås"
+ "Tillader, at appen bruger hardware til ansigtslås til godkendelse"
+ "Ansigtslås""Registrer dit ansigt igen""Registrer dit ansigt igen for at forbedre genkendelsen af det""Der blev ikke registreret ansigtsdata. Prøv igen."
@@ -567,7 +568,7 @@
"Flyt telefonen til venstre.""Flyt telefonen til højre.""Kig mere direkte på din enhed."
- "Dit ansigt kan ikke registreres. Kig på telefonen."
+ "Sørg for, at dit ansigt er direkte foran telefonen.""Der er for meget bevægelse. Hold telefonen stille.""Registrer dit ansigt igen.""Ansigtet kan ikke længere genkendes. Prøv igen."
@@ -576,19 +577,19 @@
"Du skal ikke dreje hovedet så meget.""Du skal ikke dreje hovedet så meget.""Hvis noget skjuler dit ansigt, skal du fjerne det."
- "Rens sensoren ved skærmens øverste kant."
+ "Rengør toppen af din skærm, inkl. den sorte bjælke""Ansigt ikke bekræftet. Hardware ikke tilgængelig."
- "Prøv ansigtsgodkendelse igen."
+ "Prøv ansigtslås igen.""Der kan ikke gemmes nye ansigtsdata. Slet et gammelt først."
- "Ansigtshandlingen blev annulleret"
- "Ansigtsgodkendelsen blev annulleret af brugeren"
+ "Ansigtshandlingen blev annulleret."
+ "Ansigtslås blev annulleret af brugeren.""Du har prøvet for mange gange. Prøv igen senere."
- "For mange forsøg. Ansigtsgodkendelse er deaktiveret."
+ "Du har brugt for mange forsøg. Ansigtslås er deaktiveret.""Ansigtet kan ikke genkendes. Prøv igen."
- "Du har ikke konfigureret ansigtsgodkendelse"
- "Ansigtsgodkendelse understøttes ikke på denne enhed"
+ "Du har ikke konfigureret ansigtslås."
+ "Ansigtslås understøttes ikke på denne enhed.""Ansigt %d"
@@ -1254,10 +1255,10 @@
"Tryk for at se alle netværk""Opret forbindelse""Alle netværk"
- "Vil du oprette forbindelse til Wi-Fi-netværk?"
- "Foreslået af %s"
- "Ja"
- "Nej"
+ "Vil du tillade foreslåede Wi‑Fi-netværk?"
+ "Netværk foreslået af %s. Enheden opretter muligvis forbindelse automatisk."
+ "Tillad"
+ "Nej tak""Wi‑Fi aktiveres automatisk""Når du er i nærheden af et gemt netværk af høj kvalitet""Aktivér ikke igen"
@@ -1887,8 +1888,8 @@
"Uden kategori""Du angiver, hvor vigtige disse notifikationer er.""Dette er vigtigt på grund af de personer, det handler om."
- "Vil du give %1$s tilladelse til at oprette en ny bruger med %2$s?"
- "Vil du give %1$s tilladelse til at oprette en ny bruger med %2$s (der findes allerede en bruger med denne konto)?"
+ "Vil du give %1$s tilladelse til at oprette en ny bruger med %2$s (der findes allerede en bruger med denne konto)?"
+ "Vil du give %1$s tilladelse til at oprette en nye bruger med %2$s?""Tilføj et sprog""Områdeindstilling""Angiv sprog"
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 88e046a68800e03704fc23016592b9aa91bbc9d2..4101fbe0017b9fa19e650721ed000c45c1eea91b 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -95,6 +95,7 @@
"Mailboxnachrichten""WLAN-Telefonie""Status der SIM-Karte"
+ "Benachrichtigungen mit hoher Priorität von der SIM-Karte""Peer hat TTY-Modus \"Vollständig\" angefordert.""Peer hat TTY-Modus \"HCO\" angefordert.""Peer hat TTY-Modus \"VC\" angefordert."
@@ -281,7 +282,7 @@
"Zulassen, dass <b>%1$s</b> auf deine Kontakte zugreift?""Standort""auf den Standort deines Geräts zugreifen"
- "Zulassen, dass <b>%1$s</b> den Gerätestandort abruft?"
+ "Zulassen, dass die App <b>%1$s</b> den Gerätestandort abruft?""Die App hat nur Zugriff auf den Gerätestandort, solange du sie verwendest""Zulassen, dass <b>%1$s</b> <b>ständig</b> auf deinen Standort zugreift?""Die App hat gegenwärtig nur dann Zugriff auf den Gerätestandort, wenn du sie verwendest"
@@ -290,7 +291,7 @@
"Zulassen, dass <b>%1$s</b> auf deinen Kalender zugreift?""SMS""SMS senden und abrufen"
- "Zulassen, dass <b>%1$s</b> SMS sendet und aufruft?"
+ "Zulassen, dass die App <b>%1$s</b> SMS sendet und aufruft?""Speicher""auf Fotos, Medien und Dateien auf deinem Gerät zugreifen""Zulassen, dass <b>%1$s</b> auf Fotos, Medien und Dateien auf deinem Gerät zugreift?"
@@ -428,7 +429,7 @@
"Diese App kann jederzeit Audio über das Mikrofon aufnehmen.""Befehle an die SIM senden""Ermöglicht der App das Senden von Befehlen an die SIM-Karte. Dies ist äußerst risikoreich."
- "körperlichen Aktivitäten erkennen"
+ "Körperliche Aktivitäten erkennen""Diese App kann deine körperliche Aktivität erkennen.""Bilder und Videos aufnehmen""Diese App kann mit der Kamera jederzeit Bilder und Videos aufnehmen."
@@ -550,11 +551,11 @@
"Fingerabdruck-Symbol"
- "Gesichtserkennungshardware verwalten"
+ "Face Unlock-Hardware verwalten""Ermöglicht der App, Gesichtsvorlagen hinzuzufügen oder zu entfernen."
- "Gesichtserkennungshardware verwenden"
- "Ermöglicht der App, für die Authentifizierung Gesichtserkennungshardware zu verwenden"
- "Gesichtserkennung"
+ "Face Unlock-Hardware verwenden"
+ "Ermöglicht der App, zu Authentifizierungszwecken Face Unlock-Hardware zu verwenden"
+ "Face Unlock""Gesicht neu scannen lassen""Für bessere Erkennung Gesicht neu scannen lassen""Gesichtsdaten nicht gut erfasst. Erneut versuchen."
@@ -567,7 +568,7 @@
"Beweg das Smartphone nach links.""Beweg das Smartphone nach rechts.""Bitte sieh direkt auf dein Gerät."
- "Gesicht wurde nicht gefunden. Blicke aufs Telefon."
+ "Halte dein Gesicht direkt vor dein Smartphone.""Zu viel Unruhe. Halte das Smartphone ruhig.""Bitte registriere dein Gesicht noch einmal.""Gesicht wird nicht mehr erkannt. Erneut versuchen."
@@ -576,19 +577,19 @@
"Neig den Kopf etwas weniger stark.""Neig den Kopf etwas weniger stark.""Entferne alles, was dein Gesicht verdeckt."
- "Reinige den Sensor am oberen Rand des Bildschirms."
+ "Reinige den oberen Teil deines Bildschirms, einschließlich der schwarzen Leiste""Gesicht nicht erkannt. Hardware nicht verfügbar."
- "Gesichtserkennung noch einmal versuchen."
+ "Face Unlock noch einmal versuchen.""Kein Speicherplatz frei. Bitte erst ein Gesicht löschen."
- "Gesichtserkennung abgebrochen"
- "Gesichtserkennung vom Nutzer abgebrochen"
+ "Gesichtserkennung abgebrochen."
+ "Face Unlock vom Nutzer abgebrochen.""Zu viele Versuche, bitte später noch einmal versuchen"
- "Zu viele Versuche. Die Gesichtserkennung wurde deaktiviert."
+ "Zu viele Versuche. Face Unlock wurde deaktiviert.""Gesichtsprüfung nicht möglich. Noch mal versuchen."
- "Die Gesichtserkennung ist nicht eingerichtet"
- "Gesichtserkennung wird auf diesem Gerät nicht unterstützt"
+ "Face Unlock ist nicht eingerichtet."
+ "Face Unlock wird auf diesem Gerät nicht unterstützt.""Gesicht %d"
@@ -995,7 +996,7 @@
"Wochen""Jahr""Jahre"
- "jetzt"
+ "Jetzt"%d min%d min
@@ -1254,10 +1255,10 @@
"Tippen, um alle Netzwerke zu sehen""Verbinden""Alle Netzwerke"
- "Verbindung mit WLANs herstellen?"
- "Vorschlag von %s"
- "Ja"
- "Nein"
+ "Vorgeschlagene WLANs zulassen?"
+ "Von %s vorgeschlagene Netzwerke. Gerät verbindet sich möglicherweise automatisch."
+ "Zulassen"
+ "Nein danke""WLAN wird automatisch aktiviert""Wenn du in der Nähe eines sicheren gespeicherten Netzwerks bist""Nicht wieder aktivieren"
@@ -1887,8 +1888,8 @@
"Unkategorisiert""Du hast die Wichtigkeit dieser Benachrichtigungen festgelegt.""Diese Benachrichtigung ist aufgrund der beteiligten Personen wichtig."
- "Möchtest du zulassen, dass %1$s einen neuen Nutzer mit %2$s erstellt?"
- "Möchtest du zulassen, dass %1$s einen neuen Nutzer mit %2$s erstellt? Dieses Konto wird jedoch bereits von einem anderen Nutzer verwendet."
+ "Es gibt bereits einen Nutzer mit %2$s. Möchtest du zulassen, dass %1$s einen neuen Nutzer mit diesem Konto erstellt?"
+ "Möchtest du zulassen, dass %1$s einen neuen Nutzer mit %2$s erstellt?""Sprache hinzufügen""Region auswählen""Sprache eingeben"
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 766b2ead6d325b45d1a014d28255c4ee523f2c4b..91105bb87ed075325b3ef22f8e0484b79813412d 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -95,6 +95,7 @@
"Μηνύματα αυτόματου τηλεφωνητή""Κλήση Wi-Fi""Κατάσταση SIM"
+ "Κατάσταση SIM υψηλής προτεραιότητας""Αίτημα peer για TTY ΠΛΗΡΗΣ Λειτουργία""Αίτημα peer για TTY Λειτουργία HCO""Αίτημα peer για TTY Λειτουργία VCO"
@@ -550,11 +551,11 @@
"Εικονίδιο δακτυλικών αποτυπωμάτων"
- "διαχείριση υλικολογισμ. ελέγχου ταυτότ. προσώπου"
+ "διαχείριση εξοπλισμού Face Unlock""Επιτρέπει στην εφαρμογή να επικαλείται μεθόδους προσθήκης/διαγραφής προτύπων για χρήση."
- "χρήση υλικολογισμικού ελέγχου ταυτότητας προσώπου"
- "Επιτρέπει στην εφαρμογή να χρησιμοποιεί υλικολογισμικό για έλεγχο ταυτότητας"
- "Έλεγχος ταυτότητας προσώπου"
+ "χρήση εξοπλισμού Face Unlock"
+ "Επιτρέπει στην εφαρμογή να χρησιμοποιεί εξοπλισμό Face Unlock για έλεγχο ταυτότητας"
+ "Face Unlock""Εγγράψτε ξανά το πρόσωπό σας""Για να βελτιώσετε την αναγνώριση, εγγράψτε ξανά το πρόσωπό σας""Αδύνατη λήψη ακριβών δεδομ. προσώπου. Επανάληψη."
@@ -567,7 +568,7 @@
"Μετακινήστε το τηλέφωνο στα αριστερά.""Μετακινήστε το τηλέφωνο στα δεξιά.""Κοιτάξτε απευθείας τη συσκευή σας."
- "Δεν εντοπίστηκε το πρόσωπό σας. Δείτε το τηλέφωνο."
+ "Στρέψτε το πρόσωπό σάς απευθείας στο τηλέφωνο.""Πάρα πολλή κίνηση. Κρατήστε σταθερό το τηλέφωνο.""Καταχωρίστε ξανά το πρόσωπό σας.""Αδύνατη η αναγνώριση του προσώπου. Επανάληψη."
@@ -576,19 +577,19 @@
"Στρέψτε λιγότερο το κεφάλι σας.""Στρέψτε λιγότερο το κεφάλι σας.""Απομακρύνετε οτιδήποτε κρύβει το πρόσωπό σας."
- "Καθαρίστε τον αισθητήρα επάνω στην οθόνη."
+ "Καθαρίστε το επάνω μέρος της οθόνης σας, συμπεριλαμβανομένης της μαύρης γραμμής""Αδύν. επαλήθ. προσώπου. Μη διαθέσιμος εξοπλισμός."
- "Επαναλάβετε τον έλεγχο ταυτότητας προσώπου."
+ "Δοκιμάστε ξανά το Face Unlock.""Η αποθήκ. νέων δεδομ. προσώπ. είναι αδύν. Διαγρ. ένα παλιό."
- "Η λειτουργία προσώπου ακυρώθηκε"
- "Ο έλεγχ. ταυτότ. προσώπου ακυρώθηκε από τον χρήστη"
+ "Η ενέργεια προσώπου ακυρώθηκε."
+ "Το Face Unlock ακυρώθηκε από τον χρήστη.""Πάρα πολλές προσπάθειες. Δοκιμάστε ξανά αργότερα."
- "Υπερβ. πολλές προσπάθειες. Ο έλεγχ. ταυτ. προσώπου απενεργ."
+ "Υπερβολικά πολλές προσπάθειες. Το Face Unlock απενεργοποιήθηκε.""Αδύνατη επαλήθευση του προσώπου. Επανάληψη."
- "Δεν έχετε ρυθμίσει τον έλεγχο ταυτότητας προσώπου"
- "Ο έλεγχος ταυτότητας προσώπου δεν υποστηρίζεται στη συσκευή"
+ "Δεν έχετε ρυθμίσει το Face Unlock."
+ "Το Face Unlock δεν υποστηρίζεται σε αυτήν τη συσκευή.""Πρόσωπο %d"
@@ -1254,10 +1255,10 @@
"Πατήστε για να δείτε όλα τα δίκτυα""Σύνδεση""Όλα τα δίκτυα"
- "Σύνδεση σε δίκτυα Wi-Fi;"
- "Προτείνεται από %s"
- "Ναι"
- "Όχι"
+ "Να επιτρέπονται προτεινόμενα δίκτυα Wi‑Fi;"
+ "Προτεινόμενα δίκτυα %s. Η συσκευή μπορεί να συνδεθεί αυτόματα."
+ "Αποδοχή"
+ "Όχι, ευχαριστώ""Το Wi‑Fi θα ενεργοποιηθεί αυτόματα""Όταν βρίσκεστε κοντά σε αποθηκευμένο δίκτυο υψηλής ποιότητας""Να μην ενεργοποιηθεί ξανά"
@@ -1672,7 +1673,7 @@
"Επιλέξτε μια υπηρεσία που θα χρησιμοποιείται με την κίνηση προσβασιμότητας (σύρετε με δύο δάχτυλα προς τα επάνω από το κάτω μέρος της οθόνης):""Επιλέξτε μια υπηρεσία που θα χρησιμοποιείται με την κίνηση προσβασιμότητας (σύρετε με τρία δάχτυλα προς τα επάνω από το κάτω μέρος της οθόνης):""Για εναλλαγή μεταξύ υπηρεσιών, αγγίξτε παρατεταμένα το κουμπί προσβασιμότητας."
- "Για εναλλαγή μεταξύ υπηρεσιών, σύρετε παρατεταμένα με δύο δάχτυλα προς τα επάνω."
+ "Για εναλλαγή μεταξύ υπηρεσιών, σύρετε παρατεταμένα με δύο δάχτυλα προς τα επάνω και μην τα απομακρύνετε από την οθόνη.""Για εναλλαγή μεταξύ υπηρεσιών, σύρετε παρατεταμένα με τρία δάχτυλα προς τα επάνω.""Μεγιστοποίηση""Τρέχων χρήστης %1$s."
@@ -1887,8 +1888,8 @@
"Μη κατηγοριοποιημένο""Μπορείτε να ρυθμίσετε τη βαρύτητα αυτών των ειδοποιήσεων.""Αυτό είναι σημαντικό λόγω των ατόμων που συμμετέχουν."
- "Να επιτραπεί στην εφαρμογή %1$s να δημιουργήσει έναν νέο χρήστη με το λογαριασμό %2$s;"
- "Να επιτραπεί στην εφαρμογή %1$s να δημιουργήσει έναν νέο χρήστη με το λογαριασμό %2$s (υπάρχει ήδη χρήστης με αυτόν το λογαριασμό);"
+ "Επιτρέπετε στην εφαρμογή %1$s να δημιουργήσει έναν νέο χρήστη με τον λογαριασμό %2$s (υπάρχει ήδη χρήστης με αυτόν τον λογαριασμό);"
+ "Επιτρέπετε στην εφαρμογή %1$s να δημιουργήσει έναν νέο χρήστη με τον λογαριασμό %2$s;""Προσθήκη γλώσσας""Προτίμηση περιοχής""Εισαγ. όνομα γλώσσας"
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 9ca98f308dc2ea6640177dacb52289ccd8f0ed1e..53fd166f76d8ac8a1b6acd754ed3e7fe819e8cef 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -95,6 +95,7 @@
"Voicemail messages""Wi-Fi Calling""SIM status"
+ "High priority SIM status""Peer requested TTY Mode FULL""Peer requested TTY Mode HCO""Peer requested TTY Mode VCO"
@@ -550,11 +551,11 @@
"Fingerprint icon"
- "manage face authentication hardware"
+ "manage face unlock hardware""Allows the app to invoke methods to add and delete facial templates for use."
- "use face authentication hardware"
- "Allows the app to use face authentication hardware for authentication"
- "Face Authentication"
+ "use face unlock hardware"
+ "Allows the app to use face unlock hardware for authentication"
+ "Face unlock""Re-enrol your face""To improve recognition, please re-enrol your face""Couldn’t capture accurate face data. Try again."
@@ -567,7 +568,7 @@
"Move phone to the left.""Move phone to the right.""Please look more directly at your device."
- "Can’t see your face. Look at the phone."
+ "Position your face directly in front of the phone.""Too much motion. Hold phone steady.""Please re-enroll your face.""No longer able to recognise face. Try again."
@@ -576,19 +577,19 @@
"Turn your head a little less.""Turn your head a little less.""Remove anything hiding your face."
- "Clean the sensor at the top edge of the screen."
+ "Clean the top of your screen, including the black bar""Can’t verify face. Hardware not available."
- "Try face authentication again."
+ "Try face unlock again.""Can’t store new face data. Delete an old one first."
- "Face operation cancelled"
- "Face authentication cancelled by user"
+ "Face operation cancelled."
+ "Face unlock cancelled by user.""Too many attempts. Try again later."
- "Too many attempts. Face authentication disabled."
+ "Too many attempts. Face unlock disabled.""Can’t verify face. Try again."
- "You haven’t set up face authentication"
- "Face authentication is not supported on this device"
+ "You haven’t set up face unlock."
+ "Face unlock is not supported on this device.""Face %d"
@@ -817,7 +818,7 @@
"Try again""Try again""Unlock for all features and data"
- "Maximum Face Unlock attempts exceeded"
+ "Maximum face unlock attempts exceeded""No SIM card""No SIM card in tablet.""No SIM card in TV."
@@ -1254,10 +1255,10 @@
"Tap to see all networks""Connect""All networks"
- "Connect to Wi‑Fi networks?"
- "Suggested by %s"
- "Yes"
- "No"
+ "Allow suggested Wi‑Fi networks?"
+ "%s suggested networks. Device may connect automatically."
+ "Allow"
+ "No, thanks""Wi‑Fi will turn on automatically""When you\'re near a high‑quality saved network""Don\'t turn back on"
@@ -1887,8 +1888,8 @@
"Uncategorised""You set the importance of these notifications.""This is important because of the people involved."
- "Allow %1$s to create a new User with %2$s ?"
- "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s (a User with this account already exists)?"
+ "Allow %1$s to create a new User with %2$s?""Add a language""Region preference""Type language name"
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 4da6381a2887b3e5958091ebe9374941f1ed55dd..661c802444e998c008870a6847539f8b0cab1b3b 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -95,6 +95,7 @@
"Voicemail messages""Wi-Fi Calling""SIM status"
+ "High priority SIM status""Peer requested TTY Mode FULL""Peer requested TTY Mode HCO""Peer requested TTY Mode VCO"
@@ -550,11 +551,11 @@
"Fingerprint icon"
- "manage face authentication hardware"
+ "manage face unlock hardware""Allows the app to invoke methods to add and delete facial templates for use."
- "use face authentication hardware"
- "Allows the app to use face authentication hardware for authentication"
- "Face Authentication"
+ "use face unlock hardware"
+ "Allows the app to use face unlock hardware for authentication"
+ "Face unlock""Re-enrol your face""To improve recognition, please re-enrol your face""Couldn’t capture accurate face data. Try again."
@@ -567,7 +568,7 @@
"Move phone to the left.""Move phone to the right.""Please look more directly at your device."
- "Can’t see your face. Look at the phone."
+ "Position your face directly in front of the phone.""Too much motion. Hold phone steady.""Please re-enroll your face.""No longer able to recognise face. Try again."
@@ -576,19 +577,19 @@
"Turn your head a little less.""Turn your head a little less.""Remove anything hiding your face."
- "Clean the sensor at the top edge of the screen."
+ "Clean the top of your screen, including the black bar""Can’t verify face. Hardware not available."
- "Try face authentication again."
+ "Try face unlock again.""Can’t store new face data. Delete an old one first."
- "Face operation cancelled"
- "Face authentication cancelled by user"
+ "Face operation cancelled."
+ "Face unlock cancelled by user.""Too many attempts. Try again later."
- "Too many attempts. Face authentication disabled."
+ "Too many attempts. Face unlock disabled.""Can’t verify face. Try again."
- "You haven’t set up face authentication"
- "Face authentication is not supported on this device"
+ "You haven’t set up face unlock."
+ "Face unlock is not supported on this device.""Face %d"
@@ -817,7 +818,7 @@
"Try again""Try again""Unlock for all features and data"
- "Maximum Face Unlock attempts exceeded"
+ "Maximum face unlock attempts exceeded""No SIM card""No SIM card in tablet.""No SIM card in TV."
@@ -1254,10 +1255,10 @@
"Tap to see all networks""Connect""All networks"
- "Connect to Wi‑Fi networks?"
- "Suggested by %s"
- "Yes"
- "No"
+ "Allow suggested Wi‑Fi networks?"
+ "%s suggested networks. Device may connect automatically."
+ "Allow"
+ "No, thanks""Wi‑Fi will turn on automatically""When you\'re near a high‑quality saved network""Don\'t turn back on"
@@ -1887,8 +1888,8 @@
"Uncategorised""You set the importance of these notifications.""This is important because of the people involved."
- "Allow %1$s to create a new User with %2$s ?"
- "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s (a User with this account already exists)?"
+ "Allow %1$s to create a new User with %2$s?""Add a language""Region preference""Type language name"
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 9ca98f308dc2ea6640177dacb52289ccd8f0ed1e..53fd166f76d8ac8a1b6acd754ed3e7fe819e8cef 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -95,6 +95,7 @@
"Voicemail messages""Wi-Fi Calling""SIM status"
+ "High priority SIM status""Peer requested TTY Mode FULL""Peer requested TTY Mode HCO""Peer requested TTY Mode VCO"
@@ -550,11 +551,11 @@
"Fingerprint icon"
- "manage face authentication hardware"
+ "manage face unlock hardware""Allows the app to invoke methods to add and delete facial templates for use."
- "use face authentication hardware"
- "Allows the app to use face authentication hardware for authentication"
- "Face Authentication"
+ "use face unlock hardware"
+ "Allows the app to use face unlock hardware for authentication"
+ "Face unlock""Re-enrol your face""To improve recognition, please re-enrol your face""Couldn’t capture accurate face data. Try again."
@@ -567,7 +568,7 @@
"Move phone to the left.""Move phone to the right.""Please look more directly at your device."
- "Can’t see your face. Look at the phone."
+ "Position your face directly in front of the phone.""Too much motion. Hold phone steady.""Please re-enroll your face.""No longer able to recognise face. Try again."
@@ -576,19 +577,19 @@
"Turn your head a little less.""Turn your head a little less.""Remove anything hiding your face."
- "Clean the sensor at the top edge of the screen."
+ "Clean the top of your screen, including the black bar""Can’t verify face. Hardware not available."
- "Try face authentication again."
+ "Try face unlock again.""Can’t store new face data. Delete an old one first."
- "Face operation cancelled"
- "Face authentication cancelled by user"
+ "Face operation cancelled."
+ "Face unlock cancelled by user.""Too many attempts. Try again later."
- "Too many attempts. Face authentication disabled."
+ "Too many attempts. Face unlock disabled.""Can’t verify face. Try again."
- "You haven’t set up face authentication"
- "Face authentication is not supported on this device"
+ "You haven’t set up face unlock."
+ "Face unlock is not supported on this device.""Face %d"
@@ -817,7 +818,7 @@
"Try again""Try again""Unlock for all features and data"
- "Maximum Face Unlock attempts exceeded"
+ "Maximum face unlock attempts exceeded""No SIM card""No SIM card in tablet.""No SIM card in TV."
@@ -1254,10 +1255,10 @@
"Tap to see all networks""Connect""All networks"
- "Connect to Wi‑Fi networks?"
- "Suggested by %s"
- "Yes"
- "No"
+ "Allow suggested Wi‑Fi networks?"
+ "%s suggested networks. Device may connect automatically."
+ "Allow"
+ "No, thanks""Wi‑Fi will turn on automatically""When you\'re near a high‑quality saved network""Don\'t turn back on"
@@ -1887,8 +1888,8 @@
"Uncategorised""You set the importance of these notifications.""This is important because of the people involved."
- "Allow %1$s to create a new User with %2$s ?"
- "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s (a User with this account already exists)?"
+ "Allow %1$s to create a new User with %2$s?""Add a language""Region preference""Type language name"
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 9ca98f308dc2ea6640177dacb52289ccd8f0ed1e..53fd166f76d8ac8a1b6acd754ed3e7fe819e8cef 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -95,6 +95,7 @@
"Voicemail messages""Wi-Fi Calling""SIM status"
+ "High priority SIM status""Peer requested TTY Mode FULL""Peer requested TTY Mode HCO""Peer requested TTY Mode VCO"
@@ -550,11 +551,11 @@
"Fingerprint icon"
- "manage face authentication hardware"
+ "manage face unlock hardware""Allows the app to invoke methods to add and delete facial templates for use."
- "use face authentication hardware"
- "Allows the app to use face authentication hardware for authentication"
- "Face Authentication"
+ "use face unlock hardware"
+ "Allows the app to use face unlock hardware for authentication"
+ "Face unlock""Re-enrol your face""To improve recognition, please re-enrol your face""Couldn’t capture accurate face data. Try again."
@@ -567,7 +568,7 @@
"Move phone to the left.""Move phone to the right.""Please look more directly at your device."
- "Can’t see your face. Look at the phone."
+ "Position your face directly in front of the phone.""Too much motion. Hold phone steady.""Please re-enroll your face.""No longer able to recognise face. Try again."
@@ -576,19 +577,19 @@
"Turn your head a little less.""Turn your head a little less.""Remove anything hiding your face."
- "Clean the sensor at the top edge of the screen."
+ "Clean the top of your screen, including the black bar""Can’t verify face. Hardware not available."
- "Try face authentication again."
+ "Try face unlock again.""Can’t store new face data. Delete an old one first."
- "Face operation cancelled"
- "Face authentication cancelled by user"
+ "Face operation cancelled."
+ "Face unlock cancelled by user.""Too many attempts. Try again later."
- "Too many attempts. Face authentication disabled."
+ "Too many attempts. Face unlock disabled.""Can’t verify face. Try again."
- "You haven’t set up face authentication"
- "Face authentication is not supported on this device"
+ "You haven’t set up face unlock."
+ "Face unlock is not supported on this device.""Face %d"
@@ -817,7 +818,7 @@
"Try again""Try again""Unlock for all features and data"
- "Maximum Face Unlock attempts exceeded"
+ "Maximum face unlock attempts exceeded""No SIM card""No SIM card in tablet.""No SIM card in TV."
@@ -1254,10 +1255,10 @@
"Tap to see all networks""Connect""All networks"
- "Connect to Wi‑Fi networks?"
- "Suggested by %s"
- "Yes"
- "No"
+ "Allow suggested Wi‑Fi networks?"
+ "%s suggested networks. Device may connect automatically."
+ "Allow"
+ "No, thanks""Wi‑Fi will turn on automatically""When you\'re near a high‑quality saved network""Don\'t turn back on"
@@ -1887,8 +1888,8 @@
"Uncategorised""You set the importance of these notifications.""This is important because of the people involved."
- "Allow %1$s to create a new User with %2$s ?"
- "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s (a User with this account already exists)?"
+ "Allow %1$s to create a new User with %2$s?""Add a language""Region preference""Type language name"
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 71946ee5a5669eaac400cf49bcc799f6b4fcccc2..2d1220f64aa518be85b8c1084ff107fb0770d0dc 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -95,6 +95,7 @@
"Voicemail messages""Wi-Fi calling""SIM status"
+ "High priority SIM status""Peer requested TTY Mode FULL""Peer requested TTY Mode HCO""Peer requested TTY Mode VCO"
@@ -550,11 +551,11 @@
"Fingerprint icon"
- "manage face authentication hardware"
+ "manage face unlock hardware""Allows the app to invoke methods to add and delete facial templates for use."
- "use face authentication hardware"
- "Allows the app to use face authentication hardware for authentication"
- "Face Authentication"
+ "use face unlock hardware"
+ "Allows the app to use face unlock hardware for authentication"
+ "Face unlock""Re-enroll your face""To improve recognition, please re-enroll your face""Couldn’t capture accurate face data. Try again."
@@ -567,7 +568,7 @@
"Move phone to the left.""Move phone to the right.""Please look more directly at your device."
- "Can’t see your face. Look at the phone."
+ "Position your face directly in front of the phone.""Too much motion. Hold phone steady.""Please re-enroll your face.""No longer able to recognize face. Try again."
@@ -576,19 +577,19 @@
"Turn your head a little less.""Turn your head a little less.""Remove anything hiding your face."
- "Clean the sensor at the top edge of the screen."
+ "Clean the top of your screen, including the black bar""Can’t verify face. Hardware not available."
- "Try face authentication again."
+ "Try face unlock again.""Can’t store new face data. Delete an old one first."
- "Face operation canceled"
- "Face authentication canceled by user"
+ "Face operation canceled."
+ "Face unlock canceled by user.""Too many attempts. Try again later."
- "Too many attempts. Face authentication disabled."
+ "Too many attempts. Face unlock disabled.""Can’t verify face. Try again."
- "You haven’t set up face authentication"
- "Face authentication is not supported on this device"
+ "You haven’t set up face unlock."
+ "Face unlock is not supported on this device.""Face %d"
@@ -1254,10 +1255,10 @@
"Tap to see all networks""Connect""All networks"
- "Connect to Wi‑Fi networks?"
- "Suggested by %s"
- "Yes"
- "No"
+ "Allow suggested Wi‑Fi networks?"
+ "%s suggested networks. Device may connect automatically."
+ "Allow"
+ "No thanks""Wi‑Fi will turn on automatically""When you\'re near a high quality saved network""Don\'t turn back on"
@@ -1887,8 +1888,8 @@
"Uncategorized""You set the importance of these notifications.""This is important because of the people involved."
- "Allow %1$s to create a new User with %2$s ?"
- "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s (a User with this account already exists) ?"
+ "Allow %1$s to create a new User with %2$s ?""Add a language""Region preference""Type language name"
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 2b56aa6be7807cceabf1940dd297ae678f228cbe..36c03976b16f775a9f2328c7b473ec423e595fed 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -30,7 +30,7 @@
"<Sin título>""(No hay número de teléfono)""Desconocido"
- "Correo de voz"
+ "Buzón de voz""MSISDN1""Problema de conexión o código incorrecto de MMI.""La operación está limitada a números de marcación fija."
@@ -95,6 +95,7 @@
"Mensajes del buzón de voz""Llamada con Wi-Fi""Estado de SIM"
+ "Notificaciones de prioridad alta sobre el estado de la SIM""El dispositivo del mismo nivel solicitó el modo TTY FULL.""El dispositivo del mismo nivel solicitó el modo TTY HCO.""El dispositivo del mismo nivel solicitó el modo TTY VCO."
@@ -550,11 +551,11 @@
"Ícono de huella digital"
- "administrar el hardware de autenticación facial"
+ "administrar el hardware de Desbloqueo facial""Permite que la app emplee métodos para agregar y borrar plantillas de rostros para su uso."
- "usar el hardware de autenticación facial"
- "Permite que la app use el hardware de autenticación facial para reconocerte"
- "Autenticación facial"
+ "usar el hardware de Desbloqueo facial"
+ "Permite que la app use el hardware de Desbloqueo facial con fines de autenticación"
+ "Desbloqueo facial""Vuelve a registrar tu rostro""Para mejorar el reconocimiento, vuelve a registrar tu rostro""Datos faciales imprecisos. Vuelve a intentarlo."
@@ -567,7 +568,7 @@
"Mueve el teléfono hacia la izquierda.""Mueve el teléfono hacia la derecha.""Mira directamente al dispositivo."
- "No se ve tu cara. Mira el teléfono."
+ "Ubica el rostro directamente frente al teléfono.""Te estás moviendo demasiado. No muevas el teléfono""Vuelve a registrar tu cara.""Ya no se reconoce la cara. Vuelve a intentarlo."
@@ -576,19 +577,19 @@
"Gira la cabeza un poco menos.""Gira la cabeza un poco menos.""Quítate cualquier objeto que te cubra el rostro."
- "Limpiar sensor del borde superior de la pantalla."
+ "Limpia la parte superior de la pantalla, incluida la barra negra""No se verificó el rostro. Hardware no disponible."
- "Vuelve a realizar la autenticación de rostro."
+ "Vuelve a probar el Desbloqueo facial.""No hay espacio para datos faciales nuevos. Borra uno viejo."
- "Se canceló el reconocimiento facial"
- "El usuario canceló la autenticación facial"
+ "Se canceló el reconocimiento facial."
+ "El usuario canceló el Desbloqueo facial.""Demasiados intentos. Inténtalo de nuevo más tarde."
- "Demasiados intentos. Se inhabilitó la autenticación facial."
+ "Demasiados intentos. Se inhabilitó el Desbloqueo facial.""No se pudo verificar la cara. Vuelve a intentarlo."
- "No configuraste la autenticación facial"
- "No se admite la autenticación facial en este dispositivo"
+ "No configuraste el Desbloqueo facial."
+ "No se admite el Desbloqueo facial en este dispositivo.""Rostro %d"
@@ -940,7 +941,7 @@
"Permite que la aplicación modifique el historial o los favoritos del navegador almacenados en el dispositivo. La aplicación puede utilizar este permiso para borrar o modificar los datos del navegador. Nota: Este permiso no puede ser utilizado por navegadores externos ni otras aplicaciones que tengan funciones de navegación por Internet.""programar una alarma""Permite que la aplicación establezca una alarma en una aplicación de alarma instalada. Es posible que algunas aplicaciones de alarma no incluyan esta función."
- "agregar correo de voz"
+ "agregar buzón de voz""Permite que la aplicación agregue mensajes a la bandeja de entrada de tu buzón de voz.""Modificar los permisos de ubicación geográfica del navegador""Permite que la aplicación modifique los permisos de ubicación geográfica del navegador. Las aplicaciones maliciosas pueden utilizar esto para permitir el envío de información de ubicación a sitios web arbitrarios."
@@ -1254,10 +1255,10 @@
"Presiona para ver todas las redes""Conectar""Todas las redes"
- "¿Quieres conectarte a redes Wi-Fi?"
- "Sugerido por %s"
- "Sí"
- "No"
+ "¿Quieres permitir las redes Wi‑Fi sugeridas?"
+ "%s sugirió redes. Es posible que el dispositivo se conecte automáticamente."
+ "Permitir"
+ "No, gracias""Se activará la conexión Wi-Fi automáticamente""Cuando estés cerca de una red guardada de alta calidad""No volver a activar"
@@ -1887,8 +1888,8 @@
"Sin categoría""Estableciste la importancia de estas notificaciones.""Es importante debido a las personas involucradas."
- "¿Quieres permitir que %1$s cree un usuario nuevo con %2$s?"
- "¿Quieres permitir que %1$s cree un usuario nuevo con %2$s? (Ya existe un usuario con esta cuenta)"
+ "¿Quieres permitir que %1$s cree un usuario nuevo con %2$s? (Ya existe un usuario con esta cuenta)"
+ "¿Deseas permitir que %1$s cree un usuario nuevo con %2$s?""Agregar un idioma""Preferencia de región""Nombre del idioma"
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 7a31b1af781f6a63bbee655956ec889fc2056c2e..7bb51b276452ec061943b98e49d3cfba3766b99a 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -95,6 +95,7 @@
"Mensajes de voz""Llamada por Wi-Fi""Estado de la tarjeta SIM"
+ "Estado de SIM de alta prioridad""Un dispositivo ha solicitado el modo TTY FULL""Un dispositivo ha solicitado el modo TTY HCO""Un dispositivo ha solicitado el modo TTY VCO"
@@ -550,11 +551,11 @@
"Icono de huella digital"
- "gestionar el hardware de autenticación facial"
+ "gestionar el hardware de desbloqueo facial""Permite que la app use métodos para añadir y suprimir plantillas de caras para su uso."
- "usar el hardware de autenticación facial"
- "Permite que la aplicación utilice el hardware de autenticación facial para autenticarte"
- "Autenticación facial"
+ "Utilizar hardware de desbloqueo facial"
+ "Permite que la aplicación utilice el hardware de desbloqueo facial para autenticarte"
+ "Desbloqueo facial""Volver a registrar la cara""Para mejorar el reconocimiento, vuelve a registrar tu cara""Datos faciales no reconocidos. Vuelve a intentarlo."
@@ -567,7 +568,7 @@
"Mueve el teléfono hacia la izquierda.""Mueve el teléfono hacia la derecha.""Mira de forma más directa al dispositivo."
- "No se detecta tu cara. Mira al teléfono."
+ "Coloca la cara directamente frente al teléfono.""El teléfono se mueve demasiado. Mantenlo quieto.""Vuelve a registrar tu cara.""No puede reconocer tu cara. Vuelve a intentarlo."
@@ -576,19 +577,19 @@
"Gira la cabeza un poco menos.""No gires tanto la cabeza.""Retira cualquier objeto que te tape la cara."
- "Limpia el sensor situado en la parte superior."
+ "Limpia la parte superior de la pantalla, incluida la barra de color negro""No se puede verificar. Hardware no disponible."
- "Vuelve a probar la autenticación facial."
+ "Vuelve a probar el desbloqueo facial.""Para guardar nuevos datos faciales, borra otros antiguos."
- "Se ha cancelado el reconocimiento facial"
- "El usuario ha cancelado la autenticación facial"
+ "Se ha cancelado el reconocimiento facial."
+ "El usuario ha cancelado el desbloqueo facial.""Demasiados intentos. Inténtalo de nuevo más tarde."
- "Muchos intentos. Se ha inhabilitado la autenticación facial."
+ "Muchos intentos. Se ha inhabilitado el desbloqueo facial.""No se ha verificado tu cara. Vuelve a intentarlo."
- "No has configurado la autenticación facial"
- "Autenticación facial no disponible en este dispositivo"
+ "No has configurado el desbloqueo facial."
+ "El desbloqueo facial no está disponible en este dispositivo.""Cara %d"
@@ -1254,10 +1255,10 @@
"Toca para ver todas las redes""Conectarse""Todas las redes"
- "¿Quieres conectarte a redes Wi-Fi?"
- "Sugerido por %s"
- "Sí"
- "No"
+ "¿Permitir sugerencias de redes Wi‑Fi?"
+ "%s te ha sugerido alguna red. El dispositivo puede que se conecte automáticamente."
+ "Permitir"
+ "No, gracias""La conexión Wi‑Fi se activará automáticamente""Cuando estés cerca de una red de alta calidad guardada""No volver a activar"
@@ -1354,7 +1355,7 @@
"Se ha detectado un accesorio de audio analógico""El dispositivo adjunto no es compatible con este teléfono. Toca para obtener más información.""Depuración USB habilitada"
- "Toca para desactivar la depuración USB."
+ "Tocar para desactivar depuración USB""Seleccionar para inhabilitar la depuración USB""Modo de agente de prueba habilitado""Restablece los ajustes de fábrica para inhabilitar el modo de agente de prueba."
@@ -1669,8 +1670,8 @@
"El acceso directo a accesibilidad ha desactivado %1$s""Para utilizar %1$s, mantén pulsadas ambas teclas de volumen durante 3 segundos""Selecciona el servicio que se utilizará cuando toques el botón Accesibilidad:"
- "Elige el servicio que se utilizará con el gesto de accesibilidad (desliza dos dedos hacia arriba desde la parte inferior de la pantalla):"
- "Elige el servicio que se utilizará con el gesto de accesibilidad (desliza tres dedos hacia arriba desde la parte inferior de la pantalla):"
+ "Elige el servicio que se utilizará con el gesto de accesibilidad (deslizar dos dedos hacia arriba desde la parte inferior de la pantalla):"
+ "Elige el servicio que se utilizará con el gesto de accesibilidad (deslizar tres dedos hacia arriba desde la parte inferior de la pantalla):""Para cambiar de un servicio a otro, mantén pulsado el botón de accesibilidad.""Para cambiar de un servicio a otro, desliza dos dedos hacia arriba y mantén pulsada la pantalla.""Para cambiar de un servicio a otro, desliza tres dedos hacia arriba y mantén pulsada la pantalla."
@@ -1887,9 +1888,9 @@
"Sin clasificar""Tú determinas la importancia de estas notificaciones.""Esto es importante por los usuarios implicados."
- "¿Permitir que %1$s cree un usuario con la cuenta %2$s?"
- "¿Permitir que %1$s cree un usuario con la cuenta %2$s (ya existe un usuario con esta cuenta)?"
- "Añade un idioma"
+ "¿Permitir que %1$s cree otro usuario con la cuenta %2$s, que ya tiene uno?"
+ "¿Permitir que %1$s cree otro usuario con la cuenta %2$s?"
+ "Añadir un idioma""Preferencia de región""Nombre de idioma""Sugeridos"
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 3f37768e9b3d9b1d0a3e2b22f5a0695aa98e1c65..e2afa3b1d023e45f3a9c712c148f50c00c4e7479 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -95,6 +95,7 @@
"Kõnepostisõnumid""WiFi-kõned""SIM-kaardi olek"
+ "Kõrge prioriteediga SIM-i olek""Partner taotles TTY-režiimi TÄIELIK""Partner taotles TTY-režiimi HCO""Partner taotles TTY-režiimi VCO"
@@ -242,7 +243,7 @@
"Hääletu režiim""Heli on VÄLJAS""Heli on SEES"
- "Lennurežiim"
+ "Lennukirežiim""Lennurežiim on SEES""Lennurežiim on VÄLJAS""Seaded"
@@ -550,11 +551,11 @@
"Sõrmejälje ikoon"
- "hallata näo autentimise riistvara"
+ "hallata Face Unlocki riistvara""Lubab rakendusel tühistada meetodid kasutatavate näomallide lisamiseks ja kustutamiseks."
- "kasutada näo autentimise riistvara"
- "Võimaldab rakendusel autentimiseks kasutada näo autentimise riistvara"
- "Näo autentimine"
+ "kasutada Face Unlocki riistvara"
+ "Võimaldab rakendusel autentimiseks kasutada Face Unlocki riistvara"
+ "Face Unlock""Registreerige oma nägu uuesti""Tuvastamise parandamiseks registreerige oma nägu uuesti""Näoandmeid ei saanud jäädvustada. Proovige uuesti."
@@ -567,7 +568,7 @@
"Liigutage telefoni vasakule.""Liigutage telefoni paremale.""Vaadake otse oma seadmesse."
- "Teie nägu ei ole näha. Vaadake telefoni poole."
+ "Hoidke oma nägu otse telefoni ees.""Liiga palju liikumist. Hoidke telefoni paigal.""Registreerige oma nägu uuesti.""Nägu ei õnnestu enam tuvastada. Proovige uuesti."
@@ -576,19 +577,19 @@
"Pöörake oma pead veidi vähem.""Pöörake oma pead veidi vähem.""Eemaldage kõik, mis varjab teie nägu."
- "Puhastage ekraani ülaservas olev andur."
+ "Puhastage ekraani ülaosa, sh musta värvi riba""Nägu ei saa kinnitada. Riistvara pole saadaval."
- "Proovige uuesti näo autentimist."
+ "Proovige Face Unlocki uuesti.""Uue näo andmeid ei saa salvestada. Kustutage enne vanad."
- "Näo autentimise toiming tühistati"
- "Kasutaja tühistas näo autentimise"
+ "Näotuvastuse toiming tühistati."
+ "Kasutaja tühistas Face Unlocki.""Liiga palju katseid. Proovige hiljem uuesti."
- "Liiga palju katseid. Näo autentimine on keelatud."
+ "Liiga palju katseid. Face Unlock on keelatud.""Nägu ei saa kinnitada. Proovige uuesti."
- "Näo autentimist ei ole seadistatud."
- "Seade ei toeta näo autentimist"
+ "Face Unlocki ei ole seadistatud."
+ "Seade ei toeta Face Unlocki.""Nägu %d"
@@ -1254,10 +1255,10 @@
"Puudutage kõikide võrkude nägemiseks""Ühenda""Kõik võrgud"
- "Kas soovite luua ühenduse WiFi-võrkudega?"
- "Soovitas %s"
- "Jah"
- "Ei"
+ "Kas lubada soovitatud WiFi-võrgud?"
+ "Rakenduse %s soovitatud võrgud. Seade võib automaatselt ühenduse luua."
+ "Luba"
+ "Tänan, ei""WiFi lülitub sisse automaatselt""Kui olete kvaliteetse salvestatud võrgu läheduses""Ära lülita tagasi sisse"
@@ -1669,7 +1670,7 @@
"Juurdepääsetavuse otsetee lülitas teenuse %1$s välja""Teenuse %1$s kasutamiseks hoidke kolm sekundit all mõlemat helitugevuse klahvi""Valige, millist teenust kasutada, kui puudutate juurdepääsetavuse nuppu:"
- "Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (pühkige kahe sõrmega ekraanikuval alt üles):"
+ "Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (kahe sõrmega ekraanikuval alt üles pühkimine):""Valige, millist teenust kasutada koos juurdepääsetavuse liigutusega (kolme sõrmega ekraanikuval alt üles pühkimine):""Teenuste vahel vahetamiseks vajutage pikalt juurdepääsetavuse nuppu.""Teenuste vahel vahetamiseks pühkige kahe sõrmega üles ja hoidke."
@@ -1887,8 +1888,8 @@
"Kategoriseerimata""Teie määrasite nende märguannete tähtsuse.""See on tähtis osalevate inimeste tõttu."
- "Kas lubada rakendusel %1$s luua uus kasutaja kontoga %2$s?"
- "Kas lubada rakendusel %1$s luua uus kasutaja kontoga %2$s (selle kontoga kasutaja on juba olemas)?"
+ "Kas lubada rakendusel %1$s luua uus kasutaja kontoga %2$s (selle kontoga kasutaja on juba olemas)?"
+ "Kas lubada rakendusel %1$s luua uus kasutaja kontoga %2$s?""Keele lisamine""Piirkonnaeelistus""Sisestage keele nimi"
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index bd68b2b9d76405f9deb7f4d968c1dd61a2e6f385..fe3a7a6af2f8537d4ac427cdef14e22b953e5457 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -95,6 +95,7 @@
"Erantzungailuko mezuak""Wi-Fi bidezko deiak""SIMaren egoera"
+ "SIM txartelaren lehentasun handiko jakinarazpenak""Beste gailuak TTY osagarria FULL moduan erabiltzea eskatu du""Beste gailuak TTY osagarria HCO moduan erabiltzea eskatu du""Beste gailuak TTY osagarria VCO moduan erabiltzea eskatu du"
@@ -374,7 +375,7 @@
"Beren zati batzuk memoria modu iraunkorrean ezartzeko baimena ematen die aplikazioei. Horrela, beste aplikazioek erabilgarri duten memoria murritz daiteke eta tableta motel daiteke.""Beren zati batzuk memorian modu iraunkorrean aktibo uztea baimentzen die aplikazioei. Horrela, beste aplikazioek memoria gutxiago izan lezakete erabilgarri eta telebistak motelago funtziona lezake.""Beren zati batzuk memoria modu iraunkorrean ezartzeko baimena ematen die aplikazioei. Horrela, beste aplikazioek erabilgarri duten memoria murritz daiteke eta telefonoa motel daiteke."
- "Exekutatu zerbitzuak aurreko planoan"
+ "Abiarazi zerbitzuak aurreko planoan""Aurreko planoko zerbitzuak erabiltzea baimentzen dio aplikazioari.""neurtu aplikazioen biltegiratzeko tokia""Bere kodea, datuak eta cache-tamainak eskuratzeko baimena ematen die aplikazioei."
@@ -421,7 +422,7 @@
"Aplikazioa aurreko planoan dagoenean, zure kokapenaren berri izan dezake sareen iturburuak erabilita; adibidez, telefonia mugikorreko dorreak eta Wi-Fi sareak. Kokapen-zerbitzu horiek aktibatuta eta erabilgarri izan behar dituzu telebistan, aplikazioak erabil ditzan.""Aplikazioa aurreko planoan dagoenean, zure kokapenaren berri izan dezake sareen iturburuak erabilita; adibidez, telefonia mugikorreko dorreak eta Wi-Fi sareak. Kokapen-zerbitzu horiek aktibatuta eta erabilgarri izan behar dituzu telefonoan, aplikazioak erabil ditzan.""Atzitu kokapena atzeko planoan"
- "Baimen hau ematen bada kokapen zehatz edo gutxi gorabeherakorako sarbideaz gain, atzeko planoan exekutatu bitartean atzitu ahalko du aplikazioak kokapena."
+ "Baimen hau ematen bada kokapen zehatz edo gutxi gorabeherakorako sarbideaz gain, atzeko planoan abian den bitartean atzitu ahalko du aplikazioak kokapena.""aldatu audio-ezarpenak""Audio-ezarpen orokorrak aldatzeko baimena ematen dio; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den.""grabatu audioa"
@@ -550,11 +551,11 @@
"Hatz-markaren ikonoa"
- "kudeatu aurpegi bidez autentifikatzeko hardwarea"
+ "kudeatu aurpegiaren bidez desblokeatzeko hardwarea""Aurpegi-txantiloiak gehitu eta ezabatzeko metodoei dei egitea baimentzen dio aplikazioari."
- "erabili aurpegi bidez autentifikatzeko hardwarea"
- "Aurpegi bidez autentifikatzeko hardwarea erabiltzea baimentzen dio aplikazioari"
- "Aurpegi bidezko autentifikazioa"
+ "erabili aurpegiaren bidez desblokeatzeko hardwarea"
+ "Autentifikazioa egiteko aurpegiaren bidez desblokeatzeko hardwarea erabiltzeko baimena ematen dio aplikazioari"
+ "Aurpegiaren bidez desblokeatzeko aukera""Erregistratu aurpegia berriro""Ezagutzea hobetzeko, erregistratu aurpegia berriro""Ezin izan dira bildu argazkiaren datu zehatzak. Saiatu berriro."
@@ -567,7 +568,7 @@
"Mugitu telefonoa ezkerretara.""Mugitu telefonoa eskuinetara.""Begiratu zuzenago gailuari."
- "Ez da hautematen aurpegia. Begiratu telefonoari."
+ "Ipini aurrez aurre aurpegia eta telefonoa.""Mugimendu gehiegi dago. Eutsi tinko telefonoari.""Erregistratu berriro aurpegia.""Ez dugu ezagutzen aurpegi hori. Saiatu berriro."
@@ -576,19 +577,19 @@
"Biratu burua pixka bat gutxiago.""Biratu burua pixka bat gutxiago.""Kendu aurpegia estaltzen dizuten gauzak."
- "Garbitu pantailaren goiko ertzeko sentsorea."
+ "Garbitu pantailaren goialdea, barra beltza barne""Ezin da egiaztatu aurpegia. Hardwarea ez dago erabilgarri."
- "Saiatu berriro aurpegi bidez autentifikatzen"
+ "Saiatu berriro aurpegiaren bidez desblokeatzen.""Ezin dira gorde aurpegiaren datu berriak. Ezabatu zaharrak."
- "Utzi da aurpegi bidezko eragiketa"
- "Erabiltzaileak utzi du aurpegi bidezko autentifikazioa"
+ "Utzi da aurpegiaren bidezko eragiketa."
+ "Erabiltzaileak bertan behera utzi du aurpegiaren bidez desblokeatzea.""Saiakera gehiegi egin dituzu. Saiatu berriro geroago."
- "Saiakera gehiegi egin dira. Desgaitu egin da aurpegi bidezko autentifikazioa."
+ "Saiakera gehiegi egin dira. Aurpegiaren bidez desblokeatzeko aukera desgaitu egin da.""Ezin da egiaztatu aurpegia. Saiatu berriro."
- "Ez duzu konfiguratu aurpegi bidezko autentifikazioa"
- "Gailu honek ez du onartzen aurpegi bidezko autentifikazioa"
+ "Ez duzu konfiguratu aurpegiaren bidez desblokeatzeko aukera."
+ "Gailu honek ez du onartzen aurpegiaren bidez desblokeatzea.""%d aurpegia"
@@ -1176,7 +1177,7 @@
"Itxaron""Orriak ez du erantzuten.\n\nItxi egin nahi duzu?""Aplikazioa birbideratu da"
- "%1$s aplikazioa exekutatzen ari da."
+ "%1$s aplikazioa abian da.""%1$s aplikazioa lehenago abiarazi da.""Eskala""Erakutsi beti"
@@ -1202,7 +1203,7 @@
"%1$s prestatzen.""Aplikazioak abiarazten.""Bertsio-berritzea amaitzen."
- "%1$s exekutatzen"
+ "%1$s abian da""Sakatu jokora itzultzeko""Aukeratu joko bat""Funtzionamendu hobea izateko, joko hauetako bat baino ezin da egon irekita aldi berean."
@@ -1254,10 +1255,10 @@
"Sakatu hau sare guztiak ikusteko""Konektatu""Sare guztiak"
- "Wifi-sareetara konektatu nahi duzu?"
- "%s aplikazioak iradoki du"
- "Bai"
- "Ez"
+ "Iradokitako wifi-sareak baimendu nahi dituzu?"
+ "%s aplikazioak sare batzuk iradoki ditu. Baliteke gailua automatikoki konektatzea."
+ "Baimendu"
+ "Ez, eskerrik asko""Wi‑Fi konexioa automatikoki aktibatuko da""Gordeta daukazun kalitate handiko sare batetik gertu zaudenean""Ez aktibatu berriro"
@@ -1354,8 +1355,8 @@
"Konektatutako gailua kargatzen ari da. Sakatu aukera gehiago ikusteko.""Audio-osagarri analogiko bat hauteman da""Erantsitako gailua ez da telefono honekin bateragarria. Sakatu informazio gehiago lortzeko."
- "USB arazketa konektatuta"
- "Sakatu USB arazketa desaktibatzeko"
+ "USB bidezko arazketa konektatuta"
+ "Sakatu USB bidezko arazketa desaktibatzeko""Hautatu USB arazketa desgaitzeko.""Proba-materialeko modua gaitu da""Proba-materialaren modua desgaitzeko, berrezarri jatorrizko datuak."
@@ -1440,7 +1441,7 @@
"Hurrengoa""Eginda""Atzera"
- "Exekutatu"
+ "Abiarazi""Markatu zenbakia \n%s erabilita""Sortu kontaktua\n%s erabilita""Aplikazio hauetako bat edo gehiago kontua orain eta etorkizunean atzitzeko baimena eskatzen ari dira."
@@ -1635,7 +1636,7 @@
"PIN kode okerra.""Idatzi 4 eta 8 zenbaki arteko PINa.""PUK kodeak 8 zenbaki izan behar ditu."
- "Idatzi berriro PUK kode zuzena. Hainbat saiakera oker eginez gero, betirako desgaituko da SIMa."
+ "Idatzi berriro PUK kode zuzena. Hainbat saiakera oker eginez gero, betiko desgaituko da SIMa.""PIN kodeak ez datoz bat""Eredua marrazteko saiakera gehiegi egin dira""Desblokeatzeko, hasi saioa Google kontuarekin."
@@ -1888,8 +1889,8 @@
"Kategoriarik gabea""Zuk ezarri duzu jakinarazpen hauen garrantzia.""Garrantzitsua da eragiten dien pertsonengatik."
- "%1$s aplikazioari %2$s kontua duen erabiltzailea sortzeko baimena eman nahi diozu?"
- "%1$s aplikazioari %2$s kontua duen erabiltzailea sortzeko baimena eman nahi diozu? (Badago kontu hori duen erabiltzaile bat)"
+ "%1$s aplikazioari %2$s kontua duen erabiltzailea sortzeko baimena eman nahi diozu? (Badago kontu hori duen erabiltzaile bat)"
+ "%1$s aplikazioari %2$s kontua duen erabiltzailea sortzeko baimena eman nahi diozu?""Gehitu hizkuntza""Lurralde-hobespena""Adierazi hizkuntza"
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index c1fc07453a98ad38c44e6be0cbaab988eb84ebbb..2f90fc967b2fd580644a4ae8ea91fd0581b4a0a8 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -95,6 +95,7 @@
"پیامهای پست صوتی""تماس ازطریق Wi-Fi""وضعیت سیمکارت"
+ "وضعیت سیم با اولویت بالا""دستگاه مرتبط درخواست TTY حالت FULL کرد""دستگاه مرتبط درخواست TTY حالت HCO کرد""دستگاه مرتبط درخواست TTY حالت VCO کرد"
@@ -290,7 +291,7 @@
"به <b>%1$s</b> اجازه داده شود به تقویم شما دسترسی پیدا کند؟""پیامک""ارسال و مشاهده پیامکها"
- "به <b>%1$s<b> اجازه داده شود پیامکها را ارسال و مشاهده کند؟"
+ "به «<b>%1$s<b>» اجازه داده شود پیامک ارسال و مشاهده کند؟""حافظه""دسترسی به عکسها، رسانهها و فایلهای روی دستگاهتان""به برنامه <b>%1$s<b> اجازه داده شود به عکسها، رسانه، و فایلهای موجود در دستگاهتان دسترسی داشته باشد؟"
@@ -550,11 +551,11 @@
"نماد اثر انگشت"
- "مدیریت سختافزار احراز هویت با چهره"
+ "مدیریت سختافزار «بازگشایی با چهره»""به برنامه امکان میدهد روشهایی را برای افزودن و حذف الگوهای چهره جهت استفاده فرابخواند."
- "استفاده از سختافزار احراز هویت با چهره"
- "به برنامه امکان میدهد از سختافزار احراز هویت با چهره برای احراز هویت استفاده کند"
- "احراز هویت با چهره"
+ "استفاده از سختافزار «بازگشایی با چهره»"
+ "به برنامه امکان میدهد از سختافزار «بازگشایی با چهره» برای احراز هویت استفاده کند"
+ "بازگشایی با چهره""ثبت مجدد چهره""برای بهبود تشخیص، لطفاً چهرهتان را دوباره ثبت کنید""دادههای دقیق چهره ضبط نشد. دوباره امتحان کنید."
@@ -567,7 +568,7 @@
"تلفن را بهسمت چپ حرکت دهید.""تلفن را به سمت راست حرکت دهید.""لطفاً مستقیم به دستگاه نگه کنید."
- "چهرهتان دیده نمیشود. به تلفن نگاه کنید."
+ "صورتتان را مستقیماً روبروی تلفن قرار دهید.""حرکت خیلی زیاد است. تلفن را ثابت نگهدارید.""لطفاً چهرهتان را مجدداً ثبت کنید.""دیگر چهره را تشخیص نمیدهد. دوباره امتحان کنید."
@@ -576,19 +577,19 @@
"سرتان را کمی پایین آورید.""سرتان را کمی پایین آورید.""هرچیزی را که حائل چهرهتان است بردارید."
- "حسگر واقع در لبه بالای صفحه را تمیز کنید."
+ "بالای صفحه و همچنین نوار مشکی را تمیز کنید.""چهره تأیید نشد. سختافزار در دسترس نیست."
- "احراز هویت با چهره با دوباره امتحان کنید."
+ "«بازگشایی با چهره» را دوباره امتحان کنید.""داده چهره جدید ذخیره نشد. اول داده چهره قدیمی را حذف کنید."
- "عملیات شناسایی چهره لغو شد"
- "احراز هویت چهره توسط کاربر لغو شد"
+ "عملیات شناسایی چهره لغو شد."
+ "کاربر «بازگشایی با چهره» را لغو کرد.""تعداد زیادی تلاش ناموفق. بعداً دوباره امتحان کنید."
- "تعداد تلاشها بیشازحد مجاز است. احرازهویت چهره غیرفعال شد."
+ "تعداد تلاشها بیشازحد مجاز است. «بازگشایی با چهره» غیرفعال است.""چهره تأیید نشد. دوباره امتحان کنید."
- "احراز هویت چهره راهاندازی نشده است"
- "احراز هویت چهره در این دستگاه پشتیبانی نمیشود."
+ "«بازگشایی با چهره» را راهاندازی نکردهاید."
+ "«بازگشایی با چهره» در این دستگاه پشتیبانی نمیشود.""چهره %d"
@@ -1254,10 +1255,10 @@
"برای دیدن همه شبکهها ضربه بزنید""اتصال""همه شبکهها"
- "به شبکههای Wi-Fi متصل میشوید؟"
- "پیشنهاد %s"
- "بله"
- "خیر"
+ "شبکههای Wi‑Fi پیشنهادی مجاز شود؟"
+ "شبکههای پیشنهادی %s. ممکن است دستگاه بهطور خودکار متصل شود."
+ "مجاز"
+ "نه متشکرم""Wi‑Fi بهطور خودکار روشن خواهد شد""وقتی نزدیک شبکه ذخیرهشده با کیفیت بالا هستید""دوباره روشن نشود"
@@ -1807,8 +1808,8 @@
"توسط سرپرست سیستم بهروزرسانی شد""توسط سرپرست سیستم حذف شد""تأیید"
- "بهینهسازی باتری فعالیت پسزمینه، برخی جلوههای دیداری، و سایر ویژگیهای با مصرف بالای نیرو را خاموش یا محدود میکند تا عمر باتری افزایش یابد. ""بیشتر بدانید"
- "بهینهسازی باتری فعالیت پسزمینه، برخی جلوههای دیداری، و سایر ویژگیهای با مصرف بالای نیرو را خاموش یا محدود میکند تا عمر باتری افزایش یابد."
+ "«بهینهسازی باتری» فعالیت پسزمینه، برخی جلوههای دیداری، و سایر ویژگیهای پرمصرف نیرو را خاموش یا محدود میکند تا عمر باتری افزایش یابد. ""بیشتر بدانید"
+ "«بهینهسازی باتری» فعالیت پسزمینه، برخی جلوههای دیداری، و سایر ویژگیهای پرمصرف نیرو را خاموش یا محدود میکند تا عمر باتری افزایش یابد.""برای کمک به کاهش مصرف داده، «صرفهجویی داده» از ارسال و دریافت داده در پسزمینه ازطرف بعضی برنامهها جلوگیری میکند. برنامهای که درحالحاضر استفاده میکنید میتواند به دادهها دسترسی داشته باشد اما دفعات دسترسی آن محدود است.این یعنی، برای مثال، تصاویر تا زمانی که روی آنها ضربه نزنید نشان داده نمیشوند.""صرفهجویی داده روشن شود؟""روشن کردن"
@@ -1887,8 +1888,8 @@
"دستهبندینشده""شما اهمیت این اعلانها را تنظیم میکنید.""به دلیل افراد درگیر مهم است."
- "به %1$s امکان داده شود کاربر جدیدی با %2$s اضافه کند؟"
- "به %1$s امکان داده شود کاربر جدیدی با %2$s ایجاد کند (کاربری با این حساب از قبل وجود دارد)؟"
+ "به%1$s اجازه میدهید با %2$s (کاربری با این حساب درحالحاضر وجود دارد) کاربری جدید ایجاد کند؟"
+ "به %1$s اجازه میدهید با %2$s کاربری جدید ایجاد کند؟""افزودن زبان""اولویتهای منطقه""نام زبان را تایپ کنید"
@@ -2000,15 +2001,15 @@
"نمایش روی برنامههای دیگر در صفحهنمایش""اعلان اطلاعات حالت روال معمول""ممکن است شارژ باتری قبل از شارژ معمول تمام شود"
- "جهت افزایش عمر باتری، بهینهسازی باتری فعال شد"
+ "جهت افزایش عمر باتری، «بهینهسازی باتری» فعال شد""بهینهسازی باتری"
- "تا وقتی شارژ باتری دوباره به سطح پایین نرسد، بهینهسازی باتری مجدداً فعال نخواهد شد"
- "باتری تا سطحی کافی شارژ شده است. تا وقتی شارژ باتری دوباره به سطح پایین نرسد، بهینهسازی باتری مجدداً فعال نخواهد شد."
+ "تا وقتی شارژ باتری دوباره به سطح پایین نرسد، «بهینهسازی باتری» مجدداً فعال نخواهد شد"
+ "باتری درحد کافی شارژ شده است. تا وقتی شارژ باتری دوباره به سطح پایین نرسد، «بهینهسازی باتری» مجدداً فعال نخواهد شد.""تلفن %1$s شارژ شد""رایانه لوحی %1$s شارژ شد""دستگاه %1$s شارژ شد"
- "بهینهسازی باتری خاموش است. ویژگیها دیگر محدود نمیشوند."
- "بهینهسازی باتری خاموش شد. ویژگیها دیگر محدود نمیشوند."
+ "«بهینهسازی باتری» خاموش است. ویژگیها دیگر محدود نمیشوند."
+ "«بهینهسازی باتری» خاموش شد. ویژگیها دیگر محدود نمیشوند.""پوشه""برنامه Android""فایل"
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 6181a271587729da90430268d0a0bdf804a4d1cc..05bd57069186e8ffdce98e4b5ab6249be574771c 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -95,6 +95,7 @@
"Vastaajaviestit""Wi-Fi-puhelut""SIM-kortin tila"
+ "Tärkeät SIM-ilmoitukset""Toinen käyttäjä vaihtoi TTY-tilaksi TÄYSI""Toinen käyttäjä vaihtoi TTY-tilaksi HCO""Toinen käyttäjä vaihtoi TTY-tilaksi VCO"
@@ -281,7 +282,7 @@
"Saako <b>%1$s</b> yhteystietojesi käyttöoikeuden?""Sijainti""käyttää laitteen sijaintia"
- "Saako <b>%1$s</b> tämän laitteen sijainnin käyttöoikeuden?"
+ "Saako <b>%1$s</b> oikeuden nähdä tämän laitteen sijainnin?""Sovellus saa sijainnin käyttöoikeuden vain silloin, kun käytät sovellusta""Saako <b>%1$s</b> käyttää laitteen sijaintia <b>aina</b>?""Sovellus saa tällä hetkellä sijainnin käyttöoikeuden vain, jos käytät sovellusta"
@@ -550,11 +551,11 @@
"Sormenjälkikuvake"
- "hallinnoida kasvojentodennuslaitteistoa"
+ "hallinnoida Face Unlock ‑laitteistoa""Sallii sovelluksen käyttää menetelmiä, joilla voidaan lisätä tai poistaa kasvomalleja."
- "käyttää kasvojentodennuslaitteistoa"
- "Sallii sovelluksen käyttää todennuslaitteistoa todennukseen"
- "Kasvojentunnistus"
+ "käyttää Face Unlock ‑laitteistoa"
+ "Sallii sovelluksen käyttää Face Unlock ‑laitteistoa todennukseen"
+ "Face Unlock""Lisää kasvot uudelleen""Lisää kasvosi uudelleen tunnistamisen parantamiseksi""Tarkan kasvodatan tallennus epäonnistui. Yritä uudelleen."
@@ -567,7 +568,7 @@
"Siirrä puhelinta vasemmalle.""Siirrä puhelinta oikealle.""Katso suoremmin laitteeseen."
- "Kasvojasi ei näy. Katso puhelinta."
+ "Aseta kasvosi suoraan puhelimen eteen.""Laite liikkui liikaa. Pidä puhelin vakaana.""Rekisteröi kasvot uudelleen.""Ei enää tunnista kasvoja. Yritä uudelleen."
@@ -576,19 +577,19 @@
"Käännä päätä vähän vähemmän.""Käännä päätä vähän vähemmän.""Poista esteet kasvojesi edestä."
- "Puhdista näytön yläreunassa oleva anturi."
+ "Puhdista näytön yläreuna, mukaan lukien musta palkki""Kasvoja ei voi vahvistaa. Laitteisto ei käytettäv."
- "Yritä kasvojentunnistusta uudelleen."
+ "Yritä käyttää Face Unlockia uudelleen.""Uutta kasvodataa ei voi tallentaa. Poista ensin vanhaa."
- "Kasvotoiminto peruutettu"
- "Käyttäjä peruutti kasvojentunnistuksen"
+ "Kasvotoiminto peruutettu"
+ "Käyttäjä peruutti Face Unlockin.""Liian monta yritystä. Yritä myöhemmin uudelleen."
- "Liian monta yritystä. Kasvojentunnistus poistettu käytöstä."
+ "Liian monta yritystä. Face Unlock poistettu käytöstä.""Kasvoja ei voi vahvistaa. Yritä uudelleen."
- "Et ole määrittänyt kasvojentunnistusta"
- "Tämä laite ei tue kasvojentunnistusta."
+ "Et ole määrittänyt Face Unlockia."
+ "Tämä laite ei tue Face Unlockia.""Kasvot %d"
@@ -1254,10 +1255,10 @@
"Napauta, niin näet kaikki verkot.""Yhdistä""Kaikki verkot"
- "Yhdistetäänkö Wi-Fi-verkkoihin?"
- "Ehdottaja: %s"
- "Kyllä"
- "Ei"
+ "Sallitaanko ehdotetut Wi-Fi-verkot?"
+ "%s ehdotti verkkoja. Laite voi muodostaa yhteyden automaattisesti."
+ "Salli"
+ "Ei kiitos""Wi-Fi käynnistyy automaattisesti""Kun olet lähellä laadukasta tallennettua verkkoa""Älä käynnistä uudelleen"
@@ -1887,8 +1888,8 @@
"Luokittelematon""Voit valita näiden ilmoitusten tärkeyden.""Tämä on tärkeää siihen liittyvien ihmisten perusteella."
- "Myönnetäänkö sovellukselle %1$s oikeus luoda käyttäjä tilille %2$s?"
- "Myönnetäänkö sovellukselle %1$s oikeus luoda käyttäjä tilille %2$s (tilillä on jo käyttäjä)?"
+ "Saako %1$s luoda uuden käyttäjän (%2$s) – tällä käyttäjällä on jo tili?"
+ "Saako %1$s luoda uuden käyttäjän (%2$s)?""Lisää kieli""Alueasetus""Anna kielen nimi"
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 3905c861ce5d197cf415fe599b74bb89c88ecbb8..ad481a929ab7913b113ef8f8b622af5cad66e8ae 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -95,11 +95,12 @@
"Messages vocaux""Appels Wi-Fi""État de la carte SIM"
+ "État SIM de priorité élevée""Mode TTY COMPLET demandé par un pair""Mode TTY HCO demandé par un pair""Mode TTY VCO demandé par un pair""Mode TTY DÉSACTIVÉ demandé par un pair"
- "Google Voice"
+ "Voix""Données""Télécopie""SMS"
@@ -550,11 +551,11 @@
"Icône d\'empreinte digitale"
- "gérer le matériel d\'authentification de visage"
+ "gérer le matériel de déverrouillage par reconnaissance faciale""Permet à l\'appli d\'employer des méthodes d\'aj. et de suppr. de modèles de reconn. visage."
- "utiliser le matériel d\'authentification de visage"
- "Permet à l\'appli d\'utiliser du matériel de reconnaissance du visage pour l\'authentification"
- "Authentification du visage"
+ "utiliser le matériel de déverrouillage par reconnaissance faciale"
+ "Permet à l\'appli d\'utiliser du matériel de déverr. par reconn faciale pour l\'authentific."
+ "Déverrouillage par reconnaissance faciale""Inscrivez votre visage à nouveau""Pour améliorer la reconnaissance, veuillez enregistrer à nouveau votre visage""Imposs. capt. données visage précises. Réessayez."
@@ -567,7 +568,7 @@
"Déplacez le téléphone vers la gauche.""Déplacez le téléphone vers la droite.""Veuillez regarder plus directement votre appareil."
- "Visage non détecté. Regardez le téléphone."
+ "Placez votre visage directement devant le téléphone.""Trop de mouvement. Tenez le téléphone immobile.""Veuillez inscrire votre visage à nouveau.""Ce visage ne sera plus reconnu. Réessayez."
@@ -576,19 +577,19 @@
"Tournez un peu moins votre tête.""Tournez un peu moins votre tête.""Retirez tout ce qui pourrait couvrir votre visage."
- "Nettoyez le capteur dans le haut de l\'écran."
+ "Nettoyez le haut de l\'écran, y compris la barre noire""Imposs. de vérif. visage. Matériel non accessible."
- "Réessayez l\'authentification du visage."
+ "Réessayez le déverr. par reconnaissance faciale.""Impossible de stocker de nouveaux visages. Supprimez-en un."
- "Opération de reconnaissance du visage annulée"
- "Authentification du visage annulée par l\'utilisateur"
+ "Opération de reconnaissance du visage annulée."
+ "Déverr. par reconn. faciale annulé par l\'utilisateur.""Trop de tentatives. Veuillez réessayer plus tard."
- "Trop de tentatives. Authentification du visage désactivée."
+ "Trop de tentatives. Le déverr. par reconnaissance faciale est désactivé.""Impossible de vérifier le visage. Réessayez."
- "Vous n\'avez pas configuré l\'authentific. du visage"
- "Cet appareil ne prend pas en charge l\'authentific. du visage"
+ "Vous n\'avez pas config. le déverr. par reconn. faciale."
+ "Cet appar. ne prend pas en charge le déverr. par reconn. faciale.""Visage %d"
@@ -1254,10 +1255,10 @@
"Touchez pour afficher tous les réseaux""Connexion""Tous les réseaux"
- "Se connecter aux réseaux Wi-Fi?"
- "Suggéré par %s"
- "Oui"
- "Non"
+ "Autoriser les suggestions de réseaux Wi‑Fi?"
+ "Réseaux suggérés par %s. L\'appareil peut s\'y connecter automatiquement."
+ "Autoriser"
+ "Non merci""Le Wi-Fi s\'activera automatiquement""Lorsque vous êtes près d\'un réseau enregistré de haute qualité""Ne pas réactiver"
@@ -1585,7 +1586,7 @@
"Lancer le navigateur?""Prendre l\'appel?""Toujours"
- "Définir cette activité comme toujours ouverte"
+ "Toujours ouvrir avec cette application""Une seule fois""Paramètres""%1$s ne prend pas en charge le profil professionnel"
@@ -1669,10 +1670,10 @@
"Le raccourci d\'accessibilité a désactivé la fonction %1$s""Maintenez enfoncées les deux touches de volume pendant trois secondes pour utiliser %1$s""Choisissez un service à utiliser lorsque vous touchez le bouton d\'accessibilité :"
- "Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer deux doigts du bas de l\'écran vers le haut) :"
- "Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer trois doigts du bas de l\'écran vers le haut) :"
+ "Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer l\'écran de bas en haut avec deux doigts) :"
+ "Choisissez un service à utiliser lorsque vous utilisez le geste d\'accessibilité (balayer l\'écran de bas en haut avec trois doigts) :""Pour basculer entre les services, maintenez le doigt sur le bouton d\'accessibilité."
- "Pour basculer entre les services, balayez deux doigts vers le haut et maintenez-les sur l\'écran."
+ "Pour basculer entre les services, balayez l\'écrfan vers le haut avec deux doigts et maintenez-les-y.""Pour changer de service, balayez trois doigts vers le haut et maintenez-les sur l\'écran.""Zoom""Utilisateur actuel : %1$s"
@@ -1887,8 +1888,8 @@
"Sans catégorie""Vous définissez l\'importance de ces notifications.""Ces notifications sont importantes en raison des participants."
- "Autoriser %1$s à créer un profil d\'utilisateur avec le compte %2$s?"
- "Autoriser %1$s à créer un profil d\'utilisateur avec le compte %2$s? (Un utilisateur associé à ce compte existe déjà.)"
+ "Autoriser %1$s à créer un utilisateur %2$s? (Un utilisateur est déjà associé à ce compte)"
+ "Autoriser %1$s à créer un profil d\'utilisateur avec le compte %2$s?""Ajouter une langue""Préférences régionales""Entrez la langue"
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 5b6881487546126a0ef69ca076cec021744e02a1..993101b43342373e7f54df7c3805d64c1b3b8b17 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -95,6 +95,7 @@
"Messages vocaux""Appels Wi-Fi""État de la carte SIM"
+ "Notifications prioritaires de la carte SIM""Mode TTY demandé par l\'interlocuteur : COMPLET""Mode TTY demandé par l\'interlocuteur : HCO""Mode TTY demandé par l\'interlocuteur : VCO"
@@ -290,7 +291,7 @@
"Permettre à <b>%1$s</b> d\'accéder à votre agenda ?""SMS""envoyer et consulter des SMS"
- "Permettre à <b>%1$s</b> d\'envoyer et d\'afficher des SMS ?"
+ "Autoriser l\'application <b>%1$s</b> à envoyer et afficher des SMS ?""Stockage""accéder aux photos, contenus multimédias et fichiers sur votre appareil""Autoriser l\'appli <b>%1$s</b> à accéder aux photos, contenus multimédias et fichiers sur votre appareil ?"
@@ -550,11 +551,11 @@
"Icône d\'empreinte digitale"
- "gérer le matériel d\'authentification faciale"
+ "gérer les composants de Face Unlock""Autorise l\'appli à invoquer des méthodes pour ajouter et supprimer des modèles de visages."
- "utiliser le matériel d\'authentification faciale"
- "Autorise l\'appli à utiliser le matériel d\'authentification faciale pour l\'authentification"
- "Authentification faciale"
+ "utiliser les composants de Face Unlock"
+ "Autorise l\'application à utiliser les composants de Face Unlock pour l\'authentification"
+ "Face Unlock""Enregistrer à nouveau votre visage""Pour améliorer la reconnaissance, veuillez enregistrer à nouveau votre visage""Capture du visage impossible. Réessayez."
@@ -567,7 +568,7 @@
"Déplacez le téléphone vers la gauche.""Déplacez le téléphone vers la droite.""Veuillez regarder plus directement l\'appareil."
- "Visage non détecté. Regardez le téléphone."
+ "Placez votre visage en face du téléphone.""Trop de mouvement. Ne bougez pas le téléphone.""Veuillez enregistrer à nouveau votre visage.""Impossible de reconnaître le visage. Réessayez."
@@ -576,19 +577,19 @@
"Tournez un peu moins la tête.""Tournez un peu moins la tête.""Retirez tout ce qui cache votre visage."
- "Nettoyez le capteur en haut de l\'écran."
+ "Nettoyez la partie supérieure de l\'écran, y compris la barre noire""Imposs. valider visage. Matériel non disponible."
- "Réessayez d\'activer l\'authentification faciale."
+ "Réessayez d\'activer Face Unlock.""Impossible stocker nouv. visages. Veuillez en supprimer un."
- "Opération de reconnaissance faciale annulée"
- "Authentification faciale annulée par l\'utilisateur"
+ "Opération de reconnaissance faciale annulée."
+ "Face Unlock annulé par l\'utilisateur.""Trop de tentatives. Réessayez plus tard."
- "Trop de tentatives. Authentification faciale désactivée."
+ "Tentatives trop nombreuses. Désactivation de Face Unlock.""Impossible de valider votre visage. Réessayez."
- "L\'authentification faciale n\'est pas configurée"
- "Appareil incompatible avec l\'authentification faciale"
+ "Face Unlock n\'est pas configuré."
+ "Face Unlock n\'est pas compatible avec cet appareil.""Visage %d"
@@ -1254,10 +1255,10 @@
"Appuyer pour afficher tous les réseaux""Se connecter""Tous les réseaux"
- "Se connecter à des réseaux Wi-Fi ?"
- "Suggérée par %s"
- "Oui"
- "Non"
+ "Autoriser les suggestions de réseaux Wi‑Fi ?"
+ "Réseaux suggérés par %s. L\'appareil pourra se connecter automatiquement."
+ "Autoriser"
+ "Non, merci""Le Wi-Fi sera activé automatiquement""Lorsque vous êtes à proximité d\'un réseau enregistré de haute qualité""Ne pas réactiver"
@@ -1360,8 +1361,8 @@
"Rétablissez la configuration d\'usine pour désactiver le mode Atelier de test.""Présence de liquide ou de saletés dans le port USB""Le port USB est désactivé automatiquement. Appuyez sur cette notification pour en savoir plus."
- "Autoriser l\'utilisation du port USB"
- "Le téléphone ne détecte plus les liquides ni les saletés."
+ "Le port USB peut être utilisé"
+ "Aucun liquide ni corps étranger à signaler""Création du rapport de bug…""Partager le rapport de bug ?""Partage du rapport de bug…"
@@ -1585,7 +1586,7 @@
"Lancer le navigateur ?""Prendre l\'appel ?""Toujours"
- "Définir cette activité comme toujours ouverte"
+ "Toujours ouvrir avec cette application""Une seule fois""Paramètres""%1$s n\'est pas compatible avec le profil professionnel."
@@ -1887,8 +1888,8 @@
"Sans catégorie""Vous définissez l\'importance de ces notifications.""Ces notifications sont importantes en raison des participants."
- "Autoriser %1$s à créer un profil utilisateur avec le compte %2$s ?"
- "Autoriser %1$s à créer un profil utilisateur avec le compte %2$s (un utilisateur associé à ce compte existe déjà) ?"
+ "Autoriser %1$s à créer un profil utilisateur avec le compte %2$s (un utilisateur associé à ce compte existe déjà) ?"
+ "Autoriser %1$s à créer un profil utilisateur avec le compte %2$s ?""Ajouter une langue""Préférences régionales""Saisissez la langue"
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 74722bbe767e7eea7ff3b26b205717f595dba7ef..d973c7c4b46ec56a5c3a3f7e0f91bf424ca48b73 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -95,6 +95,7 @@
"Mensaxes de correo de voz""Chamadas por wifi""Estado da SIM"
+ "Estado da SIM con prioridade alta""Outro dispositivo solicitou o modo TTY COMPLETO""Outro dispositivo solicitou o modo TTY HCO""Outro dispositivo solicitou o modo TTY VCO"
@@ -386,7 +387,7 @@
"Permite á aplicación executarse unha vez o sistema se inicie completamente. Isto pode provocar que o teléfono tarde máis tempo en iniciarse e permitir á aplicación reducir a velocidade xeral do teléfono ao manterse sempre en execución.""enviar difusión persistente""Permite á aplicación enviar difusións permanentes que continúan unha vez finalizada a difusión. Un uso excesivo pode provocar que a tableta funcione con lentitude ou de forma inestable debido á necesidade de utilizar demasiada memoria."
- "Permite que a aplicación envíe emisións permanentes, que continúan unha vez finalizada a emisión. O uso excesivo pode volver a televisión máis lenta ou inestable, facendo que utilice moita memoria."
+ "Permite que a aplicación envíe emisións atractivas, que permanecen unha vez finalizada a emisión. O uso excesivo pode volver a televisión máis lenta ou inestable, facendo que utilice moita memoria.""Permite á aplicación enviar difusións permanentes que continúan unha vez finalizada a difusión. Un uso excesivo pode provocar que o teléfono funcione con lentitude ou de forma inestable debido á necesidade de utilizar demasiada memoria.""ler os teus contactos""Permite á aplicación ler datos acerca dos teus contactos almacenados na tableta, incluída a frecuencia coa que os chamaches, lles enviaches un correo electrónico ou te comunicaches con individuos específicos doutras formas. Con este permiso as aplicacións poden gardar os teus datos de contacto e as aplicacións maliciosas poden compartir os datos de contacto sen o teu coñecemento."
@@ -550,11 +551,11 @@
"Icona de impresión dixital"
- "xestionar hardware de autenticación facial"
+ "xestionar o hardware de desbloqueo facial""Permite que a aplicación invoque métodos para engadir e eliminar modelos faciais de uso."
- "usar hardware de autenticación facial"
- "Permite que a aplicación utilice hardware facial para a autenticación"
- "Autenticación facial"
+ "utilizar o hardware de desbloqueo facial"
+ "Permite que a aplicación utilice o hardware de desbloqueo facial para a autenticación"
+ "Desbloqueo facial""Volve inscribir a túa cara""Para mellorar o recoñecemento, inscribe de novo a túa cara""Sen datos faciais exactos. Téntao de novo."
@@ -567,7 +568,7 @@
"Move o teléfono cara á esquerda.""Move o teléfono cara á dereita.""Mira o dispositivo de forma máis directa."
- "Non se ve a túa cara. Mira para o teléfono"
+ "Coloca a cara directamente diante do teléfono.""Demasiado movemento. Non movas o teléfono.""Volve rexistrar a túa cara.""Xa non se pode recoñecer a cara. Téntao de novo."
@@ -576,19 +577,19 @@
"Xira a cabeza un pouco menos.""Xira a cabeza un pouco menos.""Quita todo o que oculte a túa cara."
- "Limpa o sensor na parte superior da pantalla."
+ "Limpa a parte superior da pantalla, incluída a barra de cor negra""Sen verificar a cara. Hardware non dispoñible."
- "Tenta utilizar a autenticación facial de novo."
+ "Tenta utilizar o desbloqueo facial de novo.""Para gardar novos datos faciais, elimina os antigos."
- "Cancelouse a operación relacionada coa cara"
- "O usuario cancelou a autenticación facial"
+ "Cancelouse a operación relacionada coa cara"
+ "O usuario cancelou o desbloqueo facial.""Demasiados intentos. Téntao de novo máis tarde."
- "Demasiados intentos. Desactivouse a autenticación facial."
+ "Demasiados intentos. Desactivouse o desbloqueo facial.""Non se puido verificar a cara. Téntao de novo."
- "Non configuraches a autenticación facial"
- "Este dispositivo non é compatible coa autenticación facial"
+ "Non configuraches o desbloqueo facial."
+ "Este dispositivo non admite o desbloqueo facial.""Cara %d"
@@ -1090,27 +1091,27 @@
"Método de introdución de texto""Accións de texto""Correo electrónico"
- "Envía un correo electrónico ao enderezo seleccionado"
+ "Enviar un correo electrónico ao enderezo seleccionado""Chamar"
- "Chama ao número de teléfono seleccionado"
+ "Chamar ao número de teléfono seleccionado""Mapa"
- "Localiza o enderezo seleccionado"
+ "Localizar o enderezo seleccionado""Abrir"
- "Abre o URL seleccionado"
+ "Abrir o URL seleccionado""Enviar SMS"
- "Envía unha mensaxe ao número de teléfono seleccionado"
+ "Enviar unha mensaxe ao número de teléfono seleccionado""Engadir"
- "Engade o elemento aos contactos"
+ "Engadir o elemento aos contactos""Ver"
- "Consulta a hora seleccionada no calendario"
+ "Consultar a hora seleccionada no calendario""Programar"
- "Programa un evento para a data seleccionada"
+ "Programar un evento para a data seleccionada""Realizar seguimento"
- "Fai un seguimento do voo seleccionado"
+ "Facer un seguimento do voo seleccionado""Traducir"
- "Traduce o texto seleccionado"
+ "Traducir o texto seleccionado""Definir"
- "Define o texto seleccionado"
+ "Definir o texto seleccionado""Estase esgotando o espazo de almacenamento""É posible que algunhas funcións do sistema non funcionen""Non hai almacenamento suficiente para o sistema. Asegúrate de ter un espazo libre de 250 MB e reinicia o dispositivo."
@@ -1254,10 +1255,10 @@
"Toca para ver todas as redes""Conectarse""Todas as redes"
- "Queres conectarte a redes wifi?"
- "Suxerido por %s"
- "Si"
- "Non"
+ "Queres permitir as redes wifi suxeridas?"
+ "Redes suxeridas de %s. O dispositivo pode conectarse automaticamente."
+ "Permitir"
+ "Non, grazas""A wifi activarase automaticamente""Cando esteas preto dunha rede gardada de alta calidade""Non volver activar"
@@ -1888,8 +1889,8 @@
"Sen clasificar""Ti defines a importancia destas notificacións.""É importante polas persoas involucradas."
- "Queres permitir que %1$s cree un usuario novo con %2$s?"
- "Queres permitir que %1$s cree un usuario novo con %2$s? (Xa existe un usuario con esta conta)"
+ "Queres permitir que %1$s cree un usuario novo con %2$s? (Xa existe un usuario con esta conta)"
+ "Queres permitir que %1$s cree un usuario novo con %2$s?""Engadir un idioma""Preferencia de rexión""Nome do idioma"
@@ -1984,7 +1985,7 @@
"DESINSTALAR""ABRIR IGUALMENTE""Detectouse unha aplicación daniña"
- "A aplicación %1$s quere mostrar partes de %2$s"
+ "%1$s quere mostrar fragmentos de aplicación de %2$s""Editar""As chamadas e as notificacións vibrarán""As chamadas e as notificacións estarán silenciadas"
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index def64c50719346a3356694085cfc3ae2b2741a9a..ef915750d141868c02f80ccb04ad8fdbfc5d5eb0 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -95,6 +95,7 @@
"વૉઇસમેઇલ સંદેશા""વાઇ-ફાઇ કૉલિંગ""સિમનું સ્ટેટસ"
+ "સિમ કાર્ડનું ઉચ્ચ પ્રાધાન્યતાનું સ્ટેટસ""પીઅરે TTY મોડ પૂર્ણની વિનંતી કરી""પીઅરે TTY મોડ HCO ની વિનંતી કરી""પીઅરે TTY મોડ VCO ની વિનંતી કરી"
@@ -281,7 +282,7 @@
"<b>%1$s</b>ને તમારા સંપર્કોને ઍક્સેસ કરવાની મંજૂરી આપીએ?""સ્થાન""આ ઉપકરણના સ્થાનને ઍક્સેસ કરવાની"
- "<b>%1$s</b>ને આ ઉપકરણના સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?"
+ "<b>%1$s</b>ને આ ડિવાઇસના સ્થાનને ઍક્સેસ કરવાની મંજૂરી આપીએ?""જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો માત્ર ત્યારે જ ઍપ સ્થાનને ઍક્સેસ કરી શકશે""<b>%1$s</b>ને આ ડિવાઇસનું સ્થાન <b>હંમેશાં</b> ઍક્સેસ કરવાની મંજૂરી આપીએ?""હાલમાં માત્ર જ્યારે તમે ઍપનો ઉપયોગ કરી રહ્યા હશો હોય ત્યારે જ ઍપ સ્થાનને ઍક્સેસ કરી શકશે"
@@ -550,11 +551,11 @@
"ફિંગરપ્રિન્ટ આયકન"
- "ચહેરા પ્રમાણીકરણના હાર્ડવેરને મેનેજ કરો"
+ "ફેસ અનલૉકના હાર્ડવેરને મેનેજ કરો""ઍપને ઉપયોગ માટે ચહેરાના નમૂના ઉમેરવા અને ડિલીટ કરવાની પદ્ધતિને રદ કરવાની મંજૂરી આપે છે."
- "ચહેરા પ્રમાણીકરણના હાર્ડવેરનો ઉપયોગ કરો"
- "ઍપને પ્રમાણીકરણ માટે ચહેરા પ્રમાણીકરણના હાર્ડવેરનો ઉપયોગ કરવાની મંજૂરી આપે છે"
- "ચહેરાનું પ્રમાણીકરણ"
+ "ફેસ અનલૉક હાર્ડવેરનો ઉપયોગ કરો"
+ "ઍપને પ્રમાણીકરણ માટે ફેસ અનલૉકના હાર્ડવેરનો ઉપયોગ કરવાની મંજૂરી આપે છે"
+ "ફેસ અનલૉક""તમારા ચહેરાની ફરી નોંધણી કરાવો""ઓળખવાની પ્રક્રિયાને બહેતર બનાવવા માટે કૃપા કરીને તમારા ચહેરાની ફરી નોંધણી કરાવો""ચહેરાનો સચોટ ડેટા કૅપ્ચર ન થયો. ફરી પ્રયાસ કરો."
@@ -567,7 +568,7 @@
"ફોનને ડાબી બાજુ ખસેડો.""ફોનને જમણી બાજુ ખસેડો.""કૃપા કરીને તમારા ડિવાઇસ તરફ સીધું જુઓ."
- "તમારો ચહેરો દેખાતો નથી. ફોનની સામે જુઓ."
+ "તમારો ચહેરો તમારા ફોનની બિલકુલ સામે રાખો.""ડિવાઇસ અસ્થિર છે. ફોનને સ્થિર રાખો.""કૃપા કરીને તમારા ચહેરાની ફરી નોંધણી કરાવો.""ચહેરો ઓળખી શકાતો નથી. ફરી પ્રયાસ કરો."
@@ -576,19 +577,19 @@
"તમારું માથું થોડું ફેરવો.""તમારું માથું થોડું ઓછું ફેરવો.""તમારા ચહેરાને છુપાવતી કંઈપણ વસ્તુ દૂર કરો."
- "સ્ક્રીનની ટોચની ધાર પરના સેન્સરને સાફ કરો."
+ "કાળી પટ્ટી સહિત, તમારી સ્ક્રીનની ટોચ સાફ કરો""ચહેરો ચકાસી શકાતો નથી. હાર્ડવેર ઉપલબ્ધ નથી."
- "ચહેરા પ્રમાણીકરણનો ફરીથી પ્રયાસ કરી જુઓ."
+ "ફેસ અનલૉકને ફરી અજમાવો.""ચહેરાનો નવો ડેટા સ્ટોર કરી શકતાં નથી. પહેલા જૂનો ડિલીટ કરો."
- "ચહેરા સંબંધિત પ્રક્રિયા રદ કરવામાં આવી છે"
- "વપરાશકર્તાએ ચહેરાનું પ્રમાણીકરણ રદ કર્યુ"
+ "ચહેરા સંબંધિત કાર્યવાહી રદ કરવામાં આવી છે."
+ "વપરાશકર્તાએ ફેસ અનલૉક રદ કર્યું.""ઘણા બધા પ્રયત્નો. થોડા સમય પછી ફરી પ્રયાસ કરો."
- "ઘણા બધા પ્રયાસો. ચહેરાનું પ્રમાણીકરણ બંધ કરવામાં આવ્યું છે."
+ "ઘણા બધા પ્રયાસો. ફેસ અનલૉક બંધ કર્યું.""ચહેરો ચકાસી શકાતો નથી. ફરી પ્રયાસ કરો."
- "તમે ચહેરાના પ્રમાણીકરણનું સેટઅપ કર્યું નથી"
- "આ ડિવાઇસ પર ચહેરાનું પ્રમાણીકરણ કરવાની સુવિધા નથી"
+ "તમે ફેસ અનલૉકનું સેટઅપ કર્યું નથી."
+ "આ ડિવાઇસ પર ફેસ અનલૉક કરવાની સુવિધા નથી.""ચહેરાનું %d"
@@ -1254,10 +1255,10 @@
"બધા નેટવર્ક જોવા ટૅપ કરો""કનેક્ટ કરો""બધા નેટવર્કો"
- "વાઇ-ફાઇ નેટવર્ક સાથે કનેક્ટ કરીએ?"
- "%s દ્વારા સૂચવાયેલ"
- "હા"
- "ના"
+ "સૂચવેલા વાઇ-ફાઇ નેટવર્કને મંજૂરી આપીએ?"
+ "%s સૂચવેલા નેટવર્ક. ડિવાઇસ ઑટોમૅટિક રીતે કનેક્ટ થાય તેમ બની શકે છે."
+ "મંજૂરી આપો"
+ "ના, આભાર""વાઇ-ફાઇ આપમેળે ચાલુ થઈ જશે""જ્યારે તમે એક ઉચ્ચ ક્વૉલિટીવાળા સાચવેલ નેટવર્કની નજીક હોવ""પાછું ચાલુ કરશો નહીં"
@@ -1343,7 +1344,7 @@
"કોઈ પરવાનગીઓ જરૂરી નથી""આનાથી તમારા પૈસા ખર્ચ થઈ શકે છે""ઓકે"
- "આ ઉપકરણને USB મારફતે ચાર્જ કરી રહ્યાં છીએ"
+ "આ ડિવાઇસને USB મારફતે ચાર્જ કરી રહ્યાં છીએ""કનેક્ટેડ ઉપકરણને USB મારફતે ચાર્જ કરી રહ્યાં છીએ""USB ફાઇલ ટ્રાન્સફર ચાલુ છે""USB મારફતે PTP ચાલુ કર્યું"
@@ -1888,8 +1889,8 @@
"અવર્ગીકૃત""તમે આ સૂચનાઓનું મહત્વ સેટ કર્યું છે.""શામેલ થયેલ લોકોને કારણે આ મહત્વપૂર્ણ છે."
- "%1$s ને %2$s સાથે એક નવા વપરાશકર્તાને બનાવવાની મંજૂરી આપીએ?"
- "%2$s સાથે %1$s ને એક નવા વપરાશકર્તાને બનાવવાની મંજૂરી આપીએ (આ એકાઉન્ટ સાથેના એક વપરાશકર્તા પહેલાંથી અસ્તિત્વમાં છે)?"
+ "%1$sને %2$s માટે એક નવા વપરાશકર્તા બનાવવાની મંજૂરી આપીએ (આ એકાઉન્ટ માટે એક વપરાશકર્તા પહેલાંથી અસ્તિત્વમાં છે) ?"
+ "%1$sને %2$s માટે એક નવા વપરાશકર્તા બનાવવાની મંજૂરી આપીએ ?""ભાષા ઉમેરો""પ્રદેશ પસંદગી""ભાષાનું નામ ટાઇપ કરો"
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 0fcc8c68821fcc8464fe74139e4a8764e7f4c9d5..28c75692b79d0893c0b0bb85a257bac2d4a41870 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -95,6 +95,7 @@
"वॉइसमेल संदेश""वाई-फ़ाई कॉलिंग""सिम की स्थिति"
+ "सिम की ज़रूरी सूचनाओं की स्थिति""पीयर ने टेलीटाइपराइटर (TTY) मोड फ़ुल का अनुरोध किया""पीयर ने टेलीटाइपराइटर (TTY) मोड एचसीओ (HCO) का अनुरोध किया""पीयर ने टेलीटाइपराइटर (TTY) मोड वीसीओ (VCO) का अनुरोध किया"
@@ -281,9 +282,9 @@
"<b>%1$s</b> को अपने संपर्क देखने की अनुमति देना चाहते हैं?""जगह""इस डिवाइस की जगह तक पहुंचने दें"
- "<b>%1$s</b> को इस डिवाइस की \'जगह की जानकारी\' एक्सेस करने की अनुमति देना चाहते हैं?"
+ "<b>%1$s</b> को इस डिवाइस की \'जगह की जानकारी\' ऐक्सेस करने की अनुमति देना चाहते हैं?""ऐप्लिकेशन, डिवाइस की जगह की जानकारी सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों"
- "क्या आप %1$s को हमेशा के लिए जगह की जानकारी एक्सेस करने की अनुमति देना चाहते हैं?"
+ "क्या आप %1$s को हमेशा के लिए जगह की जानकारी ऐक्सेस करने की अनुमति देना चाहते हैं?""इस समय ऐप्लिकेशन, डिवाइस की \'जगह की जानकारी\' सिर्फ़ तभी देख पाएगा जब आप इसका इस्तेमाल कर रहे हों""कैलेंडर""अपने कैलेंडर को ऐक्सेस करने"
@@ -293,7 +294,7 @@
"<b>%1$s</b> को एसएमएस (मैसेज) भेजने और देखने की अनुमति देना चाहते हैं?""मेमोरी""अपने डिवाइस पर मौजूद फ़ोटो, मीडिया और फ़ाइलें ऐक्सेस करने की"
- "<b>%1$s</b> को डिवाइस पर मौजूद फ़ोटो, ऑडियो-वीडियो और फ़ाइलें एक्सेस करने की अनुमति दें?"
+ "<b>%1$s</b> को डिवाइस पर मौजूद फ़ोटो, ऑडियो-वीडियो और फ़ाइलें ऐक्सेस करने की अनुमति दें?""माइक्रोफ़ोन""ऑडियो रिकॉर्ड करें""<b>%1$s</b> को ऑडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?"
@@ -305,7 +306,7 @@
"<b>%1$s</b> को फ़ोटो खींचने और वीडियो रिकॉर्ड करने की अनुमति देना चाहते हैं?""कॉल लॉग""कॉल लॉग की जानकारी देखना और उसमें बदलाव करना"
- "<b>%1$s</b> को अपने काॅल लाॅग एक्सेस करने की मंज़ूरी देना चाहते हैं?"
+ "<b>%1$s</b> को अपने काॅल लाॅग ऐक्सेस करने की मंज़ूरी देना चाहते हैं?""फ़ोन""फ़ोन कॉल करने और उन्हें प्रबंधित करने की अनुमति दें""<b>%1$s</b> को फ़ोन कॉल करने और उन्हें प्रबंधित करने की अनुमति दें?"
@@ -339,22 +340,22 @@
"फ़ोन कॉल का जवाब दें""ऐप्लिकेशन को किसी इनकमिंग फ़ोन कॉल का जवाब देने देती है.""मैसेज (एसएमएस) पाएं"
- "ऐप को मैसेज (एसएमएस) को प्राप्त और संसाधित करने देता है. इसका अर्थ है कि ऐप आपके डिवाइस पर भेजे गए संदेशों की निगरानी आपको दिखाए बिना कर सकता है और उन्हें हटा सकता है."
+ "एप्लिकेशन को मैसेज (एसएमएस) पाने और प्रोसेस करने देता है. इसका मतलब है कि एप्लिकेशन आपके डिवाइस पर भेजे गए मैसेज की निगरानी आपको दिखाए बिना कर सकता है और उन्हें हटा सकता है.""मैसेज (एमएमएस) पाएं""ऐप को मल्टीमीडिया मैसेज (एमएमएस) को पाने और उन पर कार्रवाई करने देता है. इसका मतलब है कि ऐप आपके डिवाइस पर भेजे गए मैसेज की निगरानी आपको दिखाए बिना कर सकता है और उन्हें हटा सकता है.""सेल ब्रॉडकास्ट (CBC) मैसेज पढ़ें""ऐप को, वो सेल ब्रॉडकास्ट (CBC) मैसेज पढ़ने देता है जो आपके डिवाइस को मिले हैं. सेल ब्रॉडकास्ट (CBC) अलर्ट कुछ स्थानों (लोकेशन) पर आपको आपातकालीन स्थितियों की चेतावनी देने के लिए दिए जाते हैं. आपातकालीन सेल ब्रॉडकास्ट (CBC) मिलने पर, धोखा देने वाले ऐप आपके डिवाइस के परफ़ॉर्मेंस या कार्यवाही में दखल दे सकते हैं."
- "सदस्यता-प्राप्त फ़ीड पढ़ें"
- "ऐप्स को वर्तमान में समन्वयित फ़ीड के बारे में विवरण प्राप्त करने देता है."
+ "सदस्यता वाली फ़ीड पढ़ें"
+ "एप्लिकेशन को मौजूदा समय में सिंक फ़ीड के बारे में जानकारी देता है.""मैसेज (एमएमएस) भेजें और देखें""ऐप को मैसेज (एसएमएस) भेजने देता है. इसकी वजह से उम्मीद से ज़्यादा शुल्क लग सकते हैं. धोखा देने वाले ऐप आपकी पुष्टि के बिना मैसेज भेजकर आपका पैसा खर्च करवा सकते हैं.""अपने मैसेज (एसएमएस या एमएमएस) पढ़ें""यह ऐप आपके टैबलेट पर सहेजे गए सभी मैसेज (एसएमएस) पढ़ सकता है.""यह ऐप आपके टीवी पर सहेजे गए सभी मैसेज (एसएमएस) पढ़ सकता है.""यह ऐप आपके फ़ोन पर सहेजे गए सभी मैसेज (एसएमएस) पढ़ सकता है."
- "लेख संदेश (WAP) प्राप्त करें"
- "ऐप्स को WAP संदेशों को प्राप्त और संसाधित करने देता है. इस अनुमति में आपको भेजे गए संदेशों की निगरानी आपको दिखाए बिना करने और हटाने की क्षमता शामिल है."
- "चल रहे ऐप्स पुनर्प्राप्त करें"
+ "टेक्सट मैसेज (WAP) पाएं"
+ "एप्लिकेशन को WAP मैसेज पाने और प्रोसेस करने देता है. इस अनुमति में आपको भेजे गए मैसेज की निगरानी आपको दिए एप्लिकेशन को दिखाए बिना करने और हटाने की क्षमता शामिल है."
+ "चल रहे ऐप्स फिर से पाएं""ऐप को माजूदा समय में और हाल ही में चल रही कार्रवाइयों के बारे में जानकारी निकालने देता है. इससे ऐप डिवाइस पर इस्तेमाल किए गए ऐप के बारे में जानकारी खोज सकता है.""प्रोफ़ाइल और डिवाइस स्वामियों को प्रबंधित करें""ऐप्स को प्रोफ़ाइल स्वामी और डिवाइस स्वामी सेट करने दें."
@@ -402,7 +403,7 @@
"ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टैबलेट के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं.""ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके टीवी के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं.""ऐप को आने वाला कॉल (इनकमिंग) और किया जाने वाला कॉल (आउटगोइंग) डेटा सहित, आपके फ़ोन के कॉल लॉग को बदलने की अनुमति देता है. धोखा देने वाले ऐप, इसका इस्तेमाल करके आपके कॉल लॉग को मिटा या बदल सकते हैं."
- "शरीर के लिए बने सेंसर (जैसे हृदय गति मॉनीटर) को एक्सेस करें"
+ "शरीर के लिए बने सेंसर (जैसे हृदय गति मॉनीटर) को ऐक्सेस करें""ऐप को आपकी शारीरिक स्थिति, जैसे आपकी हृदय गति पर नज़र रखने वाले सेंसर के डेटा तक पहुंचने देती है.""कैलेंडर इवेंट और विवरण पढ़ें""यह ऐप्लिकेशन आपके टैबलेट पर संग्रहित सभी कैलेंडर इवेंट पढ़ सकता है और आपका कैलेंडर डेटा शेयर कर सकता है या सहेज सकता है."
@@ -414,14 +415,14 @@
"यह ऐप्लिकेशन आपके फ़ोन पर मौजूद कैलेंडर इवेंट जोड़, निकाल या बदल सकता है. यह ऐप्लिकेशन ऐसे संदेश भेज सकता है जो कैलेंडर स्वामियों से आए हुए लग सकते हैं या यह स्वामियों को सूचित किए बिना इवेंट में बदलाव कर सकता है.""कुछ और जगह बताने वाले आदेशों तक पहुंच""ऐप को कुछ और जगह की जानकारी देने वाले आदेशों की पहुंच पाने देता है. इससे ऐप जीपीएस या जगह की जानकारी देने वाले दूसरे स्रोतों के काम में रोक-टोक कर सकता है."
- "ऐप्लिकेशन \'जगह की सटीक जानकारी\' सिर्फ़ सामने खुली होने पर एक्सेस करे"
+ "ऐप्लिकेशन \'जगह की सटीक जानकारी\' सिर्फ़ सामने खुली होने पर ऐक्सेस करे""यह ऐप्लिकेशन सिर्फ़ तब आपकी \'जगह की सटीक जानकारी\' का इस्तेमाल कर सकता है जब यह स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि \'जगह की जानकारी\' वाली ये सेवाएं आपके फ़ोन में मौजूद हों और चालू की गई हों ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए. ऐसा करने से ज़्यादा बैटरी खर्च हो सकती है."
- "स्क्रीन पर दिखाई देते समय \'जगह की अनुमानित जानकारी\' (नेटवर्क-आधारित) एक्सेस करें"
+ "स्क्रीन पर दिखाई देते समय \'जगह की अनुमानित जानकारी\' (नेटवर्क-आधारित) ऐक्सेस करें""यह ऐप्लिकेशन सेल टावर और वाई-फ़ाई नेटवर्क जैसे नेटवर्क स्रोतों के आधार पर आपकी जगह का पता लगा सकता है, लेकिन सिर्फ़ तब, जब ऐप्लिकेशन स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि \'जगह की जानकारी\' वाली ये सेवाएं आपके टैबलेट में मौजूद हों और चालू की गई हों ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए.""यह ऐप्लिकेशन सेल टावर और वाई-फ़ाई नेटवर्क जैसे नेटवर्क स्रोतों के आधार पर आपकी जगह का पता लगा सकता है, लेकिन सिर्फ़ तब, जब ऐप्लिकेशन स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि \'जगह की जानकारी\' वाली ये सेवाएं आपके टीवी पर मौजूद हों और चालू की गई हों ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए.""यह ऐप्लिकेशन सेल टावर और वाई-फ़ाई नेटवर्क जैसे नेटवर्क स्रोतों के आधार पर आपकी जगह का पता लगा सकता है, लेकिन सिर्फ़ तब, जब ऐप्लिकेशन स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि \'जगह की जानकारी\' वाली ये सेवाएं आपके फ़ोन में मौजूद हों और चालू की गई हों ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए."
- "बैकग्राउंड में जगह की जानकारी एक्सेस करना"
- "अनुमानित या बिल्कुल सही जगह की जानकारी का एक्सेस करने की अनुमति अलग से दिए जाने पर, बैकग्राउंड में चलने के दौरान ऐप्लिकेशन आपकी जगह की जानकारी एक्सेस कर सकता है."
+ "बैकग्राउंड में जगह की जानकारी ऐक्सेस करना"
+ "अनुमानित या बिल्कुल सही जगह की जानकारी का ऐक्सेस करने की अनुमति अलग से दिए जाने पर, बैकग्राउंड में चलने के दौरान ऐप्लिकेशन आपकी जगह की जानकारी ऐक्सेस कर सकता है.""अपनी ऑडियो सेटिंग बदलें""ऐप्स को वैश्विक ऑडियो सेटिंग, जैसे वॉल्यूम और कौन-सा स्पीकर आउटपुट के लिए उपयोग किया गया, संशोधित करने देता है.""ऑडियो रिकॉर्ड करने"
@@ -450,7 +451,7 @@
"ऐप को डिवाइस के फ़ोन नंबर का इस्तेमाल करने देती है.""टैबलेट को सोने (कम बैटरी मोड) से रोकें""टीवी को सोने (कम बैटरी मोड) से रोकें"
- "टीवी को सोने (कम बैटरी मोड) से रोकें"
+ "फ़ोन को सोने (कम बैटरी मोड) से रोकें""ऐप्स को टैबलेट को प्रयोग में नहीं हो जाने से रोकता है.""ऐप को टीवी को सोने (कम बैटरी मोड) से रोकने की अनुमति देता है.""ऐप्स को फ़ोन को प्रयोग में नहीं होने से रोकता है."
@@ -467,9 +468,9 @@
"ऐप को टीवी का समय क्षेत्र बदलने देती है.""ऐप्स को टैबलेट का समय क्षेत्र बदलने देता है.""डिवाइस पर खाते ढूंढें"
- "ऐप्स को टैबलेट द्वारा ज्ञात खातों की सूची प्राप्त करने देता है. इसमें वे खाते शामिल हो सकते हैं जिन्हें इंस्टॉल किए गए ऐप्स ने बनाया है."
- "ऐप को टीवी द्वारा ज्ञात खातों की सूची प्राप्त करने देती है. इसमें इंस्टॉल किए गए ऐप्लिकेशन के द्वारा बनाए गए खाते शामिल हो सकते हैं."
- "ऐप्स को फ़ोन द्वारा ज्ञात खातों की सूची प्राप्त करने देता है. इसमें वे खाते शामिल हो सकते हैं जिन्हें इंस्टॉल किए गए ऐप्स ने बनाया है."
+ "एप्लिकेशन को टैबलेट से ज्ञात खातों की सूची पाने देता है. इसमें वे खाते शामिल हो सकते हैं जिन्हें इंस्टॉल किए गए एप्लिकेशन ने बनाया है."
+ "ऐप्लिकेशन को टीवी से ज्ञात खातों की सूची पाने देती है. इसमें इंस्टॉल किए गए ऐप्लिकेशन से बनाए गए खाते शामिल हो सकते हैं."
+ "एप्लिकेशन को फ़ोन से ज्ञात खातों की सूची पाने देता है. इसमें वे खाते शामिल हो सकते हैं जिन्हें इंस्टॉल किए गए एप्लिकेशन ने बनाया है.""नेटवर्क कनेक्शन देखें""ऐप को नेटवर्क कनेक्शन के बारे में जानकारी देखने देता है, जैसे कौन से नेटवर्क मौजूद हैं और कनेक्ट हैं.""नेटवर्क को पूरी तरह इस्तेमाल करें"
@@ -483,9 +484,9 @@
"वाई-फ़ाई से कनेक्ट और डिस्कनेक्ट करें""ऐप्स को वाई-फ़ाई पहुंच बिंदुओं से कनेक्ट और डिसकनेक्ट करने और वाई-फ़ाई नेटवर्क के लिए डिवाइस कॉन्फ़िगरेशन में परिवर्तन करने देता है.""वाई-फ़ाई मल्टीकास्ट पाने को अनुमति दें"
- "ऐप्स को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के उपयोग से केवल आपके टैबलेट पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट प्राप्त करने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का उपयोग करता है."
- "ऐप को मल्टीकास्ट पतों का उपयोग करके ना केवल आपके टीवी को, बल्कि वाई-फ़ाई पर मौजूद सभी डिवाइसों को पैकेट भेजने और प्राप्त करने देती है. इसमें गैर-मल्टीकास्ट मोड की अपेक्षा ज़्यादा पावर का उपयोग होता है."
- "ऐप्स को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के उपयोग से केवल आपके फ़ोन पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट प्राप्त करने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का उपयोग करता है."
+ "एप्लिकेशन को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के इस्तेमाल से सिर्फ़ आपके टैबलेट पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट पाने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का इस्तेमाल करता है."
+ "ऐप्लिकेशन को मल्टीकास्ट पतों का उपयोग करके न सिर्फ़ आपके टीवी को, बल्कि वाई-फ़ाई पर मौजूद सभी डिवाइसों को पैकेट भेजने और पाने देती है. इसमें गैर-मल्टीकास्ट मोड की अपेक्षा ज़्यादा पावर का उपयोग होता है."
+ "एप्लिकेशन को वाई-फ़ाई नेटवर्क पर मल्टीकास्ट पते के इस्तेमाल से सिर्फ़ आपके फ़ोन पर ही नहीं, बल्कि सभी डिवाइस पर भेजे गए पैकेट पाने देता है. यह गैर-मल्टीकास्ट मोड से ज़्यादा पावर का इस्तेमाल करता है.""ब्लूटूथ सेटिंग पर पहुंचें""किसी ऐप्स को स्थानीय ब्लूटूथ टैबलेट कॉन्फ़िगर करने की और रिमोट डिवाइस के साथ खोजने और युग्मित करने देता है.""ऐप को स्थानीय ब्लूटूथ टीवी कॉन्फ़िगर करने देती है और दूरस्थ डिवाइसों को खोजने और उनसे युग्मित करने देती है."
@@ -503,7 +504,7 @@
"नियर फ़ील्ड कम्यूनिकेशन नियंत्रित करें""ऐप्स को नियर फ़ील्ड कम्यूनिकेशन (NFC) टैग, कार्ड, और रीडर के साथ संचार करने देता है.""अपना स्क्रीन लॉक अक्षम करें"
- "ऐप्स को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा अक्षम करने देता है. उदाहरण के लिए, इनकमिंग फ़ोन कॉल प्राप्त करते समय फ़ोन, कीलॉक को अक्षम कर देता है, फिर कॉल खत्म होने पर कीलॉक को फिर से सक्षम कर देता है."
+ "ऐप्स को कीलॉक और कोई भी संबद्ध पासवर्ड सुरक्षा बंद करने देता है. उदाहरण के लिए, इनकमिंग फ़ोन कॉल पाते समय फ़ोन, कीलॉक को बंद कर देता है, फिर कॉल खत्म होने पर कीलॉक को फिर से चालू कर देता है.""जानें कि स्क्रीन लॉक कितना मुश्किल बनाया गया है""यह मंज़ूरी मिलने के बाद ऐप्लिकेशन जान पाता है कि स्क्रीन लॉक कितना मुश्किल (बहुत ज़्यादा, मध्यम, कम या बिल्कुल नहीं) है. इस स्तर से यह पता चलता है कि स्क्रीन लॉक कितना लंबा या किस तरह का है. ऐप्लिकेशन उपयोगकर्ताओं को यह सुझाव भी दे सकता है कि वे स्क्रीन लॉक को एक तय लेवल तक अपडेट करें. लेकिन उपयोगकर्ता इसे बेझिझक अनदेखा करके छोड़ सकते हैं. ध्यान दें कि स्क्रीन लॉक को सादे टेक्स्ट में सेव नहीं किया जाता है इसलिए ऐप्लिकेशन को सटीक पासवर्ड पता नहीं होता है.""बायोमीट्रिक हार्डवेयर इस्तेमाल करने दें"
@@ -518,8 +519,8 @@
"इससे ऐप्लिकेशन को आपके वीडियो संग्रह में बदलाव करने की मंज़ूरी दी जाती है.""अपने फ़ोटो संग्रह में बदलाव करने की अनुमति दें""इससे ऐप्लिकेशन को आपके फ़ोटो संग्रह में बदलाव करने की मंज़ूरी दी जाती है."
- "अपने मीडिया संग्रह से जगह की जानकारी एक्सेस करने की अनुमति दें"
- "इससे ऐप्लिकेशन को आपके मीडिया संग्रह से जगह की जानकारी एक्सेस करने की अनुमति दी जाती है."
+ "अपने मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दें"
+ "इससे ऐप्लिकेशन को आपके मीडिया संग्रह से जगह की जानकारी ऐक्सेस करने की अनुमति दी जाती है.""अपनी पहचान की पुष्टि करें""बायोमेट्रिक हार्डवेयर उपलब्ध नहीं है""प्रमाणीकरण रद्द किया गया"
@@ -550,11 +551,11 @@
"फ़िंगरप्रिंट आइकॉन"
- "चेहरे की पुष्टि करने वाला हार्डवेयर प्रबंधित करें"
+ "\'मालिक का चेहरा पहचानकर अनलॉक\' वाला हार्डवेयर प्रबंधित करें""ऐप्लिकेशन को चेहरे के टेम्पलेट इस्तेमाल के तरीके जोड़ने और मिटाने की मंज़ूरी मिलती है."
- "चेहरे की पुष्टि करने वाला हार्डवेयर इस्तेमाल करें"
- "ऐप्लिकेशन को चेहरे की पुष्टि करने वाले हार्डवेयर का इस्तेमाल करने की मंज़ूरी मिलती है"
- "चेहरे की पहचान"
+ "\'मालिक का चेहरा पहचानकर अनलॉक\' वाला हार्डवेयर इस्तेमाल करें"
+ "ऐप्लिकेशन को \'मालिक का चेहरा पहचानकर अनलॉक\' वाले हार्डवेयर के इस्तेमाल की मंज़ूरी देता है"
+ "मालिक का चेहरा पहचानकर अनलॉक""अपना चेहरा फिर से दर्ज करें""कृपया अपना चेहरा फिर से दर्ज करें ताकि आपको बेहतर तरीके से पहचाना जा सके""चेहरे से जुड़ा सटीक डेटा कैप्चर नहीं किया जा सका. फिर से कोशिश करें."
@@ -567,7 +568,7 @@
"फ़ोन को बाईं ओर घुमाएं.""फ़ोन को दाईं ओर घुमाएं.""कृपया अपने डिवाइस की तरफ़ सीधे देखें."
- "आपका चेहरा नहीं दिखाई दे रहा. फ़ोन की तरफ़ देखें."
+ "अपने चेहरे को फोन के ठीक सामने लाएं.""डिवाइस बहुत ज़्यादा हिल रहा है. फ़ोन को बिना हिलाएं पकड़ें.""कृपया फिर से अपने चेहरे की पहचान कराएं.""अब चेहरे की पहचान नहीं कर पा रहा. फिर से कोशिश करें."
@@ -576,19 +577,19 @@
"अपना सिर थोड़ा कम घुमाएं.""अपना सिर थोड़ा कम घुमाएं.""आपके चेहरे को छिपाने वाली सभी चीज़ों को हटाएं."
- "स्क्रीन के ऊपरी किनारे पर मौजूद सेंसर को साफ करें."
+ "अपनी स्क्रीन के सबसे ऊपरी हिस्से को साफ़ करें, जिसमें काले रंग वाला बार भी शामिल है""चेहरा नहीं पहचान पा रहे. हार्डवेयर उपलब्ध नहीं है."
- "चेहरे की पुष्टि के लिए फिर से कोशिश करें."
+ "\'मालिक का चेहरा पहचानकर अनलॉक\' फिर से आज़माएं.""चेहरे का नया डेटा सेव नहीं हो सकता. कोई पुराना डेटा मिटाएं."
- "चेहरा पहचानने की कार्रवाई रद्द की गई"
- "उपयोगकर्ता ने \'चेहरे की पहचान\' रद्द कर दी."
+ "चेहरा पहचानने की कार्रवाई रद्द की गई."
+ "उपयोगकर्ता ने \'मालिक का चेहरा पहचानकर अनलॉक\' रद्द की.""कई बार कोशिश की गई. बाद में कोशिश करें."
- "कई बार कोशिश की जा चुकी है. \'चेहरे की पहचान\' बंद कर दी गई."
+ "कई बार कोशिश की जा चुकी है. \'मालिक का चेहरा पहचानकर अनलॉक\' बंद है.""चेहरा नहीं पहचान पा रहे. फिर से कोशिश करें."
- "आपने डिवाइस पर \'चेहरे की पहचान\' सेट नहीं की है."
- "इस डिवाइस पर \'चेहरे की पहचान\' सुविधा काम नहीं करती."
+ "आपने \'मालिक का चेहरा पहचानकर अनलॉक\' सेट नहीं की है."
+ "इस डिवाइस पर \'मालिक का चेहरा पहचानकर अनलॉक\' काम नहीं करती है.""चेहरा %d"
@@ -603,8 +604,8 @@
"ऐप्लिकेशन को आपकी शेयर की गई मेमोरी की सामग्री पढ़ने देती है.""आपकी शेयर की गई मेमोरी की सामग्री में बदलाव करना या उसे मिटाना""ऐप्लिकेशन को आपकी शेयर की गई मेमोरी की सामग्री लिखने देती है."
- "SIP कॉल करें/प्राप्त करें"
- "ऐप्स को SIP कॉल करने और प्राप्त करने देती है."
+ "SIP कॉल करें/पाएं"
+ "ऐप्लिकेशन को SIP कॉल करने और पाने देता है.""नए टेलिकॉम सिम कनेक्शन रजिस्टर करें""ऐप को नए टेलिकॉम सिम कनेक्शन पंजीकृत करने देती है.""नए टेलिकॉम कनेक्शन रजिस्टर करें"
@@ -614,7 +615,7 @@
"इन-कॉल स्क्रीन से सहभागिता करें""ऐप को यह नियंत्रित करने देती है कि उपयोगकर्ता को इन-कॉल स्क्रीन कब और कैसी दिखाई देती है.""टेलीफ़ोनी सेवाओं के साथ सहभागिता करें"
- "कॉल करने/प्राप्त करने के लिए ऐप्स को टेलीफ़ोनी सेवा के साथ सहभागिता करने दें."
+ "कॉल करने/पाने के लिए ऐप्स को टेलीफ़ोनी सेवा के साथ सहभागिता करने दें.""इन कॉल उपयोगकर्ता अनुभव लें""ऐप को इन कॉल उपयोगकर्ता अनुभव लेने देती है.""ऐतिहासिक नेटवर्क उपयोग पढें"
@@ -637,7 +638,7 @@
"ऐप्स को नेटवर्क स्थितियों के अवलोकनों को सुनने देता है. सामान्य ऐप्स के लिए कभी भी आवश्यक नहीं होना चाहिए.""इनपुट डिवाइस कैलिब्रेशन बदलें""ऐप्स को टच स्क्रीन के कैलिब्रेशन पैरामीटर को बदलने देती है. सामान्य ऐप्स के लिए कभी भी आवश्यक नहीं होना चाहिए."
- "DRM प्रमाणपत्र एक्सेस करें"
+ "DRM प्रमाणपत्र ऐक्सेस करें""ऐप्लिकेशन को DRM प्रमाणपत्रों का प्रावधान और उपयोग करने देती है. सामान्य ऐप्स के लिए कभी भी आवश्यकता नहीं होना चाहिए.""Android बीम ट्रांसफ़र की स्थिति पाएं""इस ऐप को मौजूदा Android बीम ट्रांसफ़र के बारे में जानकारी पाने की अनुमति दें."
@@ -1084,7 +1085,7 @@
"वापस लाएं""फिर से करें""ऑटोमैटिक भरना"
- "लेख चयन"
+ "टेक्स्ट चुनें""शब्दकोश में जोड़ें""मिटाएं""इनपुट विधि"
@@ -1134,7 +1135,7 @@
"इसे इस्तेमाल करके लिंक खोलें""%1$s इस्तेमाल करके लिंक खोलें""%2$s इस्तेमाल करके %1$s लिंक खोलें"
- "एक्सेस दें"
+ "ऐक्सेस दें""इसके ज़रिये बदलाव करें""%1$s की मदद से बदलाव करें""बदलाव करें"
@@ -1151,7 +1152,7 @@
"%1$s के साथ चित्र कैप्चर करें""चित्र कैप्चर करें""इस कार्रवाई के लिए डिफ़ॉल्ट के तौर पर इस्तेमाल करें"
- "किसी भिन्न ऐप्स का उपयोग करें"
+ "किसी दूसरे ऐप्लिकेशन का इस्तेमाल करें""सिस्टम सेटिंग और डाउनलोड किए गए ऐप में डिफ़ॉल्ट साफ़ करें.""कोई कार्रवाई चुनें""USB डिवाइस के लिए कोई ऐप्स चुनें"
@@ -1213,9 +1214,9 @@
"%1$s हीप डंप तैयार है""हीप डंप (Java™ प्रोसेस मेमोरी का स्नैपशॉट) ले लिया गया है. शेयर करने के लिए टैप करें.""हीप डंप शेयर करें?"
- "%1$s प्रक्रिया अपनी %2$s की मेमोरी सीमा पार कर चुकी है. एक हीप डंप इसके डेवलपर के साथ शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी निजी जानकारी भी शामिल हो सकती है जिसका एक्सेस ऐप्लिकेशन के पास हो."
- "%1$s प्रक्रिया अपनी %2$s की मेमोरी सीमा पार कर चुकी है. एक हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी भी शामिल हो सकती है जिसका एक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है."
- "%1$s प्रक्रिया का हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी शामिल हो सकती है जिसका एक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है."
+ "%1$s प्रक्रिया अपनी %2$s की मेमोरी सीमा पार कर चुकी है. एक हीप डंप इसके डेवलपर के साथ शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी निजी जानकारी भी शामिल हो सकती है जिसका ऐक्सेस ऐप्लिकेशन के पास हो."
+ "%1$s प्रक्रिया अपनी %2$s की मेमोरी सीमा पार कर चुकी है. एक हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी भी शामिल हो सकती है जिसका ऐक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है."
+ "%1$s प्रक्रिया का हीप डंप शेयर किए जाने के लिए तैयार है. सावधान रहें: इस हीप डंप में कोई ऐसी संवेदनशील निजी जानकारी शामिल हो सकती है जिसका ऐक्सेस प्रोसेस के पास हो. इसमें आपके टाइप किए गए शब्दों का डेटा भी शामिल है.""मैसेज करने के लिए कोई कार्रवाई चुनें""रिंगर वॉल्यूम""मीडिया वॉल्यूम"
@@ -1254,10 +1255,10 @@
"सभी नेटवर्क देखने के लिए यहां पर टैप करें""कनेक्ट करें""सभी नेटवर्क"
- "वाई-फ़ाई नेटवर्क से कनेक्ट करना चाहते हैं?"
- "%s का सुझाया हुआ"
- "हां"
- "नहीं"
+ "सुझाए गए वाई-फ़ाई नेटवर्क को अनुमति देना चाहते हैं?"
+ "%s के सुझाए गए नेटवर्क. डिवाइस अपने आप कनेक्ट हो सकता है."
+ "अनुमति दें"
+ "रहने दें""वाई-फ़ाई अपने आप चालू हो जाएगा""जब आप किसी अच्छी क्वालिटी वाले सेव किए गए नेटवर्क के पास हों""वापस चालू न करें"
@@ -1344,7 +1345,7 @@
"ठीक है""यह डिवाइस यूएसबी से चार्ज हो रहा है""जोड़ा गया डिवाइस यूएसबी के ज़रिए चार्ज हो रहा है"
- "यूएसबी फ़ाइल ट्रांसफ़र की सुविधा चालू की गई"
+ "यूएसबी फ़ाइल ट्रांसफ़र करने की सुविधा चालू की गई""यूएसबी के ज़रिए पीटीपी की सुविधा चालू की गई""यूएसबी टेदरिंग की सुविधा चालू की गई""यूएसबी के ज़रिए एमआईडीआई (मिडी) की सुविधा चालू की गई"
@@ -1353,7 +1354,7 @@
"जोड़ा गया डिवाइस चार्ज हो रहा है. ज़्यादा विकल्पों के लिए टैप करें.""एनालॉग ऑडियो एक्सेसरी का पता चला""अटैच किया गया डिवाइस इस फ़ोन से संगत नहीं है. ज़्यादा जानने के लिए टैप करें."
- "डीबग करने के लिए एडीबी कनेक्ट किया गया"
+ "यूएसबी डीबग करने के लिए एडीबी कनेक्ट किया गया""यूएसबी को डीबग करने की सुविधा बंद करने के लिए टैप करें""USB डीबग करना अक्षम करने के लिए चुनें.""टेस्ट हार्नेस मोड चालू किया गया"
@@ -1375,7 +1376,7 @@
"भाषा और लेआउट चुनने के लिए टैप करें"" ABCDEFGHIJKLMNOPQRSTUVWXYZ"" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- "दूसरे ऐप्लिकेशन के ऊपर दिखाए जाने का एक्सेस"
+ "दूसरे ऐप्लिकेशन के ऊपर दिखाए जाने का ऐक्सेस""%s अन्य ऐप्लिकेशन के ऊपर दिखाई दे रहा है""%s अन्य ऐप पर दिखाई दे रहा है""अगर आप नहीं चाहते कि %s इस सुविधा का उपयोग करे, तो सेटिंग खोलने और उसे बंद करने के लिए टैप करें."
@@ -1887,8 +1888,8 @@
"बिना किसी श्रेणी के""आपने इन सूचनाओं की अहमियत सेट की है.""यह मौजूद व्यक्तियों के कारण महत्वपूर्ण है."
- "%1$s को %2$s के ज़रिये एक नया उपयोगकर्ता बनाने दें?"
- "%1$s को %2$s के ज़रिये एक नया उपयोगकर्ता बनाने दें (इस खाते वाले एक उपयोगकर्ता पहले से मौजूद हैं)?"
+ "%1$s को %2$s के नाम से एक नया उपयोगकर्ता बनाने की अनुमति दें (इस नाम से एक खाता पहले से मौजूद है)?"
+ "Allow %1$s to create a new User with %2$s?""भाषा जोड़ें""क्षेत्र प्राथमिकता""भाषा का नाम लिखें"
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index abb14139bfa822e468451689c7506edb8a048e2d..f7afea5978b9de30f64a56ce05a592741a7e2213 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -96,6 +96,7 @@
"Poruke govorne pošte""Wi-Fi pozivi""Status SIM-a"
+ "Status SIM-a visokog prioriteta""Način TTY FULL koji zahtijeva paralelni uređaj""Način TTY HCO koji zahtijeva paralelni uređaj""Način TTY VCO koji zahtijeva paralelni uređaj"
@@ -553,11 +554,11 @@
"Ikona otiska prsta"
- "upravljati hardverom za autentifikaciju lica"
+ "Upravljajte hardverom za otključavanje licem""Aplikaciji omogućuje pozivanje načina za dodavanje i brisanje predložaka lica za upotrebu."
- "upotrebljavati hardver za autentifikaciju lica"
- "Aplikaciji omogućuje upotrebu hardvera za autentifikaciju lica radi autentifikacije"
- "Autentifikacija licem"
+ "Koristiti hardver za otključavanje licem"
+ "Aplikaciji omogućuje upotrebu hardvera za otključavanje licem radi autentifikacije"
+ "Otključavanje licem""Ponovo registrirajte svoje lice""Za poboljšanje prepoznavanja ponovo registrirajte svoje lice""Podaci o licu nisu točni. Pokušajte ponovo."
@@ -570,7 +571,7 @@
"Pomaknite telefon ulijevo.""Pomaknite telefon udesno.""Gledajte izravnije prema uređaju."
- "Vaše se lice ne vidi. Pogledajte telefon."
+ "Postavite lice izravno ispred telefona.""Previše kretanja. Držite telefon mirno.""Ponovo registrirajte svoje lice.""Lice nije prepoznato. Pokušajte ponovo."
@@ -579,19 +580,19 @@
"Nagnite glavu malo manje.""Nagnite glavu malo manje.""Uklonite sve što vam zakriva lice."
- "Očistite senzor na gornjem rubu zaslona."
+ "Očistite vrh zaslona, uključujući crnu traku""Lice nije potvrđeno. Hardver nije dostupan."
- "Pokušajte ponovo autentificirati lice."
+ "Ponovo pokušajte otključavanje licem.""Podaci o novom licu nisu pohranjeni. Izbrišite neko staro."
- "Otkazana je radnja s licem"
- "Autentifikaciju lica otkazao je korisnik"
+ "Otkazana je radnja s licem."
+ "Otključavanje licem otkazao je korisnik.""Previše pokušaja. Pokušajte ponovo kasnije."
- "Previše pokušaja. Autentifikacija lica onemogućena."
+ "Previše pokušaja. Onemogućeno otključavanje licem""Lice nije potvrđeno. Pokušajte ponovo."
- "Niste postavili autentifikaciju lica"
- "Autentifikacija lica nije podržana na ovom uređaju"
+ "Niste postavili otključavanje licem"
+ "Otključavanje licem nije podržano na ovom uređaju.""Lice %d"
@@ -1276,10 +1277,10 @@
"Dodirnite za prikaz svih mreža""Poveži""Sve mreže"
- "Želite li se povezati s Wi-Fi mrežama?"
- "Preporuka aplikacije %s"
- "Da"
- "Ne"
+ "Želite li dopustiti predložene Wi‑Fi mreže?"
+ "Mreže koje predlaže aplikacija %s. Uređaji se mogu povezati automatski."
+ "Dopusti"
+ "Ne, hvala""Wi‑Fi će se uključiti automatski""Kada ste u blizini spremljene mreže visoke kvalitete""Više ne uključuj"
@@ -1693,7 +1694,7 @@
"Prečac pristupačnosti isključio je uslugu %1$s""Pritisnite i zadržite tipke za glasnoću na tri sekunde da biste koristili uslugu %1$s""Odaberite uslugu koju ćete upotrebljavati kad dodirnete gumb pristupačnosti:"
- "Odaberite uslugu koju ćete upotrebljavati uz pokret pristupačnosti (prelazak s dva prsta prema gore od dna zaslona):"
+ "Odaberite za što će se upotrebljavati pokret pristupačnosti (prelazak s dva prsta prema gore od dna zaslona):""Odaberite uslugu koju ćete upotrebljavati uz pokret pristupačnosti (prelazak s tri prsta prema gore od dna zaslona):""Da biste prešli na neku drugu uslugu, dodirnite i zadržite gumb pristupačnosti.""Da biste prešli na neku drugu uslugu, prijeđite s dva prsta prema gore i zadržite."
@@ -1921,8 +1922,8 @@
"Nema kategorije""Postavili ste važnost tih obavijesti.""Važno je zbog uključenih osoba."
- "Želite li dopustiti aplikaciji %1$s da izradi novog korisnika s računom %2$s?"
- "Želite li dopustiti aplikaciji %1$s da izradi novog korisnika s računom %2$s (korisnik s tim računom već postoji)?"
+ "Dopustiti aplikaciji %1$s da izradi novog korisnika s računom %2$s (korisnik s ovim računom već postoji)?"
+ "Dopustiti aplikaciji %1$s da izradi novog korisnika s računom %2$s?""Dodavanje jezika""Postavke regije""Unesite naziv jezika"
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 0ece955adbf23ad428d404ed40f47f55129c90bc..351b5b8d37b0e72b7f99470f0a58367c29faf796 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -95,6 +95,7 @@
"Hangpostaüzenetek""Wi-Fi-hívás""SIM-kártya állapota"
+ "Elsődleges SIM-kártya állapota""Partner által kért TTY-mód: FULL""Partner által kért TTY-mód: HCO""Partner által kért TTY-mód: VCO"
@@ -550,11 +551,11 @@
"Ujjlenyomat ikon"
- "arcfelismerő hardver kezelése"
+ "arcalapú feloldásra szolgáló hardver kezelése""Engedélyezi, hogy az alkalmazás arcsablon-hozzáadási és -törlési metódusokat hívjon."
- "arcfelismerő hardver használata"
- "Engedélyezi, hogy az alkalmazás hitelesítésre használja az arcfelismerő hardvert"
- "Arcfelismerés"
+ "arcalapú feloldásra szolgáló hardver használata"
+ "Engedélyezi, hogy az alkalmazás hitelesítésre használja az arcalapú feloldás hardverét"
+ "Arcalapú feloldás""Rögzítsen újra képet az arcáról""A felismerés javítása érdekében rögzítsen újra az arcáról készített képet""Sikertelen az arc pontos rögzítése. Próbálja újra."
@@ -567,7 +568,7 @@
"Mozgassa a telefont balra.""Mozgassa a telefont jobbra.""Szemből nézzen az eszközre."
- "Nem látszik az arca. Nézzen a telefonra."
+ "A telefont közvetlenül az arca elé tegye.""Túl sok a mozgás. Tartsa stabilan a telefont.""Rögzítsen újra képet az arcáról.""Már nem lehet felismerni az arcát. Próbálja újra."
@@ -576,19 +577,19 @@
"Kicsit kevésbé fordítsa el a fejét.""Kicsit kevésbé fordítsa el a fejét.""Távolítson el mindent, ami takarja az arcát."
- "Tisztítsa meg a képernyő tetején lévő érzékelőt."
+ "Tisztítsa meg a képernyő tetejét, a fekete sávot is beleértve.""Sikertelen arcellenőrzés. A hardver nem érhető el."
- "Próbálja újra az arcfelismerést."
+ "Próbálja újra az arcalapú feloldást.""Nem tárolhatók újabb arcadatok. Törölje valamelyik arcot."
- "Az arccal kapcsolatos művelet megszakítva"
- "Az arc hitelesítését megszakította a felhasználó"
+ "Az arccal kapcsolatos művelet törölve."
+ "Az arcalapú feloldást megszakította a felhasználó.""Túl sok próbálkozás. Próbálja újra később."
- "Túl sokszor próbálkozott. Arcfelismerés letiltva."
+ "Túl sok próbálkozás. Az arcalapú feloldás letiltva.""Nem sikerült ellenőrizni az arcát. Próbálja újra."
- "Nem állította be az arcfelismerést"
- "Az eszköz nem támogatja az arcfelismerést"
+ "Nem állította be az arcalapú feloldást."
+ "Az eszköz nem támogatja az arcalapú feloldást""%d arc"
@@ -1254,10 +1255,10 @@
"Koppintással megjelenítheti az összes hálózatot""Kapcsolódás""Összes hálózat"
- "Kapcsolódik a Wi-Fi-hálózathoz?"
- "%s javasolta"
- "Igen"
- "Nem"
+ "Engedélyezi a javasolt Wi-Fi-hálózatokat?"
+ "A(z) %s hálózatokat javasolt. Az eszköz automatikusan csatlakozhat hozzájuk."
+ "Engedélyezés"
+ "Nem, köszönöm""A Wi-Fi automatikusan bekapcsol""Amikor jó minőségű mentett hálózat közelében tartózkodik""Ne kapcsolódjon vissza"
@@ -1353,7 +1354,7 @@
"Folyamatban van a csatlakoztatott eszköz töltése. Koppintson a további lehetőségekhez.""Analóg audiotartozék észlelve""A csatlakoztatott eszköz nem kompatibilis ezzel a telefonnal. További információért koppintson ide."
- "USB hibakereső csatlakoztatva"
+ "USB-hibakereső csatlakoztatva""Koppintson az USB-hibakeresés kikapcsolásához""Válassza ezt az USB hibakeresés kikapcsolásához.""Tesztelési alapkörnyezet mód engedélyezve"
@@ -1887,8 +1888,8 @@
"Nincs kategóriába sorolva""Ön állította be ezen értesítések fontossági szintjét.""Ez az üzenet a résztvevők miatt fontos."
- "Engedélyezi a(z) %1$s számára, hogy új felhasználót hozzon létre a(z) %2$s fiókkal?"
- "Engedélyezi a(z) %1$s számára, hogy új felhasználót hozzon létre a(z) %2$s fiókkal? (Már létezik felhasználó ezzel a fiókkal.)"
+ "Engedélyezi a(z) %1$s számára, hogy új felhasználót hozzon létre a(z) %2$s fiókkal? (Már létezik felhasználó ezzel a fiókkal.)"
+ "Engedélyezi a(z) %1$s számára, hogy új felhasználót hozzon létre a(z) %2$s fiókkal?""Nyelv hozzáadása""Régió beállítása""Adja meg a nyelvet"
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index a7a91635d3b14e12794c6c0e71ed13de52d2a591..21c6aa9d5659dd83f732352261be96fdfd9ee454 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -95,6 +95,7 @@
"Ձայնային փոստի հաղորդագրություններ""Զանգեր Wi-Fi-ի միջոցով""SIM քարտի կարգավիճակը"
+ "SIM քարտի բարձր առաջնահերթության ծանուցումներ""Բաժանորդի սարքում ընտրված է հեռատիպի ԲՈԼՈՐԸ ռեժիմը""Բաժանորդի սարքում ընտրված է հեռատիպի HCO ռեժիմը""Բաժանորդի սարքում ընտրված է հեռատիպի VCO ռեժիմը"
@@ -550,11 +551,11 @@
"Մատնահետքի պատկերակ"
- "կառավարել դեմքի ճանաչման սարքը"
+ "կառավարել դեմքով ապակողպման համար սարքը""Հավելվածին թույլ է տալիս ավելացնել և հեռացնել դեմքի նմուշներ:"
- "օգտագործել դեմքի ճանաչման սարքը"
- "Հավելվածին թույլ է տալիս օգտագործել նույնականացման համար նախատեսված սարքը"
- "Նույնականացում դեմքի միջոցով"
+ "օգտագործել դեմքով ապակողպման համար սարքը"
+ "Թույլ է տալիս հավելվածին օգտագործել դեմքով ապակողպման համար նախատեսված սարքը"
+ "Դեմքով ապակողպում""Նորից գրանցեք ձեր դեմքը""Ճանաչումը լավացնելու համար նորից գրանցեք ձեր դեմքը""Չհաջողվեց գրանցել դեմքի ճշգրիտ տվյալները։ Կրկնեք։"
@@ -567,7 +568,7 @@
"Տեղափոխեք հեռախոսը ձախ:""Տեղափոխեք հեռախոսը աջ:""Նայեք ուղիղ էկրանին։"
- "Ձեր դեմքը չի երևում։ Նայեք հեռախոսին։"
+ "Պահեք ձեր դեմքն անմիջապես հեռախոսի էկրանի դիմաց:""Շատ եք շարժում։ Հեռախոսն անշարժ պահեք։""Նորից փորձեք։""Չհաջողվեց ճանաչել դեմքը։ Նորից փորձեք:"
@@ -576,19 +577,19 @@
"Գլուխն ուղիղ պահեք։""Գլուխն ուղիղ պահեք։""Հեռացրեք այն ամենը, ինչը թաքցնում է ձեր երեսը:"
- "Մաքրեք էկրանի վերևի անկյունում գտնվող տվիչը:"
+ "Մաքրեք էկրանի վերևի մասը, ներառյալ սև գոտին""Չհաջողվեց հաստատել դեմքը։ Սարքն անհասանելի է:"
- "Նորից փորձեք դեմքի ճանաչումը։"
+ "Նորից փորձեք դեմքով ապակողպումը։""Չհաջողվեց պահել նոր դեմքը։ Ջնջեք հին տարբերակը։"
- "Դեմքի ճանաչումը չեղարկվել է"
- "Դեմքի ճանաչումը չեղարկվել է օգտատիրոջ կողմից"
+ "Դեմքի ճանաչումը չեղարկվել է։"
+ "Դեմքով ապակողմումը չեղարկվել է օգտատիրոջ կողմից:""Չափից շատ փորձեր եք կատարել: Փորձեք ավելի ուշ:"
- "Չափազանց շատ փորձեր են արվել։ Դեմքի ճանաչումն անջատված է։"
+ "Չափազանց շատ փորձեր են արվել։ Դեմքով ապակողպումն անջատված է:""Չհաջողվեց հաստատել դեմքը։ Նորից փորձեք։"
- "Դուք չեք կարգավորել դեմքի ճանաչումը"
- "Դեմքի ճանաչումն այս սարքում չի աջակցվում"
+ "Դուք չեք կարգավորել դեմքով ապակողպումը:"
+ "Դեմքով ապակողպումն այս սարքում չի աջակցվում""Դեմք %d"
@@ -1254,10 +1255,10 @@
"Հպեք՝ բոլոր ցանցերը տեսնելու համար""Միանալ""Բոլոր ցանցերը"
- "Միանա՞լ Wi-Fi ցանցերին"
- "Առաջարկվել է %s-ի կողմից"
- "Այո"
- "Ոչ"
+ "Թույլատրե՞լ առաջարկվող Wi‑Fi ցանցերի օգտագործումը"
+ "%s հավելվածի առաջարկվող ցանցեր: Սարքը կարող է ավտոմատ միանալ:"
+ "Թույլատրել"
+ "Ոչ, շնորհակալություն""Wi‑Fi-ն ավտոմատ կմիանա""Լավ ազդանշանով պահված ցանցի տարածքում գտնվելիս""Նորից չմիացնել"
@@ -1353,9 +1354,9 @@
"Միացված սարքի լիցքավորում: Հպեք՝ ավելի շատ ընտրանքների համար:""Հայտնաբերված է անալոգային աուդիո լրասարք""Կցված սարքը համատեղելի չէ այս հեռախոսի հետ: Հպեք` ավելին իմանալու համար:"
- "USB վրիպազերծումը միացված է"
- "Հպեք՝ USB-ի վրիպազերծումն անջատելու համար"
- "Ընտրել` USB կարգաբերումը կասեցնելու համար:"
+ "USB-ով վրիպազերծումը միացված է"
+ "Հպեք՝ USB-ով վրիպազերծումն անջատելու համար"
+ "Սեղմեք՝ USB-ով վրիպազերծումն անջատելու համար:""Թեստային ռեժիմը միացված է""Թեստային ռեժիմն անջատելու համար զրոյացրեք կարգավորումները։""USB միացքում ջուր կամ աղտ է հայտնաբերվել"
@@ -1613,7 +1614,7 @@
"Ներկառուցված էկրան""HDMI էկրան""Վերածածկ #%1$d"
- "%1$s. %2$dx%3$d, %4$d կմվ"
+ "%1$s. %2$dx%3$d, %4$d կմչ"", անվտանգ""Մոռացել եմ սխեման""Սխալ սխեմա"
@@ -1887,8 +1888,8 @@
"Չդասակարգված""Դուք սահմանել եք այս ծանուցումների կարևորությունը:""Կարևոր է, քանի որ որոշակի մարդիկ են ներգրավված:"
- "Թույլատրե՞լ %1$s հավելվածին %2$s հաշվով նոր Օգտատեր ստեղծել:"
- "Թույլատրե՞լ %1$s հավելվածին %2$s հաշվով նոր Օգտատեր ստեղծել (նման հաշվով Օգտատեր արդեն գոյություն ունի):"
+ "Թույլատրե՞լ %1$s հավելվածին %2$s հաշվով նոր Օգտատեր ստեղծել (նման հաշվով Օգտատեր արդեն գոյություն ունի):"
+ "Թույլատրե՞լ %1$s հավելվածին %2$s հաշվով նոր Օգտատեր ստեղծել:""Ավելացնել լեզու""Նախընտրելի տարածաշրջան""Մուտքագրեք լեզուն"
@@ -1927,7 +1928,7 @@
"Քարտեզներ և նավարկում""Արդյունավետություն""Սարքի հիշողություն"
- "USB վրիպազերծում"
+ "USB-ով վրիպազերծում""ժամ""րոպե""Ժամը"
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 05f70c0b19698e9366c3438abd555a1841532bf5..afdce0e0141ad99997e86971e9b589ca4faa3bbb 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -95,6 +95,7 @@
"Notifikasi pesan suara""Panggilan Wi-Fi""Status SIM"
+ "Status SIM prioritas tinggi""Rekan meminta Mode TTY PENUH""Rekan meminta Mode TTY HCO""Rekan meminta Mode TTY VCO"
@@ -550,11 +551,11 @@
"Ikon sidik jari"
- "kelola hardware autentikasi wajah"
+ "kelola hardware face unlock""Mengizinkan apl memicu metode untuk menambah & menghapus template wajah untuk digunakan."
- "gunakan hardware autentikasi wajah"
- "Mengizinkan aplikasi untuk menggunakan hardware autentikasi wajah untuk autentikasi"
- "Autentikasi Wajah"
+ "gunakan hardware face unlock"
+ "Mengizinkan aplikasi untuk menggunakan hardware face unlock untuk autentikasi"
+ "Face unlock""Daftarkan kembali wajah Anda""Untuk menyempurnakan pengenalan wajah, daftarkan kembali wajah Anda""Tidak bisa mengambil data wajah akurat. Coba lagi."
@@ -567,7 +568,7 @@
"Gerakkan ponsel ke kiri.""Gerakkan ponsel ke kanan.""Lihat langsung ke perangkat."
- "Tidak dapat melihat wajah Anda. Lihat ke ponsel."
+ "Posisikan wajah Anda langsung di depan ponsel.""Terlalu banyak gerakan. Stabilkan ponsel.""Daftarkan ulang wajah Anda.""Tidak lagi dapat mengenali wajah. Coba lagi."
@@ -576,19 +577,19 @@
"Putar sedikit kepala Anda.""Putar sedikit kepala Anda.""Singkirkan apa saja yang menutupi wajah Anda."
- "Bersihkan sensor di tepi atas layar."
+ "Bersihkan bagian atas layar, termasuk kotak hitam""Tidak dapat memverifikasi wajah. Hardware tidak tersedia."
- "Coba autentikasi wajah lagi."
+ "Coba face unlock lagi.""Tidak dapat menyimpan data wajah. Hapus dahulu data lama."
- "Pemrosesan wajah dibatalkan"
- "Autentikasi wajah dibatalkan oleh pengguna"
+ "Pemrosesan wajah dibatalkan."
+ "Face unlock dibatalkan oleh pengguna.""Terlalu banyak percobaan. Coba lagi nanti."
- "Terlalu banyak percobaan. Autentikasi wajah dinonaktifkan."
+ "Terlalu banyak gagal. Face unlock dinonaktifkan.""Tidak dapat memverifikasi wajah. Coba lagi."
- "Anda belum menyiapkan autentikasi wajah"
- "Autentikasi wajah tidak didukung di perangkat ini"
+ "Anda belum menyiapkan face unlock."
+ "Face unlock tidak didukung di perangkat ini.""%d wajah"
@@ -1254,10 +1255,10 @@
"Ketuk untuk melihat semua jaringan""Hubungkan""Semua jaringan"
- "Sambungkan perangkat ke jaringan Wi-Fi?"
- "Disarankan oleh %s"
- "Ya"
- "Tidak"
+ "Izinkan jaringan Wi-Fi yang disarankan?"
+ "Jaringan yang disarankan %s. Perangkat dapat terhubung secara otomatis."
+ "Izinkan"
+ "Lain kali""Wi‑Fi akan aktif otomatis""Saat berada di dekat jaringan berkualitas tinggi yang tersimpan""Jangan aktifkan kembali"
@@ -1887,8 +1888,8 @@
"Belum dikategorikan""Anda menyetel nilai penting notifikasi ini.""Ini penting karena orang-orang yang terlibat."
- "Izinkan %1$s membuat Pengguna baru dengan %2$s ?"
- "Izinkan %1$s membuat Pengguna baru dengan %2$s (Pengguna dengan akun ini sudah ada) ?"
+ "Izinkan %1$s membuat Pengguna baru dengan %2$s (Pengguna dengan akun ini sudah ada) ?"
+ "Izinkan %1$s membuat Pengguna baru dengan %2$s ?""Tambahkan bahasa""Preferensi wilayah""Ketik nama bahasa"
@@ -1976,7 +1977,7 @@
"Jendela Pop-up""+ %1$d""Versi aplikasi di-downgrade, atau tidak kompatibel dengan pintasan ini"
- "Tidak dapat memulihkan pintasan karena aplikasi tidak mendukung backup dan pulihkan"
+ "Tidak dapat memulihkan pintasan karena aplikasi tidak mendukung pencadangan dan pemulihan""Tidak dapat memulihkan pintasan karena tanda tangan aplikasi tidak cocok""Tidak dapat memulihkan pintasan.""Pintasan dinonaktifkan"
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index 956c052e427d9a23df5f3219c7fe9d09b55c0744..299f26c1f92891b2dcd87b58c35c9bba87ab4043 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -95,6 +95,7 @@
"Talhólfsskilaboð""Wi-Fi símtöl""Staða SIM-korts"
+ "Áríðandi staða SIM-korts""Jafningi bað um FULLA stillingu fjarrita""Jafningi bað um HCO-stillingu fjarrita""Jafningi bað um VCO-stillingu fjarrita"
@@ -550,11 +551,11 @@
"Fingrafaratákn"
- "stjórna vélbúnaði andlitsgreiningar"
+ "stjórna vélbúnaði andlitsopnunar""Leyfir forritinu að beita aðferðum til að bæta við og eyða andlitssniðmátum til notkunar."
- "nota vélbúnað andlitsgreiningar"
- "Leyfir forritinu að nota andlitsgreiningarvélbúnað til auðkenningar"
- "Andlitsgreining"
+ "nota vélbúnað andlitsopnunar"
+ "Leyfir forritinu að nota andlitsopnunarvélbúnað til auðkenningar"
+ "Andlitsopnun""Skráðu andlitið þitt aftur""Skráðu andlitið þitt til að bæta kennsl""Nákvæm andlitsgögn fengust ekki. Reyndu aftur."
@@ -567,7 +568,7 @@
"Færðu símann til vinstri.""Færðu símann til hægri.""Horfðu beint á tækið."
- "Sé ekki andlit þitt. Horfðu á símann."
+ "Hafðu andlitið beint fyrir framan símann.""Of mikil hreyfing. Haltu símanum stöðugum.""Skráðu nafnið þitt aftur.""Andlit þekkist ekki lengur. Reyndu aftur."
@@ -576,19 +577,19 @@
"Hallaðu höfðinu aðeins minna.""Snúðu höfðinu aðeins minna.""Fjarlægðu það sem kann að hylja andlitið."
- "Hreinsaðu skynjarann á efri brún skjásins."
+ "Hreinsaðu efsta hluta skjásins þíns, þ.m.t. svörtu stikuna""Andlit ekki staðfest. Vélbúnaður er ekki tiltækur."
- "Prófaðu andlitsgreiningu aftur."
+ "Prófaðu andlitsopnun aftur.""Ekki er hægt að vista ný andlitsgögn. Eyddu gömlu fyrst."
- "Hætt við andlitsgreiningu"
- "Notandi hætti við andlitsgreiningu"
+ "Hætt við andlitsgreiningu."
+ "Notandi hætti við andlitsopnun.""Of margar tilraunir. Reyndu aftur síðar."
- "Of margar tilraunir. Slökkt á andlitsgreiningu."
+ "Of margar tilraunir. Slökkt á andlitsopnun.""Ekki tókst að staðfesta andlit. Reyndu aftur."
- "Þú hefur ekki sett upp andlitsgreiningu"
- "Andlitsgreining er ekki studd í þessu tæki."
+ "Þú hefur ekki sett upp andlitsopnun."
+ "Andlitsopnun er ekki studd í þessu tæki.""Andlit %d"
@@ -1254,10 +1255,10 @@
"Ýttu til að sjá öll netkerfi""Tengjast""Öll netkerfi"
- "Tengjast Wi-Fi neti?"
- "Tillaga frá %s"
- "Já"
- "Nei"
+ "Leyfa ráðlögð Wi‑Fi net?"
+ "%s kom með tillögur að netkerfum. Tækið gæti tengst sjálfkrafa."
+ "Leyfa"
+ "Nei, takk""Kveikt verður sjálfkrafa á Wi‑Fi""Þegar þú ert nálægt vistuðu hágæðaneti""Ekki kveikja aftur"
@@ -1888,8 +1889,8 @@
"Óflokkað""Þú stilltir mikilvægi þessara tilkynninga.""Þetta er mikilvægt vegna fólksins sem tekur þátt í þessu."
- "Leyfa %1$s að stofna nýjan notanda með %2$s?"
- "Leyfa %1$s að stofna nýjan notanda með %2$s (notandi með þennan reikning er þegar fyrir hendi)?"
+ "Viltu leyfa %1$s að stofna nýjan notanda með %2$s (notandi með þennan reikning er þegar fyrir hendi)?"
+ "Leyfa %1$s að stofna nýjan notanda með %2$s ?""Bæta við tungumáli""Svæðisval""Sláðu inn heiti tungumáls"
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 748248ee026430660bbd37e5b4eb642f4b3f0469..1ca3237ba7a6643c44b6980e20af5ef89daa4df9 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -95,6 +95,7 @@
"Messaggi vocali""Chiamate Wi-Fi""Stato SIM"
+ "Stato SIM con priorità elevata""Peer ha richiesto la modalità TTY FULL""Peer ha richiesto la modalità TTY HCO""Peer ha richiesto la modalità TTY VCO"
@@ -550,11 +551,11 @@
"Icona dell\'impronta digitale"
- "gestione di hardware per l\'autenticazione dei volti"
+ "gestione dell\'hardware per Sblocco col sorriso""Consente all\'app di richiamare i metodi per aggiungere e rimuovere i modelli di volti."
- "utilizzo di hardware per l\'autenticazione dei volti"
- "Consente all\'app di utilizzare hardware per l\'autenticazione dei volti"
- "Autenticazione volti"
+ "utilizzo dell\'hardware per Sblocco col sorriso"
+ "Consente all\'app di utilizzare hardware per l\'autenticazione con Sblocco col sorriso"
+ "Sblocco col sorriso""Registra di nuovo il volto""Per migliorare il riconoscimento, registra di nuovo il tuo volto""Impossibile acquisire dati viso accurati. Riprova."
@@ -567,7 +568,7 @@
"Sposta il telefono verso sinistra.""Sposta il telefono verso destra.""Guarda più direttamente verso il dispositivo."
- "Impossibile vedere il volto. Guarda il telefono."
+ "Posiziona il viso davanti al telefono.""Troppo movimento. Tieni fermo il telefono.""Ripeti l\'acquisizione del volto.""Non è più possibile riconoscere il volto. Riprova."
@@ -576,19 +577,19 @@
"Gira un po\' meno la testa.""Gira un po\' meno la testa.""Rimuovi tutto ciò che ti nasconde il viso."
- "Pulisci sensore sul bordo superiore dello schermo."
+ "Pulisci la parte superiore dello schermo, inclusa la barra nera""Imposs. verificare volto. Hardware non disponibile."
- "Riprova l\'autenticazione volti."
+ "Riprova Sblocco col sorriso.""Imposs. salvare dati nuovi volti. Elimina un volto vecchio."
- "Operazione associata al volto annullata"
- "Autenticazione volti annullata dall\'utente"
+ "Operazione associata al volto annullata."
+ "Sblocco col sorriso annullato dall\'utente.""Troppi tentativi. Riprova più tardi."
- "Troppi tentativi. Autenticazione volti disattivata."
+ "Troppi tentativi. Sblocco col sorriso disattivato""Impossibile verificare il volto. Riprova."
- "Non hai configurato l\'autenticazione volti"
- "Autenticazione volti non supportata su questo dispositivo"
+ "Non hai configurato Sblocco col sorriso."
+ "Sblocco col sorriso non supportato su questo dispositivo.""Volto %d"
@@ -1254,10 +1255,10 @@
"Tocca per vedere tutte le reti""Connetti""Tutte le reti"
- "Connettersi a reti Wi-Fi?"
- "Consigliato da %s"
- "Sì"
- "No"
+ "Vuoi consentire le reti Wi-Fi suggerite?"
+ "%s ha suggerito delle reti. Il dispositivo potrebbe collegarsi automaticamente."
+ "Consenti"
+ "No, grazie""Il Wi‑Fi verrà attivato automaticamente""Quando ti trovi nell\'area di una rete salvata di alta qualità""Non riattivare"
@@ -1887,8 +1888,8 @@
"Senza categoria""Stabilisci tu l\'importanza di queste notifiche.""Importante a causa delle persone coinvolte."
- "Consentire a %1$s di creare un nuovo utente con %2$s?"
- "Consentire a %1$s di creare un nuovo utente con %2$s? (Esiste già un utente con questo account)"
+ "Consentire a %1$s di creare un nuovo utente con l\'account %2$s (esiste già un utente con questo account)?"
+ "Consentire a %1$s di creare un nuovo utente con l\'account %2$s?""Aggiungi una lingua""Area geografica preferita""Digita nome lingua"
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 8afd95a48357696540055bce0475e0ba0b49e44f..c8c4f7236918ae06a18f7217c50886ff9eb32ca8 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -97,11 +97,12 @@
"הודעות קוליות""שיחות Wi-Fi""סטטוס SIM"
+ "סטטוס התראות SIM בעדיפות גבוהה""העמית ביקש TTY במצב FULL""העמית ביקש TTY במצב HCO""העמית ביקש TTY במצב VCO""העמית ביקש TTY במצב OFF"
- "Google Voice"
+ "קול""Google Data""פקס""SMS"
@@ -556,11 +557,11 @@
"סמל טביעת אצבע"
- "ניהול של חומרה של זיהוי פנים לצורך אימות"
+ "ניהול החומרה לשחרור נעילה על ידי זיהוי פנים""מאפשרת לאפליקציה להפעיל שיטות להוספה ומחיקה של תבניות פנים שבהן ייעשה שימוש."
- "שימוש בחומרה של זיהוי פנים לצורך אימות"
- "מאפשרת לאפליקציה להשתמש בחומרה של זיהוי פנים לצורך אימות"
- "אימות פנים"
+ "שימוש בחומרה לשחרור נעילה על ידי זיהוי פנים"
+ "מאפשרת לאפליקציה להשתמש בחומרה לשחרור נעילה על ידי זיהוי פנים לצורך אימות"
+ "שחרור נעילה על ידי זיהוי פנים""יש לבצע רישום מחדש של הפנים שלך""לשיפור הזיהוי יש לבצע רישום מחדש של הפנים שלך""לא ניתן היה לקלוט את הפנים במדויק. יש לנסות שוב."
@@ -573,7 +574,7 @@
"צריך להזיז את הטלפון שמאלה.""צריך להזיז את הטלפון ימינה.""יש להביט ישירות אל המכשיר."
- "אי אפשר לראות את הפנים שלך. צריך להביט אל הטלפון."
+ "עליך למקם את הפנים ישירות מול הטלפון.""יותר מדי תנועה. יש להחזיק את הטלפון בצורה יציבה.""יש לרשום מחדש את הפנים.""כבר לא ניתן לזהות פנים. יש לנסות שוב."
@@ -582,19 +583,19 @@
"עליך ליישר קצת את הראש.""עליך ליישר קצת את הראש.""יש להסיר כל דבר שמסתיר את הפנים."
- "יש לנקות את החיישן שבקצה העליון של המסך."
+ "עליך לנקות את החלק העליון של המסך, כולל הסרגל השחור""לא ניתן לאמת את הפנים. החומרה לא זמינה."
- "יש לנסות שוב את זיהוי הפנים לצורך אימות."
+ "יש לנסות שוב את שחרור הנעילה על ידי זיהוי פנים.""לא ניתן לאחסן נתוני פנים. תחילה יש למחוק פנים ישנים."
- "פעולת הפנים בוטלה"
- "זיהוי הפנים בוטל על ידי המשתמש"
+ "פעולת הפנים בוטלה."
+ "שחרור הנעילה על ידי זיהוי פנים בוטל על ידי המשתמש.""יותר מדי ניסיונות. יש לנסות שוב מאוחר יותר."
- "יותר מדי ניסיונות. אימות פנים הושבת."
+ "יותר מדי ניסיונות. שחרור נעילה על ידי זיהוי פנים מושבת.""לא ניתן לאמת את הפנים. יש לנסות שוב."
- "לא הגדרת אימות פנים"
- "המכשיר הזה לא תומך באימות פנים"
+ "לא הגדרת שחרור נעילה על ידי זיהוי פנים."
+ "המכשיר הזה לא תומך בשחרור נעילה על ידי זיהוי פנים.""פנים %d"
@@ -1298,10 +1299,10 @@
"יש להקיש כדי לראות את כל הרשתות""התחבר""כל הרשתות"
- "להתחבר לרשתות Wi‑Fi?"
- "הוצע על-ידי %s"
- "כן"
- "לא"
+ "לאפשר הצעות לרשתות Wi-Fi?"
+ "הצעות לרשתות %s. ייתכן שחיבור המכשיר ייעשה באופן אוטומטי."
+ "אישור"
+ "לא תודה""ה-Wi-Fi יופעל אוטומטית""כשתימצאו בקרבת רשת באיכות גבוהה ששמרתם""אל תפעיל שוב"
@@ -1955,8 +1956,8 @@
"ללא שיוך לקטגוריה""עליך להגדיר את החשיבות של ההתראות האלה.""ההודעה חשובה בשל האנשים המעורבים."
- "האם לאפשר ל-%1$s ליצור משתמש חדש לחשבון %2$s ?"
- "האם לאפשר ל-%1$s ליצור משתמש חדש לחשבון %2$s (כבר קיים משתמש לחשבון הזה) ?"
+ "האם לאפשר לאפליקציה %1$s ליצור משתמש חדש באמצעות %2$s (כבר קיים משתמש לחשבון הזה) ?"
+ "האם לאפשר לאפליקציה %1$s ליצור משתמש חדש באמצעות %2$s ?""הוספת שפה""העדפת אזור""הקלד שם שפה"
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index af6f3c666c9b45fd43c626178daeff5eee7d2c62..c7b3b9e1385ce4675d9ed46724159fc2366bb8cc 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -95,6 +95,7 @@
"ボイスメール メッセージ""Wi-Fi 通話""SIM のステータス"
+ "高優先度: SIM のステータス""ピアから、TTY モードを FULL にするようリクエストされました""ピアから、TTYモードをHCOにするようリクエストされました""ピアから、TTYモードをVCOにするようリクエストされました"
@@ -297,9 +298,9 @@
"マイク""音声の録音""音声の録音を「<b>%1$s</b>」に許可しますか?"
- "運動データ"
- "運動データにアクセス"
- "運動データへのアクセスを「<b>%1$s</b>」に許可しますか?"
+ "身体活動"
+ "身体活動にアクセス"
+ "身体活動へのアクセスを「<b>%1$s</b>」に許可しますか?""カメラ""写真と動画の撮影""写真と動画の撮影を「<b>%1$s</b>」に許可しますか?"
@@ -428,8 +429,8 @@
"このアプリは、いつでもマイクを使用して録音できます。""SIMへのコマンド送信""SIMにコマンドを送信することをアプリに許可します。この許可は非常に危険です。"
- "運動の認識"
- "このアプリで運動が認識されるようにします。"
+ "身体活動の認識"
+ "このアプリで身体活動が認識されるようにします。""写真と動画の撮影""このアプリは、いつでもカメラを使用して写真や動画を撮影できます。""バイブレーションの制御"
@@ -550,11 +551,11 @@
"指紋アイコン"
- "顔認証ハードウェアの管理"
+ "顔認証ハードウェアの管理""使用する顔テンプレートの追加や削除を行うメソッドの呼び出しをアプリに許可します。"
- "顔認証ハードウェアの使用"
- "顔認証ハードウェアを認証に使用することをアプリに許可します"
- "顔認証"
+ "顔認証ハードウェアの使用"
+ "顔認証ハードウェアを認証に使用することをアプリに許可します"
+ "顔認証""顔の再登録""認識を改善するには、顔を再登録してください""顔を認識できませんでした。もう一度お試しください。"
@@ -567,7 +568,7 @@
"スマートフォンを左に動かしてください。""スマートフォンを右に動かしてください。""もっとまっすぐデバイスに顔を向けてください。"
- "顔を確認できません。スマートフォンを見てください。"
+ "顔をスマートフォンの真正面に向けてください。""あまり動かさないでください。安定させてください。""顔を登録し直してください。""顔を認識できなくなりました。もう一度お試しください。"
@@ -576,19 +577,19 @@
"顔の向きを少し戻してください。""顔の向きを少し戻してください。""顔を隠しているものをすべて外してください"
- "画面の上端にあるセンサーの汚れを落としてください。"
+ "黒いバーを含め、画面の上部をきれいにしてください""顔を確認できません。ハードウェアを利用できません。"
- "顔認証をもう一度お試しください。"
+ "顔認証をもう一度お試しください。""新しい顔データを保存できません。古いデータを削除してください。"
- "顔の操作をキャンセルしました"
- "顔の認証がユーザーによりキャンセルされました"
+ "顔の操作をキャンセルしました。"
+ "顔認証はユーザーによりキャンセルされました。""試行回数の上限です。後でもう一度お試しください。"
- "入力回数が上限を超えました。顔認証が無効になりました。"
+ "試行回数が上限を超えたため、顔認証を無効にしました。""顔を確認できません。もう一度お試しください。"
- "顔認証を設定していません"
- "顔認証はこのデバイスではご利用いただけません"
+ "顔認証を設定していません。"
+ "このデバイスでは、顔認証はご利用いただけません。""顔 %d"
@@ -817,7 +818,7 @@
"もう一度お試しください""もう一度お試しください""すべての機能とデータを利用するにはロック解除"
- "フェイスアンロックの最大試行回数を超えました"
+ "顔認証の最大試行回数を超えました""SIMカードが挿入されていません""タブレット内にSIMカードがありません。""テレビにSIMカードが挿入されていません。"
@@ -887,7 +888,7 @@
"ロック解除エリアを拡大します。""スライドロックを解除します。""パターンロックを解除します。"
- "フェイスアンロックを行います。"
+ "顔認証を行います。""PINロックを解除します。""SIM PIN のロックを解除します。""SIM PUK のロックを解除します。"
@@ -1254,10 +1255,10 @@
"すべてのネットワークを表示するにはタップします""接続""すべてのネットワーク"
- "Wi-Fi ネットワークに接続しますか?"
- "%s によるおすすめ"
- "はい"
- "いいえ"
+ "Wi‑Fi ネットワーク候補を許可しますか?"
+ "%s からのネットワーク候補に、デバイスが自動的に接続される可能性があります。"
+ "許可"
+ "許可しない""Wi-Fi は自動的にオンになります""高品質の保存済みネットワークの検出時""再度オンにしない"
@@ -1354,7 +1355,7 @@
"アナログのオーディオ アクセサリを検出""接続したデバイスはこのスマートフォンと互換性がありません。タップすると、詳細を確認できます。""USBデバッグが接続されました"
- "タップして USB デバッグを無効にしてください"
+ "USB デバッグを無効にするにはここをタップしてください""USBデバッグを無効にする場合に選択します。""テストハーネス モード有効""出荷時設定にリセットしてテストハーネス モードを無効にしてください。"
@@ -1887,8 +1888,8 @@
"カテゴリなし""このような通知の重要度を設定します。""関係するユーザーのため、この設定は重要です。"
- "%1$s が %2$s で新しいユーザーを作成できるようにしますか?"
- "%1$s が %2$s で新しいユーザーを作成できるようにしますか?(このアカウントのユーザーはすでに存在します)"
+ "%1$s が %2$s で新しいユーザーを作成できるようにしますか?(このアカウントのユーザーはすでに存在します)"
+ "%1$s が %2$s で新しいユーザーを作成できるようにしますか?""言語を追加""地域設定""言語名を入力"
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 23fdad44864bd06325ba3a263b2f937cf7ee47bb..bd4e4dccbdc52147f00a4a90e51876c547707983 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -95,6 +95,7 @@
"ხმოვანი ფოსტის შეტყობინებები""დარეკვა Wi-Fi-ს მეშვეობით""SIM სტატუსი"
+ "მაღალპრიორიტეტული SIM სტატუსი""მოთხოვნილია კვანძი TTY რეჟიმი FULL""მოთხოვნილია კვანძი TTY რეჟიმი HCO""მოთხოვნილია კვანძი TTY რეჟიმი VCO"
@@ -550,11 +551,11 @@
"თითის ანაბეჭდის ხატულა"
- "სახის ამოცნობის აპარატურის მართვა"
+ "სახით განბლოკვის აპარატურის მართვა""საშუალებას აძლევს აპს, დაამატოს და წაშალოს სახეების შაბლონები."
- "სახის ამოცნობის აპარატურის გამოყენება"
- "საშუალებას აძლევს აპს, ავტორიზაციისთვის გამოიყენოს სახის ამოცნობის აპარატურა"
- "სახის ამოცნობა"
+ "სახით განბლოკვის აპარატურის გამოყენება"
+ "საშუალებას აძლევს აპს, ამოცნობისთვის გამოიყენოს სახით განბლოკვის აპარატურა"
+ "განბლოკვა სახით""დაარეგისტრირეთ თქვენი სახე ხელახლა""ამოცნობის გასაუმჯობესებლად, გთხოვთ, ხელახლა დაარეგისტრიროთ თქვენი სახე""სახის ზუსტი მონაცემები არ აღიბეჭდა. ცადეთ ხელახლა."
@@ -567,7 +568,7 @@
"გადაანაცვლეთ ტელეფონი მარცხნივ.""გადაანაცვლეთ ტელეფონი მარჯვნივ.""გთხოვთ, უფრო პირდაპირ შეხედოთ თქვენს მოწყობილობას."
- "თქვენი სახე არ ჩანს. შეხედეთ ტელეფონს."
+ "დაიჭირეთ სახე უშუალოდ ტელეფონის წინ.""მეტისმეტად მოძრაობთ. მყარად დაიჭირეთ ტელეფონი.""გთხოვთ, ხელახლა დაარეგისტრიროთ თქვენი სახე.""სახის ამოცნობა ვეღარ ხერხდება. ცადეთ ხელახლა."
@@ -576,19 +577,19 @@
"თავი ცოტა ნაკლებად მიაბრუნეთ.""თავი ცოტა ნაკლებად მიაბრუნეთ.""მოაშორეთ ყველაფერი, რაც სახეს გიფარავთ."
- "გაწმინდეთ სენსორი ეკრანის ზედა კიდეზე."
+ "გაწმინდეთ ეკრანის ზედა ნაწილი, შავი ზოლის ჩათვლით.""სახე ვერ დასტურდება. აპარატი მიუწვდომელია."
- "ცადეთ ხელახლა სახის ამოცნობა."
+ "ცადეთ ხელახლა სახით განბლოკვა.""სახის ახალი მონაცემები ვერ ინახება. ჯერ ძველი წაშალეთ."
- "სახის ოპერაცია გაუქმდა."
- "სახის ავთენტიფიკაცია გაუქმდა მომხმარებლის მიერ"
+ "სახის ამოცნობა გაუქმდა."
+ "განბლოკვა სახით გაუქმდა მომხმარებლის მიერ.""დაფიქსირდა ბევრი მცდელობა. ცადეთ მოგვიანებით."
- "მეტისმეტად ბევრი მცდელობა იყო. სახის ამოცნობა გათიშულია."
+ "მეტისმეტად ბევრი მცდელობა იყო. სახით განბლოკვა გათიშულია.""სახის დადასტურება ვერ ხერხდება. ცადეთ ხელახლა."
- "თქვენ არ დაგიყენებიათ სახის ავთენტიფიკაცია"
- "სახის ავთენტიფიკაცია ამ მოწყობილობაზე მხარდაჭერილი არ არის"
+ "თქვენ არ დაგიყენებიათ სახით განბლოკვა."
+ "განბლოკვა სახით ამ მოწყობილობაზე მხარდაჭერილი არ არის.""სახე %d"
@@ -1254,10 +1255,10 @@
"შეეხეთ ყველა ქსელის სანახავად""დაკავშირება""ყველა ქსელი"
- "გსურთ Wi-Fi ქსელებთან დაკავშირება?"
- "შეთავაზებულია %s-ის მიერ"
- "დიახ"
- "არა"
+ "გსურთ, დაუშვათ შემოთავაზებული Wi‑Fi ქსელები?"
+ "%s შემოთავაზებული ქსელები. მოწყობილობა შეიძლება ავტომატურად დაუკავშირდეს."
+ "დაშვება"
+ "არა, გმადლობთ""Wi-Fi ავტომატურად ჩაირთვება""როცა შენახულ მაღალხარისხიან ქსელებთან ახლოს იმყოფებით""ხელახლა ნუ ჩართავ"
@@ -1887,8 +1888,8 @@
"კატეგორიის გარეშე""ამ შეტყობინებების მნიშვნელობის დონე განისაზღვრა თქვენ მიერ.""მნიშვნელოვანია ჩართული მომხმარებლების გამო."
- "მიეცეს უფლება %1$s-ს, %2$s-ის მეშვეობით ახალი მომხმარებელი შექმნას ?"
- "მიეცეს უფლება %1$s-ს, %2$s-ის მეშვეობით ახალი მომხმარებელი შექმნას (ამ ანგარიშის მქონე მომხმარებელი უკვე არსებობს) ?"
+ "მიეცეს უფლება %1$s-ს %2$s-ის მეშვეობით ახალი მომხმარებელი შექმნას (ამ ანგარიშის მქონე მომხმარებელი უკვე არსებობს)?"
+ "მიეცეს უფლება %1$s-ს %2$s-ის მეშვეობით ახალი მომხმარებელი შექმნას?""ენის დამატება""რეგიონის პარამეტრები""აკრიფეთ ენის სახელი"
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 9a6dc6baad9a31c27be53dcf35d1e39a873363e5..0b69c882fb1e20d7b28b6a79ee5d930b270ac1ba 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -95,6 +95,7 @@
"Дауыстық пошта хабарлары""Wi-Fi қоңыраулары""SIM күйі"
+ "SIM картасы туралы маңызды хабарландырулар""Пир TTY режимі ТОЛЫҚ сұрады""Пир TTY режимінің HCO сұрады""Пир TTY режимінің VCO сұрады"
@@ -550,11 +551,11 @@
"Саусақ ізі белгішесі"
- "бетті тану жабдығын басқару"
+ "Face Unlock жабдығын басқару""Қолданбаға пайдаланатын бет үлгілерін енгізу және жою әдістерін шақыруға мүмкіндік береді."
- "бетті тану жабдығын пайдалану"
- "Қолданбаға бетті тану жабдығын қолдануға рұқсат етеді"
- "Бетті тану"
+ "Face Unlock жабдығын пайдалану"
+ "Аутентификациялау үшін қолданбаға Face Unlock жабдығын пайдалануға рұқсат береді."
+ "Face Unlock""Бетті қайта тіркеу""Құрылғы жүзіңізді жақсырақ тануы үшін, бетіңізді қайта тіркеңіз.""Бет деректері дұрыс алынбады. Әрекетті қайталаңыз."
@@ -567,7 +568,7 @@
"Телефонды солға жылжытыңыз.""Телефонды оңға жылжытыңыз.""Құрылғының камерасына тура қараңыз."
- "Бетіңіз көрінбейді. Телефонға қараңыз."
+ "Бетіңізді телефонға тура қаратыңыз.""Қозғалыс тым көп. Телефонды қозғалтпаңыз.""Қайта тіркеліңіз.""Енді бет анықтау мүмкін емес. Әрекетті қайталаңыз."
@@ -576,19 +577,19 @@
"Басыңызды түзурек ұстаңыз.""Басыңызды кішкене бұрыңыз.""Бетіңізді жауып тұрған нәрсені алып тастаңыз."
- "Экранның жоғарғы жиегіндегі датчикті тазалаңыз."
+ "Экранның жоғарғы жағын, сонымен қатар қара жолақты өшіріңіз.""Бетті тану мүмкін емес. Жабдық қолжетімді емес."
- "Құрылғы бетіңізді танымады. Қайталап көріңіз."
+ "Face Unlock функциясын қайта қолданып көріңіз.""Жаңа бетті сақтау мүмкін емес. Алдымен ескісін жойыңыз."
- "Бетті танудан бас тартылды."
- "Пайдаланушы бетті тану әрекетінен бас тартты."
+ "Бетті танудан бас тартылды."
+ "Пайдаланушы Face Unlock функциясынан бас тартты.""Тым көп әрекет жасалды. Кейінірек қайталаңыз."
- "Тым көп әрекет жасалды. Бетті тану функциясы өшірілді."
+ "Тым көп әрекет жасалды. Face Unlock функциясы өшірілді.""Бетті тану мүмкін емес. Әрекетті қайталаңыз."
- "Бетті тану функциясы реттелмеген."
- "Бетті тану функциясын бұл құрылғы қолдамайды."
+ "Face Unlock реттелмеді."
+ "Бұл құрылғыда Face Unlock функциясы істемейді.""%d беті"
@@ -1254,10 +1255,10 @@
"Барлық желілерді көру үшін түртіңіз""Қосылу""Барлық желілер"
- "Wi-Fi желісіне жалғансын ба?"
- "%s ұсынған."
- "Иә"
- "Жоқ"
+ "Ұсынылған Wi‑Fi желілеріне рұқсат беру керек пе?"
+ "%s ұсынған желілер. Құрылғы автоматты түрде қосылуы мүмкін."
+ "Рұқсат беру"
+ "Жоқ, рақмет""Wi‑Fi автоматты түрде қосылады""Сақталған жоғары сапалы желіге жақын болғанда""Қайта қоспау"
@@ -1888,8 +1889,8 @@
"Санатқа жатқызылмаған""Сіз осы хабарландырулардың маңыздылығын орнатасыз.""Қатысты адамдарға байланысты бұл маңызды."
- "%1$s%2$s есептік жазбасы бар жаңа пайдаланушы жасауға рұқсат ету керек пе?"
- "%1$s%2$s есептік жазбасында жаңа пайдаланушы жасауға рұқсат ету керек пе (осы есептік жазбасы бар пайдаланушы әлдеқашан бар) ?"
+ "%1$s қолданбасына %2$s есептік жазбасы бар жаңа пайдаланушы (мұндай есептік жазбаға ие пайдаланушы бұрыннан бар) жасауға рұқсат етілсін бе?"
+ "%1$s қолданбасына %2$s есептік жазбасы бар жаңа пайдаланушы жасауға рұқсат етілсін бе?""Тілді қосу""Аймақ параметрі""Тіл атауын теріңіз"
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 1275e14186830552006d903a4bf92ce5d12566dc..9b9a69d76099b82ae50742f486fb10237102d9dc 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -95,6 +95,7 @@
"សារជាសំឡេង""ការហៅទូរសព្ទតាម Wi-Fi""ស្ថានភាពស៊ីម"
+ "ស្ថានភាពស៊ីមដែលមានអាទិភាពខ្ពស់""ម៉ាស៊ីនកូនបានស្នើ TTY Mode FULL""ម៉ាស៊ីនកូនបានស្នើ TTY Mode HCO""ម៉ាស៊ីនកូនបានស្នើ TTY Mode VCO"
@@ -550,11 +551,11 @@
"រូបតំណាងស្នាមម្រាមដៃ"
- "គ្រប់គ្រងផ្នែករឹងផ្ទៀងផ្ទាត់ផ្ទៃមុខ"
+ "គ្រប់គ្រងហាតវែរដោះសោតាមទម្រង់មុខ""អនុញ្ញាតឱ្យកម្មវិធីប្រើវិធីសាស្ត្រដើម្បីបញ្ចូល និងលុបទម្រង់គំរូផ្ទៃមុខសម្រាប់ប្រើប្រាស់។"
- "ប្រើផ្នែករឹងផ្ទៀងផ្ទាត់ផ្ទៃមុខ"
- "អនុញ្ញាតឱ្យកម្មវិធីប្រើផ្នែករឹងផ្ទៀងផ្ទាត់ផ្ទៃមុខសម្រាប់ការផ្ទៀងផ្ទាត់"
- "ការផ្ទៀងផ្ទាត់មុខ"
+ "ប្រើហាតវែរដោះសោតាមទម្រង់មុខ"
+ "អនុញ្ញាតឱ្យកម្មវិធីប្រើហាតវែរដោះសោតាមទម្រង់មុខសម្រាប់ការផ្ទៀងផ្ទាត់"
+ "ការដោះសោតាមទម្រង់មុខ""ស្កេនបញ្ចូលមុខរបស់អ្នកម្ដងទៀត""ដើម្បីធ្វើឱ្យការសម្គាល់មុខប្រសើរជាងមុន សូមស្កេនបញ្ចូលមុខរបស់អ្នកម្ដងទៀត""មិនអាចថតទិន្នន័យទម្រង់មុខបានត្រឹមត្រូវទេ។ សូមព្យាយាមម្ដងទៀត។"
@@ -567,7 +568,7 @@
"ផ្លាស់ទីទូរសព្ទទៅខាងឆ្វេង។""ផ្លាស់ទីទូរសព្ទទៅខាងស្ដាំ។""សូមមើលឱ្យចំឧបករណ៍របស់អ្នកជាងមុន។"
- "មើលមិនឃើញមុខរបស់អ្នកទេ។ សូមសម្លឹងមើលទូរសព្ទ។"
+ "បែរមុខរបស់អ្នកឱ្យចំពីមុខទូរសព្ទផ្ទាល់។""មានចលនាខ្លាំងពេក។ សូមកាន់ទូរសព្ទឱ្យនឹង។""សូមស្កេនបញ្ចូលមុខរបស់អ្នកម្ដងទៀត។""មិនអាចសម្គាល់មុខបានទៀតទេ។ សូមព្យាយាមម្ដងទៀត។"
@@ -576,19 +577,19 @@
"ងាកក្បាលរបស់អ្នកតិចជាងមុនបន្តិច។""ងាកក្បាលរបស់អ្នកបន្តិចទៀត។""យកអ្វីដែលបាំងមុខរបស់អ្នកចេញ។"
- "សម្អាតឧបករណ៍ចាប់សញ្ញានៅគែមខាងលើនៃអេក្រង់។"
+ "សម្អាតផ្នែកខាងលើនៃអេក្រង់របស់អ្នក រួមទាំងរបារខ្មៅ""មិនអាចផ្ទៀងផ្ទាត់មុខបានទេ។ មិនមានហាតវែរទេ។"
- "សាកល្បងផ្ទៀងផ្ទាត់មុខម្ដងទៀត។"
+ "សាកល្បងដោះសោតាមទម្រង់មុខម្ដងទៀត។""មិនអាចផ្ទុកទិន្នន័យទម្រង់មុខថ្មីបានទេ។ សូមលុបទិន្នន័យទម្រង់មុខចាស់ជាមុនសិន។"
- "បានបោះបង់ប្រតិបត្តិការចាប់ទម្រង់មុខ"
- "ការផ្ទៀងផ្ទាត់មុខត្រូវបានបោះបង់ដោយអ្នកប្រើប្រាស់"
+ "បានបោះបង់ប្រតិបត្តិការចាប់ផ្ទៃមុខ។"
+ "អ្នកប្រើប្រាស់បានបោះបង់ការដោះសោតាមទម្រង់មុខ។""ព្យាយាមចូលច្រើនពេកហើយ។ សូមព្យាយាមម្តងទៀតពេលក្រោយ។"
- "ព្យាយាមចូលច្រើនពេក។ បានបិទការផ្ទៀងផ្ទាត់មុខ។"
+ "ការដោះសោតាមទម្រង់មុខត្រូវបានបិទ ដោយសារព្យាយាមច្រើនដងពេក។""មិនអាចផ្ទៀងផ្ទាត់មុខបានទេ។ សូមព្យាយាមម្ដងទៀត។"
- "អ្នកមិនទាន់រៀបចំការផ្ទៀងផ្ទាត់មុខនៅឡើយទេ"
- "មិនអាចប្រើការផ្ទៀងផ្ទាត់មុខនៅលើឧបករណ៍នេះបានទេ"
+ "អ្នកមិនទាន់រៀបចំការដោះសោតាមទម្រង់មុខនៅឡើយទេ។"
+ "មិនអាចប្រើការដោះសោតាមទម្រង់មុខនៅលើឧបករណ៍នេះបានទេ។""ផ្ទៃមុខទី %d"
@@ -1256,10 +1257,10 @@
"ចុចដើម្បីមើលបណ្តាញទាំងអស់""ភ្ជាប់""បណ្ដាញទាំងអស់"
- "ភ្ជាប់បណ្តាញ Wi-Fi?"
- "បានណែនាំដោយ %s"
- "បាទ/ចាស"
- "ទេ"
+ "អនុញ្ញាតឱ្យភ្ជាប់បណ្ដាញ Wi‑Fi ដែលបានណែនាំ?"
+ "បណ្ដាញដែលបានណែនាំរបស់ %s ។ ឧបករណ៍អាចភ្ជាប់ដោយស្វ័យប្រវត្តិ។"
+ "អនុញ្ញាត"
+ "ទេ អរគុណ""Wi‑Fi នឹងបើកដោយស្វ័យប្រវត្តិ""នៅពេលដែលអ្នកនៅជិតបណ្តាញគុណភាពខ្ពស់ដែលបានរក្សាទុក""កុំបើកឡើងវិញ"
@@ -1889,8 +1890,8 @@
"មិនបែងចែកប្រភេទ""អ្នកបានកំណត់សារៈសំខាន់នៃការជូនដំណឹងទាំងនេះ""វាមានសារៈសំខាន់ដោយសារតែមនុស្សដែលពាក់ព័ន្ធ"
- "អនុញ្ញាតឲ្យ %1$s បង្កើតអ្នកប្រើថ្មីដោយប្រើ %2$s ឬទេ?"
- "អនុញ្ញាតឲ្យ %1$s បង្កើតអ្នកប្រើថ្មីដោយប្រើ %2$s (មានអ្នកប្រើសម្រាប់គណនីនេះរួចហើយ) ឬទេ?"
+ "អនុញ្ញាតឱ្យ %1$s បង្កើតអ្នកប្រើប្រាស់ថ្មីដោយប្រើ %2$s (អ្នកប្រើប្រាស់ដែលមានគណនីនេះមានរួចហើយ) ដែរឬទេ?"
+ "អនុញ្ញាតឱ្យ %1$s បង្កើតអ្នកប្រើប្រាស់ថ្មីដោយប្រើ %2$s ដែរឬទេ?""បន្ថែមភាសា""ចំណូលចិត្តតំបន់""វាយបញ្ចូលឈ្មោះភាសា"
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 20d077cdbedee0ecf0d677e6146b30fc164561ca..90ed851e246d9205f03ecdaad3ca957663430735 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -95,6 +95,7 @@
"ಧ್ವನಿಮೇಲ್ ಸಂದೇಶಗಳು""ವೈ-ಫೈ ಕರೆ ಮಾಡುವಿಕೆ""ಸಿಮ್ ಸ್ಥಿತಿ"
+ "ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯ ಸಿಮ್ ಸ್ಥಿತಿ""ಪೀರ್ ವಿನಂತಿಸಿಕೊಂಡ TTY ಮೋಡ್ ಪೂರ್ಣಗೊಂಡಿದೆ""ಪೀರ್ ವಿನಂತಿಸಿಕೊಂಡ TTY ಮೋಡ್ HCO""ಪೀರ್ ವಿನಂತಿಸಿಕೊಂಡ TTY ಮೋಡ್ VCO"
@@ -268,7 +269,7 @@
"USB ಸಂಪರ್ಕ""App ರನ್ ಆಗುತ್ತಿದೆ""ಅಪ್ಲಿಕೇಶನ್ಗಳು ಬ್ಯಾಟರಿಯನ್ನು ಉಪಯೋಗಿಸುತ್ತಿವೆ"
- "%1$s ಬ್ಯಾಟರಿ ಬಳಸುತ್ತಿದೆ"
+ "%1$s ಆ್ಯಪ್, ಬ್ಯಾಟರಿಯನ್ನು ಬಳಸುತ್ತಿದೆ""%1$d ಅಪ್ಲಿಕೇಶನ್ಗಳು ಬ್ಯಾಟರಿ ಬಳಸುತ್ತಿವೆ""ಬ್ಯಾಟರಿ,ಡೇಟಾ ಬಳಕೆಯ ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ""%1$s, %2$s"
@@ -550,11 +551,11 @@
"ಬೆರಳಚ್ಚು ಐಕಾನ್"
- "ಮುಖ ದೃಢೀಕರಣ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ"
+ "ಫೇಸ್ ಅನ್ಲಾಕ್ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ನಿರ್ವಹಿಸಿ""ಬಳಕೆಗೆ ಮುಖದ ಟೆಂಪ್ಲೇಟ್ಗಳನ್ನು ಸೇರಿಸಲು ಮತ್ತು ಅಳಿಸಲು ವಿಧಾನಗಳನ್ನು ಮನವಿ ಮಾಡಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."
- "ಮುಖ ದೃಢೀಕರಣ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ಬಳಸಿ"
- "ಧೃಡೀಕರಣಕ್ಕಾಗಿ ಮುಖದ ಹಾರ್ಡ್ವೇರ್ ಬಳಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ"
- "ಮುಖ ಗುರುತಿಸುವಿಕೆ"
+ "ಫೇಸ್ ಅನ್ಲಾಕ್ ಹಾರ್ಡ್ವೇರ್ ಬಳಸಿ"
+ "ಪ್ರಮಾಣೀಕರಣಕ್ಕಾಗಿ ಫೇಸ್ ಅನ್ಲಾಕ್ ಹಾರ್ಡ್ವೇರ್ ಬಳಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ"
+ "ಫೇಸ್ ಅನ್ಲಾಕ್""ನಿಮ್ಮ ಮುಖವನ್ನು ಮರುನೋಂದಣಿ ಮಾಡಿ""ಗುರುತಿಸುವಿಕೆಯನ್ನು ಹೆಚ್ಚಿಸಲು ನಿಮ್ಮ ಮುಖವನ್ನು ಮರುನೋಂದಣಿ ಮಾಡಿ""ಸರಿಯಾಗಿ ಮುಖ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಲಾಗಲಿಲ್ಲ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."
@@ -567,7 +568,7 @@
"ಫೋನ್ ಅನ್ನು ಎಡಕ್ಕೆ ಸರಿಸಿ.""ಫೋನ್ ಅನ್ನು ಬಲಕ್ಕೆ ಸರಿಸಿ.""ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಹೆಚ್ಚಿನದ್ದನ್ನು ನೇರವಾಗಿ ನೋಡಿ."
- "ನಿಮ್ಮ ಮುಖ ಕಾಣಿಸುತ್ತಿಲ್ಲ. ಫೋನ್ ಕಡೆಗೆ ನೋಡಿ."
+ "ನಿಮ್ಮ ಮುಖವನ್ನು ಫೋನ್ಗೆ ನೇರವಾಗಿ ಇರಿಸಿ.""ತುಂಬಾ ಅಲುಗಾಡುತ್ತಿದೆ ಫೋನ್ ಅನ್ನು ಸ್ಥಿರವಾಗಿ ಹಿಡಿಯಿರಿ.""ನಿಮ್ಮ ಮುಖವನ್ನು ಮರುನೋಂದಣಿ ಮಾಡಿ.""ಮುಖ ಗುರುತಿಸಲು ಸಾಧ್ಯವಾಗುವುದಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."
@@ -576,19 +577,19 @@
"ನಿಮ್ಮ ತಲೆಯನ್ನು ಹೆಚ್ಚು ತಿರುಗಿಸಬೇಡಿ.""ನಿಮ್ಮ ತಲೆಯನ್ನು ಸ್ವಲ್ಪ ಕಡಿಮೆ ತಿರುಗಿಸಿ.""ನಿಮ್ಮ ಮುಖವನ್ನು ಮರೆಮಾಡುವ ಯಾವುದನ್ನಾದರೂ ತೆಗೆದುಹಾಕಿ."
- "ಸ್ಕ್ರೀನ್ ಮೇಲ್ಬಾಗದ ಅಂಚಿನಲ್ಲಿನ ಸೆನ್ಸರ್ ಸ್ವಚ್ಚಗೊಳಿಸಿ."
+ "ಬ್ಲ್ಯಾಕ್ ಬಾರ್ ಸೇರಿದಂತೆ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ನ ಮೇಲ್ಭಾಗವನ್ನು ತೆರವುಗೊಳಿಸಿ""ಮುಖ ದೃಢೀಕರಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಹಾರ್ಡ್ವೇರ್ ಲಭ್ಯವಿಲ್ಲ."
- "ಮುಖ ದೃಢೀಕರಣ ಹಾರ್ಡ್ವೇರ್ ಅನ್ನು ಬಳಸಿ ನೋಡಿ."
+ "ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಪುನಃ ಪ್ರಯತ್ನಿಸಿ.""ಹೊಸ ಮುಖ ಡೇಟಾ ಸಂಗ್ರಹಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಮೊದಲು ಹಳೆಯದನ್ನು ಅಳಿಸಿ"
- "ಮುಖದ ಕಾರ್ಯಚರಣೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ"
- "ಮುಖ ಗುರುತಿಸುವಿಕೆಯನ್ನು ಬಳಕೆದಾರರು ರದ್ದುಗೊಳಿಸಿದ್ದಾರೆ"
+ "ಮುಖದ ಕಾರ್ಯಚರಣೆಯನ್ನು ರದ್ದುಗೊಳಿಸಲಾಗಿದೆ."
+ "ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಬಳಕೆದಾರರು ರದ್ದುಗೊಳಿಸಿದ್ದಾರೆ.""ಹಲವು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದ್ದೀರಿ. ನಂತರ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."
- "ಹಲವಾರು ಪ್ರಯತ್ನಗಳು. ಮುಖ ಗುರುತಿಸುವಿಕೆ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."
+ "ಹಲವು ಬಾರಿ ಪ್ರಯತ್ನಿಸಿದ್ದೀರಿ. ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ.""ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."
- "ಮುಖ ಗುರುತಿಸುವಿಕೆಯನ್ನು ನೀವು ಸೆಟಪ್ ಮಾಡಿಲ್ಲ"
- "ಈ ಸಾಧನದಲ್ಲಿ ಮುಖ ಗುರುತಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯವು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ"
+ "ನೀವು ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿಲ್ಲ."
+ "ಈ ಸಾಧನದಲ್ಲಿ ಫೇಸ್ ಅನ್ಲಾಕ್ ವೈಶಿಷ್ಟ್ಯವು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ.""ಮುಖದ %d"
@@ -1151,7 +1152,7 @@
"%1$s ಜೊತೆ ಚಿತ್ರ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿ""ಚಿತ್ರ ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿ""ಈ ಕ್ರಿಯೆಗೆ ಡಿಫಾಲ್ಟ್ ಆಗಿ ಬಳಸಿ."
- "ಬೇರೆಯ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಿ"
+ "ಬೇರೊಂದು ಆ್ಯಪ್ ಬಳಸಿ""ಸಿಸ್ಟಂ ಸೆಟ್ಟಿಂಗ್ಗಳು > ಅಪ್ಲಿಕೇಶನ್ಗಳು > ಡೌನ್ಲೋಡ್ ಮಾಡಲಾದ ಡಿಫಾಲ್ಟ್ ಅನ್ನು ತೆರವುಗೊಳಿಸಿ.""ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆಮಾಡಿ""USB ಸಾಧನಕ್ಕೆ ಅಪ್ಲಿಕೇಶನ್ವೊಂದನ್ನು ಆಯ್ಕೆಮಾಡಿ"
@@ -1254,10 +1255,10 @@
"ಎಲ್ಲಾ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ""ಸಂಪರ್ಕಿಸಿ""ಎಲ್ಲಾ ನೆಟ್ವರ್ಕ್ಗಳು"
- "ವೈ-ಫೈ ನೆಟ್ವರ್ಕ್ಗಳಿಗೆ ಸಂಪರ್ಕಿಸುವುದೇ?"
- "ಸೂಚಿಸಿದವರು: %s"
- "ಹೌದು"
- "ಇಲ್ಲ"
+ "ಸೂಚಿಸಿರುವ ನೆಟ್ವರ್ಕ್ಗಳನ್ನು ಅನುಮತಿಸುವುದೇ?"
+ "%s ಸೂಚಿಸಿರುವ ನೆಟ್ವರ್ಕ್ಗಳು. ಸಾಧನಗಳು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಸಂಪರ್ಕಗೊಳ್ಳಬಹುದು."
+ "ಅನುಮತಿಸಿ"
+ "ಬೇಡ""ವೈ‑ಫೈ ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಆನ್ ಆಗುತ್ತದೆ""ನೀವು ಉಳಿಸಿದ ಅಧಿಕ ಗುಣಮಟ್ಟದ ನೆಟ್ವರ್ಕ್ ಸಮೀಪದಲ್ಲಿದ್ದಾಗ""ಮತ್ತೆ ಆನ್ ಮಾಡಲು ಹಿಂತಿರುಗಬೇಡಿ"
@@ -1888,8 +1889,8 @@
"ವರ್ಗೀಕರಿಸದಿರುವುದು""ನೀವು ಈ ಅಧಿಸೂಚನೆಗಳ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ಹೊಂದಿಸಿರುವಿರಿ.""ಜನರು ತೊಡಗಿಕೊಂಡಿರುವ ಕಾರಣ ಇದು ಅತ್ಯಂತ ಪ್ರಮುಖವಾಗಿದೆ."
- "%2$s ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು %1$s ಗೆ ಅನುಮತಿಸುವುದೇ ?"
- "%2$s (ಈ ಖಾತೆಯ ಬಳಕೆದಾರರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾರೆ) ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು %1$s ಗೆ ಅನುಮತಿಸುವುದೇ ?"
+ "%2$s (ಈ ಖಾತೆಯ ಬಳಕೆದಾರರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾರೆ) ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು %1$s ಗೆ ಅನುಮತಿಸಬೇಕೆ ?"
+ "%2$s ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು %1$s ಗೆ ಅನುಮತಿಸುವುದೇ ?""ಭಾಷೆ ಸೇರಿಸಿ""ಪ್ರದೇಶ ಪ್ರಾಶಸ್ತ್ಯ""ಭಾಷೆ ಹೆಸರನ್ನು ಟೈಪ್ ಮಾಡಿ"
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index 33ce9944d7cbeb8e15d03f10759c1ba7e5429cd8..f866e218b8aaa304675840d12aaa0dff4ded05c9 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -95,6 +95,7 @@
"음성사서함 메시지""Wi-Fi 통화""SIM 상태"
+ "우선순위가 높은 SIM 상태""피어가 TTY 모드 FULL을 요청했습니다.""피어가 TTY 모드 HCO를 요청했습니다.""피어가 TTY 모드 VCO를 요청했습니다."
@@ -550,11 +551,11 @@
"지문 아이콘"
- "얼굴 인증 하드웨어 관리"
+ "얼굴인식 잠금해제 하드웨어 관리""사용할 얼굴 템플릿의 추가 및 삭제 메서드를 앱에서 호출하도록 허용합니다."
- "얼굴 인증 하드웨어 사용"
- "앱에서 얼굴 인증 하드웨어를 인증에 사용하도록 허용합니다."
- "얼굴 인증"
+ "얼굴인식 잠금해제 하드웨어 사용"
+ "앱에서 얼굴인식 잠금해제 하드웨어를 인증에 사용하도록 허용합니다."
+ "얼굴인식 잠금해제""얼굴 재등록 필요""인식률을 개선하려면 얼굴을 다시 등록하세요.""정확한 얼굴 데이터를 캡처하지 못했습니다. 다시 시도하세요."
@@ -567,7 +568,7 @@
"휴대전화를 왼쪽으로 이동하세요.""휴대전화를 오른쪽으로 이동하세요.""기기에서 더 똑바로 바라보세요."
- "얼굴이 보이지 않습니다. 휴대전화를 바라보세요."
+ "휴대전화가 얼굴 정면을 향하도록 두세요.""너무 많이 움직였습니다. 휴대전화를 흔들리지 않게 잡으세요.""얼굴을 다시 등록해 주세요.""더 이상 얼굴을 인식할 수 없습니다. 다시 시도하세요."
@@ -576,19 +577,19 @@
"고개를 조금 덜 돌려 보세요.""고개를 조금 덜 돌려 보세요.""얼굴이 가려지지 않도록 해 주세요."
- "화면 상단 가장자리의 센서를 깨끗하게 닦아 주세요."
+ "검은색 바를 포함한 화면 상단을 청소하세요.""얼굴을 확인할 수 없습니다. 하드웨어를 사용할 수 없습니다."
- "얼굴 인증을 다시 시도해 보세요."
+ "얼굴인식 잠금해제를 다시 시도해 주세요.""새 얼굴 데이터를 저장할 수 없습니다. 먼저 기존 얼굴 데이터를 삭제하세요."
- "얼굴 인식 작업이 취소되었습니다."
- "사용자가 얼굴 인증을 취소했습니다."
+ "얼굴 인식 작업이 취소되었습니다."
+ "사용자가 얼굴인식 잠금해제를 취소했습니다.""시도 횟수가 너무 많습니다. 나중에 다시 시도하세요."
- "시도 횟수가 너무 많습니다. 얼굴 인증이 사용 중지되었습니다."
+ "시도 횟수가 너무 많습니다. 얼굴인식 잠금해제가 사용 중지되었습니다.""얼굴을 확인할 수 없습니다. 다시 시도하세요."
- "얼굴 인증을 설정하지 않았습니다."
- "이 기기에서는 얼굴 인증이 지원되지 않습니다."
+ "얼굴인식 잠금해제를 설정하지 않았습니다."
+ "이 기기에서는 얼굴인식 잠금해제가 지원되지 않습니다.""얼굴 %d"
@@ -1254,10 +1255,10 @@
"모든 네트워크를 보려면 탭하세요.""연결""모든 네트워크"
- "Wi-Fi 네트워크에 연결하시겠습니까?"
- "%s에서 추천"
- "예"
- "아니요"
+ "제안된 Wi‑Fi 네트워크를 허용하시겠습니까?"
+ "%s에서 네트워크를 제안했습니다. 기기가 자동으로 연결될 수 있습니다."
+ "허용"
+ "허용 안함""Wi‑Fi가 자동으로 사용 설정됨""저장된 고품질 네트워크가 가까이 있는 경우""다시 사용 설정하지 않음"
@@ -1342,7 +1343,7 @@
"권한 필요 없음""비용이 부과될 수 있습니다.""확인"
- "이 기기를 USB로 충전"
+ "이 기기를 USB로 충전 중""USB를 통해 연결된 기기 충전""USB 파일 전송 사용 설정됨""USB를 통해 PTP 사용 설정됨"
@@ -1854,8 +1855,8 @@
"다운타임""평일 밤""주말"
- "캘린더 일정 중"
- "수면 중"
+ "캘린더 일정"
+ "수면 시간""%1$s(이)가 일부 소리를 음소거함""사용 중인 기기 내부에 문제가 발생했습니다. 초기화할 때까지 불안정할 수 있습니다.""사용 중인 기기 내부에 문제가 발생했습니다. 자세한 내용은 제조업체에 문의하세요."
@@ -1887,8 +1888,8 @@
"지정된 카테고리 없음""이러한 알림의 중요도를 설정했습니다.""관련된 사용자가 있으므로 중요합니다."
- "%1$s이(가) %2$s(으)로 신규 사용자를 만들도록 허용하시겠습니까?"
- "%1$s이(가) %2$s(이 계정의 사용자가 이미 있음)(으)로 신규 사용자를 만들도록 허용하시겠습니까?"
+ "%1$s에서 %2$s 계정으로 신규 사용자를 만들도록 허용하시겠습니까? 이 계정으로 등록된 사용자가 이미 존재합니다."
+ "%1$s에서 %2$s 계정으로 신규 사용자를 만들도록 허용하시겠습니까?""언어 추가""지역 환경설정""언어 이름 입력"
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index b34fcf2c66646c9e0b323c047622438ddc4b4011..6c247871b7fa2dd645e348dd97e4f206a3696a20 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -95,6 +95,7 @@
"Үн почтасынын билдирүүлөрү""Wi-Fi аркылуу чалуу""SIM-картанын абалы"
+ "SIM картадагы өтө маанилүү билдирмелер""Peer TTY режимин FULL кылууну суранды""Peer TTY режимин HCO кылууну суранды""Peer TTY режимин VCO кылууну суранды"
@@ -550,11 +551,11 @@
"Манжа изинин сүрөтчөсү"
- "жүздүн аныктыгын текшерүүчү аппараттык камсыздоону башкаруу"
+ "жүзүнөн таануу функциясынын аппараттык камсыздоосун башкаруу""Колдонмого пайдалануу үчүн жүздүн үлгүлөрүн кошуу жана жок кылуу мүмкүндүгүн берет."
- "жүздүн аныктыгын текшерүүчү аппараттык камсыздоону колдонуу"
- "Колдонмого аныктыгын текшерүү үчүн жүздүн аныктыгын текшерүүчү аппараттык камсыздоону пайдалануу мүмкүндүгүн берет"
- "Жүздүн аныктыгын текшерүү"
+ "аппараттык камсыздоо үчүн жүзүнөн таанууну колдонуу"
+ "Колдонмо аныктыкты текшерүүдө Жүзүнөн таануу функциясынын аппараттык камсыздоосун колдонот"
+ "Жүзүнөн таануу""Жүзүңүздү кайра таанытыңыз.""Мыкты таануу үчүн, жүзүңүздү кайра таанытыңыз""Жүзүңүз жакшы тартылган жок. Кайра аракет кылыңыз."
@@ -567,7 +568,7 @@
"Телефонду солго жылдырыңыз.""Телефонду оңго жылдырыңыз.""Түзмөгүңүзгө түз караңыз."
- "Жүзүңүз көрүнбөй жатат. Телефонду караңыз."
+ "Телефонду жүзүңүздүн маңдайында кармаңыз.""Кыймылдап жибердиңиз. Телефонду түз кармаңыз.""Жүзүңүздү кайра таанытыңыз.""Жүз таанылган жок. Кайра аракет кылыңыз."
@@ -576,19 +577,19 @@
"Башыңызды бир аз гана эңкейтиңиз.""Башыңызды бир аз гана эңкейтиңиз.""Жүзүңүздү жашырып турган нерселерди алып салыңыз."
- "Экрандын жогору жагындагы сенсорду тазалаңыз."
+ "Экраныңыздын жогору жагын, анын ичинде тилкени да тазалаңыз""Жүз ырасталбай жатат. Аппараттык камсыздоо жеткиликсиз."
- "Жүздүн аныктыгын кайра текшерип көрүңүз"
+ "Жүзүнөн таануу функциясын кайра текшерип көрүңүз.""Жаңы жүздү сактоо мүмкүн эмес. Адегенде эскисин өчүрүңүз."
- "Жүздүн аныктыгын текшерүү жокко чыгарылды"
- "Жүздүн аныктыгын текшерүү колдонуучу аркылуу жокко чыгарылды"
+ "Жүздүн аныктыгын текшерүү жокко чыгарылды."
+ "Жүзүнөн таануу функциясын колдонуучу өчүрүп салды.""Өтө көп жолу аракет жасадыңыз. Кийинчерээк кайра аракет кылыңыз."
- "Өтө көп аракеттер аткарылды. Жүздүн аныктыгын текшерүү өчүк."
+ "Өтө көп жолу аракет кылдыңыз. Жүзүнөн таануу функциясы өчүрүлдү.""Жүз ырасталбай жатат. Кайра аракет кылыңыз."
- "Жүздүн аныктыгын текшерүүнү жөндөй элексиз"
- "Жүздүн аныктыгын текшерүү бул түзмөктө колдоого алынбайт"
+ "Жүзүнөн таануу функциясын жөндөй элексиз."
+ "Жүзүнөн таануу функциясы бул түзмөктө иштебейт.""Жүз %d"
@@ -1254,10 +1255,10 @@
"Бардык тармактарды көрүү үчүн басыңыз""Туташуу""Бардык тармактар"
- "Wi-Fi тармактарына туташсынбы?"
- "%s сунуштайт"
- "Ооба"
- "Жок"
+ "Сунушталган Wi‑Fi тармактарына туташасызбы?"
+ "%s сунуштаган тармактар. Түзмөк автоматтык түрдө туташышы мүмкүн."
+ "Уруксат берүү"
+ "Жок, рахмат""Wi‑Fi автоматтык түрдө күйөт""Байланыш сигналы күчтүү тармактарга жакындаганда""Өзү кайра күйбөйт"
@@ -1343,7 +1344,7 @@
"Эч уруксаттын кереги жок""бул үчүн акы алынышы мүмкүн""Жарайт"
- "Бул түзмөк USB аркылуу кубатталууда"
+ "USB аркылуу кубатталууда""USB аркылуу туташкан түзмөк кубатталууда""USB аркылуу файл өткөрүү режими күйгүзүлдү""USB аркылуу PTP режими күйгүзүлдү"
@@ -1355,7 +1356,7 @@
"Аналогдук аудио жабдуу табылды""Тиркелген түзмөк бул телефонго шайкеш келбейт. Көбүрөөк маалымат алуу үчүн таптап коюңуз.""Мүчүлүштүктөрдү USB аркылуу оңдоо иштетилген"
- "USB аркылуу мүчүлүштүктөрдү оңдоону өчүрүү үчүн таптаңыз"
+ "USB арклуу мүчүлштктрдү оңдоону өчрүү үчүн басып коюңуз""Сыноо программасынын режими иштетилди"
@@ -1889,8 +1890,8 @@
"Категорияларга бөлүнгөн эмес""Бул эскертмелердин маанилүүлүгүн белгиледиңиз.""Булар сиз үчүн маанилүү адамдар."
- "%1$s колдонмосу %2$s аккаунту менен жаңы колдонуучу түзө берсинби?"
- "%1$s колдонмосуна %2$s аккаунту үчүн жаңы колдонуучу түзгөнгө уруксат бересизби (мындай аккаунту бар колдонуучу мурунтан эле бар)?"
+ "%1$s колдонмосуна %2$s аккаунту менен жаңы колдонуучу түзүүгө уруксат бересизби (мындай аккаунту бар колдонуучу мурунтан эле бар)?"
+ "%1$s колдонмосуна %2$s аккаунту менен жаңы колдонуучу түзүүгө уруксат бересизби?""Тил кошуу""Чөлкөмдүк жөндөөлөр""Тилди киргизиңиз"
@@ -1898,7 +1899,7 @@
"Бардык тилдер""Бардык аймактар""Издөө"
- "Колдонмо жеткиликтсиз"
+ "Колдонмо жеткиликсиз""%1$s колдонмосу учурда жеткиликсиз. Анын жеткиликтүүлүгү %2$s тарабынан башкарылат.""Кеңири маалымат""Жумуш профили күйгүзүлсүнбү?"
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 3b887a2131e75fe6ce20fb1fba374f871ffabe3d..a9e90862da613c9159f0aa8eaa6fea544841ae13 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -95,6 +95,7 @@
"ຂໍ້ຄວາມສຽງ""ການໂທ Wi-Fi""ສະຖານະ SIM"
+ "ສະຖານະ SIM ຄວາມສຳຄັນສູງ""ໂໝດ TTY ທີ່ເພື່ອນຂໍນັ້ນເຕັມແລ້ວ""ໂໝດ TTY ທີ່ເພື່ອນຂໍ HCO""ໂໝດ TTY ທີ່ເພື່ອນຂໍ VCO"
@@ -550,11 +551,11 @@
"ໄອຄອນລາຍນິ້ວມື"
- "ຈັດການຮາດແວການກວດສອບຄວາມຖືກຕ້ອງດ້ວຍໃບໜ້າ"
+ "ຈັດການຮາດແວປົດລັອກດ້ວຍໜ້າ""ອະນຸຍາດໃຫ້ແອັບເປີດວິທີການຕ່າງໆເພື່ອເພີ່ມ ແລະ ລຶບແມ່ແບບໃບໜ້າສຳລັບການນຳໃຊ້."
- "ໃຊ້ຮາດແວການກວດສອບຄວາມຖືກຕ້ອງດ້ວຍໃບໜ້າ"
- "ອະນຸຍາດໃຫ້ແອັບໃຊ້ຮາດແວການກວດສອບຄວາມຖືກຕ້ອງດ້ວຍໃບໜ້າສຳລັບການກວດສອບຄວາມຖືກຕ້ອງ"
- "ການພິສູດຢືນຢັນດ້ວຍໃບໜ້າ"
+ "ໃຊ້ຮາດແວການປົດລັອກໃບໜ້າ"
+ "ອະນຸຍາດໃຫ້ແອັບໃຊ້ຮາດແວການປົດລັອກດ້ວຍໜ້າເພື່ອພິສູດຢືນຢັນ"
+ "ປົດລັອກດ້ວຍໜ້າ""ລົງທະບຽນໃບໜ້າຂອງທ່ານຄືນໃໝ່""ເພື່ອປັບປຸງການຈຳແນກ, ກະລຸນາລົງທະບຽນໃບໜ້າຂອງທ່ານຄືນໃໝ່.""ບໍ່ສາມາດບັນທຶກຂໍ້ມູນໃບໜ້າທີ່ຖືກຕ້ອງໄດ້. ກະລຸນາລອງໃໝ່."
@@ -567,7 +568,7 @@
"ຍ້າຍໂທລະສັບໄປທາງຊ້າຍ.""ຍ້າຍໂທລະສັບໄປທາງຂວາ.""ກະລຸນາເບິ່ງອຸປະກອນຂອງທ່ານໃຫ້ຊື່ໆ."
- "ບໍ່ສາມາດເບິ່ງເຫັນໜ້າຂອງທ່ານໄດ້. ກະລຸນາເບິ່ງໂທລະສັບ."
+ "ຫັນໜ້າຂອງທ່ານໄປໃສ່ໜ້າໂທລະສັບໂດຍກົງ.""ເຄື່ອນໄຫວຫຼາຍເກີນໄປ. ກະລຸນາຖືໂທລະສັບໄວ້ຊື່ໆ.""ກະລຸນາລົງທະບຽນອຸປະກອນຂອງທ່ານອີກເທື່ອໜຶ່ງ.""ບໍ່ສາມາດຈຳແນກໃບໜ້າໄດ້ອີກຕໍ່ໄປ. ກະລຸນາລອງໃໝ່."
@@ -576,19 +577,19 @@
"ອຽງຫົວຂອງທ່ານໜ້ອຍໜຶ່ງ.""ອຽງຫົວຂອງທ່ານໜ້ອຍໜຶ່ງ.""ນຳສິ່ງທີ່ກີດຂວາງໃບໜ້າທ່ານອອກ."
- "ທຳຄວາມສະອາດເຊັນເຊີຢູ່ເທິງສຸດຂອງຂອບຈໍ."
+ "ທຳຄວາມສະອາດສ່ວນເທິງສຸດຂອງໜ້າຈໍທ່ານ, ຮວມທັງແຖບດຳນຳ""ບໍ່ສາມາດຢັ້ງຢືນໃບໜ້າໄດ້. ບໍ່ມີຮາດແວໃຫ້ໃຊ້."
- "ລອງໃຊ້ການພິສູດຢືນຢັນໃບໜ້າອີກເທື່ອໜຶ່ງ"
+ "ລອງປົດລັອກດ້ວຍໜ້າອີກເທື່ອໜຶ່ງ.""ບໍ່ສາມາດບັນທຶກຂໍ້ມູນໃບໜ້າໃໝ່ໄດ້. ກະລຸນາລຶບຂໍ້ມູນເກົ່າອອກກ່ອນ."
- "ຍົກເລີກການດຳເນີນການກັບໃບໜ້າແລ້ວ"
- "ຜູ້ໃຊ້ຍົກເລີກການພິສູດຢືນຢັນໃບໜ້າແລ້ວ"
+ "ຍົກເລີກການດຳເນີນການກັບໃບໜ້າແລ້ວ."
+ "ຜູ້ໃຊ້ຍົກເລີກການປົດລັອກດ້ວຍໜ້າແລ້ວ.""ມີຄວາມພະຍາຍາມຫຼາຍຄັ້ງເກີນໄປ. ກະລຸນາລອງໃໝ່ໃນພາຍຫຼັງ."
- "ພະຍາຍາມຫຼາຍເທື່ອເກີນໄປ. ປິດການພິສູດຢືນຢັນດ້ວຍໃບໜ້າແລ້ວ."
+ "ພະຍາຍາມຫຼາຍເທື່ອເກີນໄປ. ປິດນຳໃຊ້ການປົດລັອກດ້ວຍໜ້າແລ້ວ.""ບໍ່ສາມາດຢັ້ງຢືນໃບໜ້າໄດ້. ກະລຸນາລອງໃໝ່."
- "ທ່ານຍັງບໍ່ໄດ້ຕັ້ງຄ່າການພິສູດຢືນຢັນດ້ວຍໃບໜ້າເທື່ອ"
- "ບໍ່ຮອງຮັບການພິສູດຢືນຢັນໃບໜ້າຢູ່ອຸປະກອນນີ້"
+ "ທ່ານຍັງບໍ່ໄດ້ຕັ້ງການປົດລັອກດ້ວຍໜ້າເທື່ອ."
+ "ບໍ່ຮອງຮັບການປົດລັອກດ້ວຍໜ້າຢູ່ອຸປະກອນນີ້.""ໃບໜ້າ %d"
@@ -1254,10 +1255,10 @@
"ແຕະເພື່ອເບິ່ງເຄືອຂ່າຍທັງໝົດ""ເຊື່ອມຕໍ່""ເຄືອຂ່າຍທັງໝົດ"
- "ເຊື່ອມຕໍ່ຫາເຄືອຂ່າຍ Wi‑Fi ບໍ?"
- "ແນະນຳໂດຍ %s"
- "ແມ່ນ"
- "ບໍ່ແມ່ນ"
+ "ອະນຸຍາດເຄືອຂ່າຍ Wi‑Fi ທີ່ແນະນຳບໍ?"
+ "ເຄືອຂ່າຍ %s ທີ່ແນະນຳ. ອຸປະກອນອາດເຊື່ອມຕໍ່ເອງໂດຍອັດຕະໂນມັດ."
+ "ອະນຸຍາດ"
+ "ບໍ່, ຂອບໃຈ""ຈະມີການເປີດໃຊ້ Wi‑Fi ອັດຕະໂນມັດ""ເມື່ອທ່ານຢູ່ໃກ້ເຄືອຂ່າຍຄຸນນະພາບສູງທີ່ບັນທຶກໄວ້""ບໍ່ຕ້ອງເປີດໃຊ້ຄືນໃໝ່"
@@ -1887,8 +1888,8 @@
"ບໍ່ມີໝວດໝູ່""ທ່ານຕັ້ງຄວາມສຳຄັນຂອງການແຈ້ງເຕືອນເຫຼົ່ານີ້.""ຂໍ້ຄວາມນີ້ສຳຄັນເນື່ອງຈາກບຸກຄົນທີ່ກ່ຽວຂ້ອງ."
- "ອະນຸຍາດໃຫ້ %1$s ສ້າງຜູ້ໃຊ້ໃໝ່ສຳລັບ %2$s ບໍ?"
- "ອະນຸຍາດໃຫ້ %1$s ສ້າງຜູ້ໃຊ້ໃໝ່ສຳລັບ %2$s (ຜູ້ໃຊ້ສຳລັບບັນຊີນີ້ມີຢູ່ແລ້ວ) ບໍ?"
+ "ອະນຸຍາດໃຫ້ %1$s ສ້າງຜູ້ໃຊ້ໃໝ່ກັບ %2$s ໄດ້ບໍ່ (ມີຜູ້ໃຊ້ທີ່ໃຊ້ບັນຊີນີ້ຢູ່ກ່ອນແລ້ວ) ?"
+ "ອະນຸຍາດໃຫ້ %1$s ສ້າງຜູ້ໃຊ້ໃໝ່ກັບ %2$s ໄດ້ບໍ?""ເພີ່ມພາສາ""ການຕັ້ງຄ່າພາກພື້ນ""ພິມຊື່ພາສາ"
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index e3163cf8bfc871321094dd8f046ab373f567b992..c1b0aa9642cd7b407290c2b5e9fb63f657e91b61 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -97,6 +97,7 @@
"Balso pašto pranešimai""„Wi-Fi“ skambinimas""SIM būsena"
+ "Didelio prioriteto SIM kortelės būsena""Lygiavertis naudotojas pateikė užklausą dėl TTY režimo FULL""Lygiavertis naudotojas pateikė užklausą dėl TTY režimo HCO""Lygiavertis naudotojas pateikė užklausą dėl TTY režimo VCO"
@@ -556,11 +557,11 @@
"Piršto antspaudo piktograma"
- "tvarkyti veido autentifikavimo aparatinę įrangą"
+ "tvarkyti Atrakinimo pagal veidą aparatinę įrangą""Programai leidžiama aktyv. metodus, norint pridėti ir ištrinti naudojamus veidų šablonus."
- "naudoti veido autentifikavimo aparatinę įrangą"
- "Programai leidžiama naudoti veido autentifikavimo aparatinę įrangą tapatybei nustatyti"
- "Veido autentifikavimas"
+ "naudoti Atrakinimo pagal veidą aparatinę įrangą"
+ "Programai leidžiama naudoti Atrakinimo pagal veidą aparatinę įrangą tapatybei nustatyti"
+ "Atrakinimas pagal veidą""Pakartotinis veido registravimas""Kad patobulintumėte atpažinimą, iš naujo užregistruokite veidą""Neužfiks. tikslūs veido duom. Bandykite dar kartą."
@@ -573,7 +574,7 @@
"Pasukite telefoną kairėn.""Pasukite telefoną dešinėn.""Žiūrėkite tiesiai į įrenginį."
- "Nematau jūsų veido. Žiūrėkite į telefoną."
+ "Veidas turi būti prieš telefoną.""Įrenginys per daug judinamas. Nejudink. telefono.""Užregistruokite veidą iš naujo.""Nebegalima atpažinti veido. Bandykite dar kartą."
@@ -582,19 +583,19 @@
"Nesukite tiek galvos.""Nesukite tiek galvos.""Patraukite viską, kas užstoja jūsų veidą."
- "Nuvalykite jutiklį, esantį ekrano viršuje."
+ "Išvalykite ekrano viršų, įskaitant juodą juostą""Nepavyko patv. veido. Aparatinė įranga negalima."
- "Bandykite naudoti veido autentifikavimą dar kartą."
+ "Band. naudoti Atrakinimą pagal veidą dar kartą.""Nepavyko išs. naujų veido duomenų. Pirm. ištrinkite senus."
- "Veido atpažinimo operacija atšaukta"
- "Veido autentifikavimą atšaukė naudotojas"
+ "Veido atpažinimo operacija atšaukta."
+ "Atrakinimą pagal veidą atšaukė naudotojas.""Per daug bandymų. Vėliau bandykite dar kartą."
- "Per daug bandymų. Veido autentifikavimas išjungtas."
+ "Per daug bandymų. Atrakinimas pagal veidą išjungtas.""Nepavyko patvirtinti veido. Bandykite dar kartą."
- "Nenustatėte veido autentifikavimo"
- "Veido autentifikavimo funkcija šiame įrenginyje nepalaikoma"
+ "Nenustatėte Atrakinimo pagal veidą."
+ "Atrakinimas pagal veidą šiame įrenginyje nepalaikomas.""%d veidas"
@@ -1298,10 +1299,10 @@
"Palieskite, jei norite matyti visus tinklus""Prisijungti""Visi tinklai"
- "Prisijungti prie „Wi-Fi“ tinklų?"
- "Pasiūlė „%s“"
- "Taip"
- "Ne"
+ "Leisti siūlomus „Wi‑Fi“ tinklus?"
+ "„%s“ siūlomi tinklai. Įrenginys gali prisijungti automatiškai."
+ "Leisti"
+ "Ne, ačiū""„Wi‑Fi“ bus įjungtas automatiškai""Kai būsite netoli išsaugoto aukštos kokybės tinklo""Neįjunkite vėl"
@@ -1955,8 +1956,8 @@
"Be kategorijos""Galite nustatyti šių pranešimų svarbą.""Tai svarbu dėl susijusių žmonių."
- "Leisti „%1$s“ kurti naują %2$s naudotoją?"
- "Leisti „%1$s“ kurti naują %2$s naudotoją (šią paskyrą naudojantis naudotojas jau yra)?"
+ "Leisti „%1$s“ kurti naują %2$s naudotoją (šią paskyrą naudojantis naudotojas jau yra)?"
+ "Leisti „%1$s“ kurti naują %2$s naudotoją?""Pridėkite kalbą""Regiono nuostata""Įveskite kalbos pav."
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index e5e9dfc903c1001572fe808d7364e4855d1949b8..457dbbc2784d9bc721e43461d8a9ba4e11e15674 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -96,6 +96,7 @@
"Balss pasta ziņojumi""Wi-Fi zvani""SIM kartes statuss"
+ "Augstas prioritātes SIM kartes statuss""Vienādranga ierīce pieprasīja teksta tālruņa režīmu FULL""Vienādranga ierīce pieprasīja teksta tālruņa režīmu HCO""Vienādranga ierīce pieprasīja teksta tālruņa režīmu VCO"
@@ -553,11 +554,11 @@
"Pirksta nospieduma ikona"
- "pārvaldīt sejas autentifikācijas aparatūru"
+ "pārvaldīt aparatūru, kas paredzēta autorizācijai pēc sejas""Atļauj lietotnei izsaukt metodes izmantojamo sejas veidņu pievienošanai un dzēšanai."
- "izmantot sejas autentifikācijas aparatūru"
- "Atļauj lietotnei izmantot sejas autentifikācijas aparatūru autentificēšanai"
- "Sejas autentificēšana"
+ "lietot aparatūru, kas paredzēta autorizācijai pēc sejas"
+ "Atļauj lietotnei izmantot autentificēšanai aparatūru, ar ko veic autorizāciju pēc sejas"
+ "Autorizācija pēc sejas""Atkārtoti reģistrējiet seju""Lai uzlabotu atpazīšanu, lūdzu, atkārtoti reģistrējiet savu seju""Neizdevās tvert sejas datus. Mēģiniet vēlreiz."
@@ -570,7 +571,7 @@
"Pārvietojiet tālruni pa kreisi.""Pārvietojiet tālruni pa labi.""Lūdzu, tiešāk skatieties uz savu ierīci."
- "Jūsu seja nav redzama. Paskatieties uz tālruni."
+ "Novietojiet savu seju tieši pretī tālrunim.""Pārāk daudz kustību. Nekustīgi turiet tālruni.""Lūdzu, atkārtoti reģistrējiet savu seju.""Seju vairs nevar atpazīt. Mēģiniet vēlreiz."
@@ -579,19 +580,19 @@
"Pagrieziet galvu nedaudz mazāk.""Pagrieziet galvu nedaudz mazāk.""Noņemiet visu, kas aizsedz jūsu seju."
- "Notīriet sensoru ekrāna augšējā malā."
+ "Notīriet ekrāna augšdaļu, tostarp melno joslu.""Nevar verificēt seju. Aparatūra nav pieejama."
- "Vēlreiz veiciet sejas autentificēšanu."
+ "Vēlreiz mēģiniet veikt autorizāciju pēc sejas.""Nevar saglabāt jaunās sejas datus. Dzēsiet kādu no vecajām."
- "Darbība ar sejas datiem atcelta"
- "Lietotājs atcēla sejas autentificēšanu"
+ "Darbība ar sejas datiem atcelta."
+ "Lietotājs atcēla autorizāciju pēc sejas.""Pārāk daudz mēģinājumu. Vēlāk mēģiniet vēlreiz."
- "Pārāk daudz mēģinājumu. Sejas autentificēšana ir atspējota."
+ "Pārāk daudz mēģinājumu. Autorizācija pēc sejas ir atspējota.""Nevar verificēt seju. Mēģiniet vēlreiz."
- "Sejas autentifikācija nav iestatīta"
- "Sejas autentificēšana šajā ierīcē netiek atbalstīta"
+ "Autorizācija pēc sejas nav iestatīta."
+ "Autorizācija pēc sejas šajā ierīcē netiek atbalstīta""Seja %d"
@@ -1276,10 +1277,10 @@
"Pieskarieties, lai skatītu visus tīklus""Izveidot savienojumu""Visi tīkli"
- "Vai veidot savienojumus ar Wi-Fi tīkliem?"
- "Iesaka %s"
- "Jā"
- "Nē"
+ "Vai atļaut ieteiktos Wi‑Fi tīklus?"
+ "Lietotnes %s ieteiktie tīkli. Ierīcē var tikt automātiski izveidots savienojums."
+ "Atļaut"
+ "Nē, paldies""Wi‑Fi tiks automātiski ieslēgts""Kad atrodaties saglabāta augstas kvalitātes tīkla tuvumā""Neieslēgt atkārtoti"
@@ -1921,8 +1922,8 @@
"Nav kategorijas""Jūs iestatījāt šo paziņojumu svarīguma līmeni.""Tas ir svarīgi iesaistīto personu dēļ."
- "Vai atļaut lietotnei %1$s izveidot jaunu lietotāju, izmantojot e-pasta adresi %2$s?"
- "Vai atļaut lietotnei %1$s izveidot jaunu lietotāju, izmantojot e-pasta adresi %2$s (lietotājs ar šādu kontu jau pastāv)?"
+ "Vai atļaut lietotnei %1$s izveidot jaunu lietotāju, izmantojot e-pasta adresi %2$s (lietotājs ar šādu kontu jau pastāv)?"
+ "Vai atļaut lietotnei %1$s izveidot jaunu lietotāju, izmantojot e-pasta adresi %2$s?""Pievienot valodu""Reģiona preference""Ierakstiet valodas nosaukumu"
diff --git a/core/res/res/values-mcc313-mnc100/config.xml b/core/res/res/values-mcc313-mnc100/config.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ccd03f10616ae2c46984a2a020d4ccd231f6caa0
--- /dev/null
+++ b/core/res/res/values-mcc313-mnc100/config.xml
@@ -0,0 +1,45 @@
+
+
+
+
+
+ "0"
+ "00"
+ "*0"
+ "*1"
+ "*2"
+ "*3"
+ "*4"
+ "*5"
+ "*6"
+ "*7"
+ "*8"
+ "*9"
+ "#0"
+ "#1"
+ "#2"
+ "#3"
+ "#4"
+ "#5"
+ "#6"
+ "#7"
+ "#8"
+ "#9"
+
+
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 8bac7f612abe4c1ecce9e5040e7370e9d169ae12..d41ce25f3a41f32d933459ca972ded1f8aa47202 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -71,10 +71,10 @@
"Одбивање несакани вознемирувачки повици""Испорака на повикувачки број""Не вознемирувај"
- "Стандардно, повикувачот со овој ID е ограничен. Следен повик: ограничен"
- "Стандардно, повикувачот со овој ID е ограничен. Следен повик: не е ограничен"
- "Стандардно, повикувачот со овој ID не е ограничен. Следен повик: ограничен"
- "Стандардно, повикувачот со овој ID не е ограничен. Следен повик: не е ограничен"
+ "Стандардно, ID на повикувач е скриен. Следен повик: скриен"
+ "Стандардно, ID на повикувач е скриен. Следен повик: не е скриен"
+ "Стандардно, ID на повикувач не е скриен. Следен повик: скриен"
+ "Стандардно, ID на повикувач не е скриен. Следен повик: не е скриен""Услугата не е предвидена.""Не може да го промените поставувањето за ID на повикувач.""Нема услуга за мобилен интернет"
@@ -95,6 +95,7 @@
"Пораки од говорна пошта""Повикување преку Wi-Fi""Статус на SIM-картичка"
+ "Статус на SIM-известувања со висок приоритет""Рамноправен уред го побара режимот на TTY „FULL“""Рамноправен уред го побара режимот на TTY „HCO“""Рамноправен уред го побара режимот на TTY „VCO“"
@@ -242,7 +243,7 @@
"Тивок режим""Звукот е исклучен""Звукот е вклучен"
- "Режим на работа во авион"
+ "Авионски режим""Режимот на работа во авион е вклучен""Режимот на работа во авион е исклучен""Поставки"
@@ -550,11 +551,11 @@
"Икона за отпечатоци"
- "управува со хардвер за проверка на лице"
+ "управува со хардвер за „Отклучување со лик“""Дозволува апликац. да повика начини за додавање и бришење шаблони на лице за користење."
- "користи хардвер за проверка на лице"
- "Дозволува апликацијата да користи хардвер за лице за проверка"
- "Проверка на лик"
+ "користи хардвер за „Отклучување со лик“"
+ "Дозволува апликацијата да користи хардвер за „Отклучување со лик“ за проверка"
+ "Отклучување со лик""Повторно регистрирајте го ликот""За да се подобри препознавањето, повторно регистрирајте го ликот""Не се сними прецизна слика. Обидете се повторно."
@@ -567,7 +568,7 @@
"Поместете го телефонот налево.""Поместете го телефонот надесно.""Погледнете подиректно во уредот."
- "Не ви се гледа ликот. Гледајте во телефонот."
+ "Наместете го лицето директно пред телефонот.""Премногу движење. Држете го телефонот стабилно.""Повторно регистрирајте го лицето.""Ликот не се препознава. Обидете се повторно."
@@ -576,19 +577,19 @@
"Не вртете ја главата толку многу.""Не вртете ја главата толку многу.""Отстранете ги работите што ви го покриваат лицето."
- "Исчистете го сензорот на горниот врв од екранот."
+ "Исчистете го врвот на екранот, вклучувајќи ја црната лента""Ликот не може да се потврди. Хардвер - недостапен."
- "Пробајте ја проверката на лице повторно."
+ "Пробајте „Отклучување со лик“ повторно.""Не се зачуваа податоците за нов лик. Избришете го стариот."
- "Операцијата со лик се откажа"
- "Проверката на ликот е откажана од корисникот"
+ "Операцијата со лице се откажа."
+ "„Отклучувањето со лик“ е откажано од корисникот.""Премногу обиди. Обидете се повторно подоцна."
- "Премногу обиди. Проверката на лик е оневозможена."
+ "Премногу обиди. „Отклучувањето со лик“ е оневозможено.""Ликот не може да се потврди. Обидете се повторно."
- "Не сте поставиле проверка на лик"
- "Проверката на лик не е поддржана на уредов"
+ "Не сте поставиле „Отклучување со лик“."
+ "„Отклучувањето со лик“ не е поддржано на уредов.""Лице %d"
@@ -1254,10 +1255,10 @@
"Допрете за да ги видите сите мрежи""Поврзете се""Сите мрежи"
- "Да се поврзе со Wi-Fi мрежи?"
- "Предложено од %s"
- "Да"
- "Не"
+ "Да се дозволат предложените Wi‑Fi мрежи?"
+ "Предложени мрежи од %s. Уредот може да се поврзе автоматски."
+ "Дозволи"
+ "Не, фала""Wi‑Fi ќе се вклучи автоматски""Кога сте во близина на зачувана мрежа со висок квалитет""Не вклучувај повторно"
@@ -1355,7 +1356,7 @@
"Откриен е аналоген аудиододаток""Приложениот уред не е компатибилен со телефонов. Допрете за да дознаете повеќе.""Поврзано е отстранување грешки преку USB"
- "Допрете за да го исклучите отстранувањето грешки преку USB"
+ "Допрете за да го исклучите""Изберете за да се оневозможи отстранување грешки на USB.""Овозможен е режимот на рамка за тестирање""Извршете фабричко ресетирање за да го оневозможите режимот на рамка за тестирање."
@@ -1890,8 +1891,8 @@
"Некатегоризирано""Ја поставивте важноста на известувањава.""Ова е важно заради луѓето кои се вклучени."
- "Дозволувате ли %1$s да создаде нов корисник со %2$s?"
- "Дозволувате ли %1$s да создаде нов корисник со %2$s (веќе постои корисник со оваа сметка)?"
+ "Дозволувате %1$s да создаде нов корисник со %2$s? (Веќе постои корисник со оваа сметка.)"
+ "Дозволувате %1$s да создаде нов корисник со %2$s?""Додај јазик""Претпочитувања за регион""Внеси име на јазик"
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index cf49ab2134dfcfaa1c1b3fbd22ae148d0dad69c0..7dc0ec388212c3e66e0ad59c20f4ba2bfb420efe 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -95,6 +95,7 @@
"വോയ്സ്മെയിൽ സന്ദേശങ്ങൾ""വൈഫൈ കോളിംഗ്""സിം നില"
+ "ഉയർന്ന മുൻഗണനയുള്ള സിം നില""പിയർ അഭ്യർത്ഥിച്ച TTY മോഡ് \'ഫുൾ\'""പിയർ അഭ്യർത്ഥിച്ച TTY മോഡ് HCO""പിയർ അഭ്യർത്ഥിച്ച TTY മോഡ് VCO"
@@ -550,11 +551,11 @@
"വിരലടയാള ഐക്കൺ"
- "മുഖം തിരിച്ചറിയൽ ഹാർഡ്വെയർ മാനേജ് ചെയ്യുക"
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ഹാർഡ്വെയർ മാനേജ് ചെയ്യുക""ഉപയോഗിക്കാനായി, മുഖത്തിന്റെ ടെംപ്ലേറ്റുകൾ ചേർക്കാനും ഇല്ലാതാക്കാനുമുള്ള രീതികൾ അഭ്യർത്ഥിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു."
- "മുഖം തിരിച്ചറിയൽ ഹാർഡ്വെയർ ഉപയോഗിക്കുക"
- "പരിശോധിച്ചുറപ്പിക്കലിനായി മുഖം തിരിച്ചറിയൽ ഹാർഡ്വെയർ ഉപയോഗിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു"
- "മുഖം പരിശോധിച്ചുറപ്പിക്കൽ"
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ഹാർഡ്വെയർ ഉപയോഗിക്കുക"
+ "പരിശോധിച്ചുറപ്പിക്കാൻ മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ഹാർഡ്വെയർ ഉപയോഗിക്കാൻ അനുവദിക്കുന്നു"
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക്""നിങ്ങളുടെ മുഖം വീണ്ടും എൻറോൾ ചെയ്യൂ""തിരിച്ചറിയൽ മെച്ചപ്പെടുത്താൻ, നിങ്ങളുടെ മുഖം ദയവായി വീണ്ടും എൻറോൾ ചെയ്യൂ""കൃത്യ മുഖ ഡാറ്റ എടുക്കാനായില്ല. വീണ്ടും ശ്രമിക്കൂ."
@@ -567,7 +568,7 @@
"ഫോൺ ഇടത്തോട്ട് നീക്കുക.""ഫോൺ വലത്തോട്ട് നീക്കുക.""നിങ്ങളുടെ ഉപകരണത്തിന് നേരെ കൂടുതൽ നന്നായി നോക്കുക."
- "നിങ്ങളുടെ മുഖം കാണാനാവുന്നില്ല. ഫോണിലേക്ക് നോക്കൂ."
+ "നിങ്ങളുടെ മുഖം ക്യാമറയ്ക്ക് നേരെയാക്കുക.""വളരെയധികം ചലനം. ഫോൺ അനക്കാതെ നേരെ പിടിക്കുക.""നിങ്ങളുടെ മുഖം വീണ്ടും എൻറോൾ ചെയ്യുക.""ഇനി മുഖം തിരിച്ചറിയാനാവില്ല. വീണ്ടും ശ്രമിക്കൂ."
@@ -576,19 +577,19 @@
"നിങ്ങളുടെ തല ഇത്ര തിരിക്കേണ്ട.""നിങ്ങളുടെ തല ഇത്ര തിരിക്കേണ്ട.""നിങ്ങളുടെ മുഖം മറയ്ക്കുന്നത് എല്ലാം നീക്കം ചെയ്യൂ."
- "സ്ക്രീനിന്റെ മുകളിലെ സെൻസർ വൃത്തിയാക്കുക."
+ "കറുപ്പ് ബാർ ഉൾപ്പെടെ നിങ്ങളുടെ സ്ക്രീനിന്റെ മുകൾഭാഗം വൃത്തിയാക്കുക""മുഖം പരിശോധിക്കാൻ കഴിയില്ല. ഹാർഡ്വെയർ ലഭ്യമല്ല."
- "മുഖം പരിശോധിച്ചുറപ്പിക്കാൻ വീണ്ടും ശ്രമിക്കുക."
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് വീണ്ടും പരീക്ഷിക്കൂ""പുതിയ മുഖ ഡാറ്റ സംഭരിക്കാനാകില്ല. ആദ്യം പഴയത് ഇല്ലാതാക്കുക."
- "മുഖം തിരിച്ചറിയൽ പ്രവർത്തനം റദ്ദാക്കി"
- "മുഖം പരിശോധിച്ചുറപ്പിക്കൽ ഉപയോക്താവ് റദ്ദാക്കി"
+ "മുഖത്തിന്റെ പ്രവർത്തനം റദ്ദാക്കി."
+ "ഉപയോക്താവ് മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് റദ്ദാക്കി""നിരവധി തവണ ശ്രമിച്ചു. പിന്നീട് വീണ്ടും ശ്രമിക്കുക."
- "വളരെയധികം ശ്രമങ്ങൾ. മുഖം തിരിച്ചറിയൽ പ്രവർത്തനരഹിതമാക്കി."
+ "വളരെയധികം ശ്രമങ്ങൾ. മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് പ്രവർത്തനരഹിതമാക്കി""മുഖം പരിശോധിക്കാൻ കഴിയില്ല. വീണ്ടും ശ്രമിക്കൂ."
- "നിങ്ങൾ മുഖം പരിശോധിച്ചുറപ്പിക്കൽ സജ്ജീകരിച്ചില്ല"
- "ഈ ഉപകരണം മുഖം പരിശോധിച്ചുറപ്പിക്കൽ പിന്തുണയ്ക്കുന്നില്ല"
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് സജ്ജീകരിച്ചില്ല."
+ "മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല.""മുഖം %d"
@@ -1254,10 +1255,10 @@
"എല്ലാ നെറ്റ്വർക്കുകളും കാണാൻ ടാപ്പുചെയ്യുക""കണക്റ്റുചെയ്യുക""എല്ലാ നെറ്റ്വർക്കുകളും"
- "വൈഫൈ നെറ്റ്വർക്കുകളിലേക്ക് കണക്റ്റ് ചെയ്യണോ?"
- "%s നിർദ്ദേശിച്ചത്"
- "ഉവ്വ്"
- "ഇല്ല"
+ "നിർദ്ദേശിച്ച വെെഫെെ നെറ്റ്വർക്കുകൾ അനുവദിക്കണോ?"
+ "%s നിർദ്ദേശിച്ച നെറ്റ്വർക്കുകൾ. ഉപകരണം സ്വയമേവ കണക്റ്റ് ചെയ്തേക്കാം."
+ "അനുവദിക്കുക"
+ "വേണ്ട""വൈഫൈ സ്വമേധയാ ഓണാകും""നിങ്ങൾ ഉയർന്ന നിലവാരമുള്ള സംരക്ഷിക്കപ്പെട്ട നെറ്റ്വർക്കിനരികിലെത്തുമ്പോൾ""തിരികെ ഓണാക്കരുത്"
@@ -1888,8 +1889,8 @@
"വർഗ്ഗീകരിച്ചിട്ടില്ലാത്ത""ഈ അറിയിപ്പുകളുടെ പ്രാധാന്യം നിങ്ങൾ സജ്ജീകരിച്ചു.""ഉൾപ്പെട്ടിട്ടുള്ള ആളുകളെ കണക്കിലെടുക്കുമ്പോള് ഇത് പ്രധാനപ്പെട്ടതാണ്."
- "%2$s എന്ന അക്കൗണ്ട് ഉപയോഗിച്ച് പുതിയൊരു ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ %1$s എന്ന ആപ്പിനെ അനുവദിക്കണോ?"
- "%2$s എന്ന അക്കൗണ്ട് (ഈ അക്കൗണ്ട് ഉപയോഗിച്ചുള്ള ഒരു ഉപയോക്താവ് ഇതിനകം തന്നെ നിലവിലുണ്ട്) ഉപയോഗിച്ച് പുതിയൊരു ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ %1$s എന്ന ആപ്പിനെ അനുവദിക്കണോ?"
+ "%2$s എന്ന അക്കൗണ്ട് (ഈ അക്കൗണ്ട് ഉപയോഗിക്കുന്ന ഒരു ഉപയോക്താവ് നിലവിലുണ്ട്) ഉപയോഗിച്ച് പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ %1$s എന്നതിനെ അനുവദിക്കണോ?"
+ "%2$s എന്ന അക്കൗണ്ട് ഉപയോഗിച്ച് പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ %1$s എന്നതിനെ അനുവദിക്കണോ?""ഒരു ഭാഷ ചേർക്കുക""മേഖലാ മുൻഗണന""ഭാഷയുടെ പേര് ടൈപ്പുചെയ്യുക"
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index c8cea4956bc808acc93a7253b0d55bad4ecf644f..4a2cf6314126170028ae33889082dfc1b8ba5d2d 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -95,6 +95,7 @@
"Дуут шуудангийн мессеж""Wi-Fi дуудлага""SIM статус"
+ "Өндөр ач холбогдолтой SIM-н статус""Хандлагын цэгт хүсэлт тавьсан TTY Mode FULL""Хандлагын цэгт хүсэлт тавьсан TTY Mode HCO""Хандлагын цэгт хүсэлт тавьсан TTY Mode VCO"
@@ -550,11 +551,11 @@
"Хурууны хээний дүрс"
- "царай танилтын техник хангамжийг удирдах"
+ "царайгаар тайлах техник хангамжийг удирдах""Аппад царайны загварыг ашиглахын тулд нэмэх эсвэл устгах аргыг идэвхжүүлэхийг зөвшөөрдөг."
- "царай танилтын техник хангамжийг ашиглах"
- "Аппад царай танилтын техник хангамжийг баталгаажуулалтад ашиглахыг зөвшөөрдөг"
- "Царайн нотолгоо"
+ "царайгаар тайлах техник хангамж ашиглах"
+ "Аппад царайгаар тайлах техник хангамжийг баталгаажуулалтад ашиглахыг зөвшөөрдөг"
+ "Царайгаар тайлах""Царайгаа дахин бүртгүүлнэ үү""Танилтыг сайжруулахын тулд царайгаа дахин бүртгүүлнэ үү""Царайн өгөгдлийг зөв авч чадсангүй. Дахин оролдоно уу."
@@ -567,7 +568,7 @@
"Утсаа зүүн тийш болгоно уу.""Утсаа баруун тийш болгоно уу.""Төхөөрөмж рүүгээ аль болох эгц харна уу."
- "Таны царайг харахгүй байна. Утас руу харна уу."
+ "Царайгаа утасны урд эгц байрлуулна уу""Хэт их хөдөлгөөнтэй байна. Утсаа хөдөлгөөнгүй барина уу.""Нүүрээ дахин бүртгүүлнэ үү.""Царайг таних боломжгүй боллоо. Дахин оролдоно уу."
@@ -576,19 +577,19 @@
"Толгойгоо арай багаар эргүүлнэ үү.""Толгойгоо арай багаар эргүүлнэ үү.""Таны нүүрийг далдалж буй аливаа зүйлийг хасна уу."
- "Дэлгэцийн дээд ирмэгт байрлах мэдрэгчийг цэвэрлэнэ үү."
+ "Хар хэсэг зэрэг дэлгэцийнхээ дээд хэсгийг цэвэрлэнэ үү""Царайг бататгаж чадсангүй. Техник хангамж боломжгүй байна."
- "Царайн нотолгоог дахин оролдоно уу."
+ "Царайгаар тайлахыг дахин оролдоно уу.""Царайн шинэ өгөгдлийг хадгалж чадсангүй. Эхлээд хуучин өгөгдлийг устгана уу."
- "Царайн үйл ажиллагааг цуцаллаа"
- "Хэрэглэгч царайн нотолгоог цуцалсан байна"
+ "Царайны үйл ажиллагааг цуцаллаа."
+ "Хэрэглэгч царайгаар тайлахыг цуцалсан.""Хэт олон удаа оролдлоо. Дараа дахин оролдоно уу."
- "Хэт олон удаа оролдлоо. Царайн нотолгоог идэвхгүй болголоо."
+ "Хэтэрхий олон удаа оролдлоо. Царайгаар тайлахыг идэвхгүй болголоо.""Царайг бататгаж чадсангүй. Дахин оролдоно уу."
- "Та царайн нотолгоог тохируулаагүй байна"
- "Царайн нотолгоог энэ төхөөрөмж дээр дэмждэггүй"
+ "Та царайгаар тайлахыг тохируулаагүй байна."
+ "Царайгаар тайлахыг энэ төхөөрөмж дээр дэмждэггүй.""Царай %d"
@@ -1254,10 +1255,10 @@
"Бүх сүлжээг харахын тулд товшино уу""Холбогдох""Бүх сүлжээ"
- "Wi-Fi сүлжээнд холбогдох уу?"
- "%s санал болгосон"
- "Тийм"
- "Үгүй"
+ "Санал болгосон Wi‑Fi сүлжээг зөвшөөрөх үү?"
+ "%s сүлжээ санал болголоо. Төхөөрөмж автоматаар холбогдож магадгүй."
+ "Зөвшөөрөх"
+ "Үгүй, баярлалаа""Wi‑Fi автоматаар асна""Таныг хадгалсан, өндөр чанартай сүлжээний ойролцоо байх үед""Буцааж асаахгүй"
@@ -1887,8 +1888,8 @@
"Ангилаагүй""Та эдгээр мэдэгдлийн ач холбогдлыг тогтоосон.""Оролцсон хүмүүсээс шалтгаалан энэ нь өндөр ач холбогдолтой."
- "%1$s-г %2$s-р шинэ Хэрэглэгч үүсгэхийг зөвшөөрөх үү?"
- "%1$s-г %2$s-р шинэ хэрэглэгч үүсгэхийг зөвшөөрөх үү (ийм бүртгэлтэй хэрэглэгч аль хэдийн байна) ?"
+ "%1$s-д %2$s-тай (ийм бүртгэлтэй хэрэглэгч аль хэдийн байна) шинэ хэрэглэгч үүсгэхийг зөвшөөрөх үү ?"
+ "%1$s-д %2$s-тай шинэ хэрэглэгч үүсгэхийг зөвшөөрөх үү?""Хэл нэмэх""Бүс нутгийн тохиргоо""Улсын хэлийг бичнэ үү"
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index b50cc567f470a09a42d6bba1698a9429f44cf791..495f5ffb1304220365bbb6baba5eb85150b34e28 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -95,6 +95,7 @@
"व्हॉइसमेल मेसेज""वाय-फाय कॉलिंग""सिम स्थिती"
+ "उच्च प्राधान्य सिम स्थिती""समवयस्क व्यक्तीने TTY मोड पूर्ण ची विनंती केली""समवयस्क व्यक्तीने TTY मोड HCO ची विनंती केली""समवयस्क व्यक्तीने TTY मोड VCO ची विनंती केली"
@@ -301,8 +302,8 @@
"शारीरिक अॅक्टिव्हिटी अॅक्सेस करा""<b>%1$s</b> ला तुमची शारीरिक अॅक्टिव्हिटी अॅक्सेस करण्याची अनुमती द्यायची का?""कॅमेरा"
- "चित्रे घेण्याची आणि व्हिडिओ रेकॉर्ड"
- "<b>%1$s</b> ला फोटो घेऊ आणि व्हिडिओ रेकॉर्ड करू द्यायचे?"
+ "चित्रे काढण्याची आणि व्हिडिओ रेकॉर्ड करण्याची"
+ "<b>%1$s</b> ला फोटो काढू आणि व्हिडिओ रेकॉर्ड करू द्यायचे?""कॉल लॉग""फोन कॉल लॉग वाचा आणि लिहा""<b>%1$s</b> ला तुमचे फोन कॉल लॉग अॅक्सेस करण्याची अनुमती द्यायची का?"
@@ -550,11 +551,11 @@
"फिंगरप्रिंट आयकन"
- "चेहरा ऑथेंटिकेशन हार्डवेअर व्यवस्थापित करा"
+ "फेस अनलॉक हार्डवेअर व्यवस्थापित करा""अॅपला वापरासाठी चेहरा टेम्पलेट जोडण्याच्या आणि हटवण्याच्या पद्धती जारी करू देते."
- "चेहरा ऑथेंटिकेशन हार्डवेअर वापरा"
- "अॅपला चेहरा ऑथेंटिकेशनसाठी ऑथेंटिकेशन हार्डवेअर वापरू देते"
- "फेस ऑथेंटिकेशन"
+ "फेस अनलॉक हार्डवेअर वापरा"
+ "अॅपला ऑथेंटिकेशनसाठी फेस अनलॉक हार्डवेअर वापरण्याची अनुमती देते"
+ "फेस अनलॉक""तुमच्या चेहऱ्याची पुन्हा नोंदणी करा""ओळखण्यामध्ये सुधारणा करण्यासाठी, कृपया तुमच्या चेहऱ्याची पुन्हा नोंदणी करा""अचूक फेस डेटा कॅप्चर करता आला नाही. पुन्हा करा."
@@ -567,7 +568,7 @@
"फोन डावीकडे हलवा.""फोन उजवीकडे हलवा.""कृपया तुमच्या डिव्हाइसकडे थेट पाहा"
- "तुमचा चेहरा दिसत नाही. फोनकडे पहा."
+ "तुमचा चेहरा थेट फोन समोर आणा.""खूप हलत आहे. फोन स्थिर धरून ठेवा.""कृपया तुमच्या चेहऱ्याची पुन्हा नोंदणी करा.""चेहरा ओळखू शकत नाही. पुन्हा प्रयत्न करा."
@@ -576,19 +577,19 @@
"तुमचे डोके थोडे कमी फिरवा.""तुमचे डोके थोडे कमी फिरवा.""तुमचा चहेरा लपवणारे काहीही काढून टाका."
- "स्क्रीनच्या वरील उजव्या कडेवरील सेन्सर साफ करा."
+ "ब्लॅक बार सह तुमच्या स्क्रीनची वरची बाजू साफ करा""चेहरा पडताळू शकत नाही. हार्डवेअर उपलब्ध नाही."
- "चेहरा ऑथेंटिकेशनचा पुन्हा प्रयत्न करा"
+ "फेस अनलॉकचा पुन्हा प्रयत्न करा.""नवीन फेस डेटा स्टोअर करू शकत नाही. आधी जुना हटवा."
- "फेस ऑपरेशन रद्द केले आहे"
- "वापरकर्त्याने फेस ऑथेंटिकेशन रद्द केले आहे"
+ "चेहरा ऑपरेशन रद्द केले गेले."
+ "वापरकर्त्याने फेस अनलॉक रद्द केले आहे.""खूप जास्त प्रयत्न केले. नंतर पुन्हा प्रयत्न करा."
- "बरेच प्रयत्न. फेस ऑथेंटिकेशन बंद केले आहे."
+ "बरेच प्रयत्न. फेस अनलॉक बंद केले आहे.""चेहरा पडताळणी करू शकत नाही. पुन्हा प्रयत्न करा."
- "तुम्ही फेस ऑथेंटिकेशन सेट केले नाही"
- "या डिव्हाइसवर फेस ऑथेंटिकेशन ला सपोर्ट होत नाही"
+ "तुम्ही फेस अनलॉक सेट केले नाही."
+ "या डिव्हाइसवर फेस अनलॉकला सपोर्ट नाही.""चेहरा %d"
@@ -1254,10 +1255,10 @@
"सर्व नेटवर्क पाहण्यासाठी टॅप करा""कनेक्ट करा""सर्व नेटवर्क"
- "वाय-फाय नेटवर्कशी कनेक्ट करायचे?"
- "%s ने सुचवले"
- "होय"
- "नाही"
+ "सुचवलेल्या वाय-फाय नेटवर्कना अनुमती द्यायची का?"
+ "%s सुचवलेली नेटवर्क. डिव्हाइस आपोआप कनेक्ट होऊ शकते."
+ "अनुमती द्या"
+ "नाही, नको""वाय-फाय आपोआप चालू होईल""तुम्ही जेव्हा सेव्ह केलेल्या उच्च दर्जाच्या नेटवर्कजवळ असाल तेव्हा""पुन्हा चालू करू नका"
@@ -1354,7 +1355,7 @@
"चार्जर लावलेले डिव्हाइस. आणखी पर्यायांसाठी टॅप करा""अॅनालॉग ऑडिओ अॅक्सेसरी आढळली""या फोनसह संलग्न केलेले डीव्हाइस सुसंगत नाही. अधिक जाणून घेण्यासाठी टॅप करा."
- "USB डीबग करणे कनेक्ट केले"
+ "USB डीबगिंग कनेक्ट केले""USB डीबगिंग बंद करण्यासाठी टॅप करा""USB डीबगिंग बंद करण्यासाठी निवडा.""टेस्ट हार्नेस मोड सुरू केला आहे"
@@ -1670,7 +1671,7 @@
"प्रवेशयोग्यता शॉर्टकटने %1$s बंद केली""%1$s वापरण्यासाठी दोन्ही व्हॉल्युम की तीन सेकंद दाबा आणि धरून ठेवा""तुम्ही अॅक्सेसिबिलिटी बटण दाबल्यावर वापरण्यासाठी वैशिष्ट्य निवडा:"
- "अॅक्सेसिबिलिटी जेश्चर ज्या सोबत वापराचे आहे अशी सेवा निवडा (स्क्रीनच्या खालच्या बाजूने दोन बोटांनी स्वाइप करा):"
+ "अॅक्सेसिबिलिटी जेश्चर ज्यासोबत वापराचे आहे अशी सेवा निवडा (स्क्रीनच्या खालच्या बाजूने दोन बोटांनी स्वाइप करा):""अॅक्सेसिबिलिटी जेश्चर ज्या सोबत वापराचे आहे अशी सेवा निवडा (स्क्रीनच्या खालच्या बाजूने तीन बोटांनी स्वाइप करा):""सेवांदरम्यान स्विच करण्यासाठी, अॅक्सेसिबिलिटी बटणाला स्पर्श करा आणि धरून ठेवा.""सेवांदरम्यान स्विच करण्यासाठी, दोन बोटांनी वरच्या दिशेला स्वाइप करा आणि धरून ठेवा."
@@ -1888,8 +1889,8 @@
"वर्गीकरण न केलेले""तुम्ही या सूचनांचे महत्त्व सेट केले.""सामील असलेल्या लोकांमुळे हे महत्वाचे आहे."
- "%2$s सह नवीन वापरकर्ता तयार करण्याची %1$s ला अनुमती द्यायची?"
- "%2$s सह नवीन वापरकर्ता तयार करण्याची (हे खाते असलेला वापरकर्ता आधीपासून विद्यमान आहे) %1$s ला अनुमती द्यायची?"
+ "%2$s सह नवीन वापरकर्ता तयार करण्याची (हे खाते असलेला वापरकर्ता आधीपासून अस्तित्वात आहे) %1$s ला अनुमती द्यायची आहे का?"
+ "%2$s सह नवीन वापरकर्ता तयार करण्याची %1$s ला अनुमती द्यायची आहे का?""एक भाषा जोडा""प्रदेश प्राधान्य""भाषा नाव टाइप करा"
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 7c19f44b4aea5cbebb974236885a0851814241a6..cfbe2ab7550527cdcda2ff93539c9fc9ac58b265 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -95,6 +95,7 @@
"Mesej mel suara""Panggilan Wi-Fi""Status SIM"
+ "Status SIM keutamaan tinggi""Rakan meminta Mod TTY PENUH""Rakan meminta Mod TTY HCO""Rakan meminta Mod TTY VCO"
@@ -550,11 +551,11 @@
"Ikon cap jari"
- "urus perkakasan pengesahan wajah"
+ "urus perkakasan wajah buka kunci""Membenarkan apl menggunakan kaedah untuk menambahkan dan memadamkan templat wajah untuk digunakan."
- "gunakan perkakasan pengesahan wajah"
- "Membenarkan apl menggunakan perkakasan pengesahan wajah untuk pengesahan"
- "Pengesahan Wajah"
+ "gunakan perkakasan wajah buka kunci"
+ "Membenarkan apl menggunakan perkakasan wajah buka kunci untuk pengesahan"
+ "Wajah buka kunci""Daftarkan semula wajah anda""Untuk meningkatkan pengecaman, sila daftarkan semula wajah anda""Gagal menangkap data wajah dgn tepat. Cuba lagi."
@@ -567,7 +568,7 @@
"Alihkan telefon ke kiri.""Alihkan telefon ke kanan.""Sila lihat terus pada peranti anda."
- "Gagal mengesan wajah anda. Lihat telefon."
+ "Letakkan wajah anda betul-betul di depan telefon.""Terlalu bnyk gerakan. Pegang telefon dgn stabil.""Sila daftarkan semula wajah anda.""Tidak lagi dapat mengecam wajah. Cuba lagi."
@@ -576,19 +577,19 @@
"Pusingkan kepala anda kurang sedikit.""Pusingkan kepala anda kurang sedikit.""Alih keluar apa saja yang melindungi wajah anda."
- "Bersihkan penderia di tepi bahagian atas skrin."
+ "Bersihkan bahagian atas skrin anda, termasuk bar hitam""Tdk dpt sahkan wajah. Perkakasan tidak tersedia."
- "Cuba pengesahan wajah sekali lagi."
+ "Cuba wajah buka kunci sekali lagi.""Tdk dpt menyimpan data wajah baharu. Padamkan yg lama dahulu."
- "Pengendalian wajah dibatalkan"
- "Pengesahan wajah dibatalkan oleh pengguna"
+ "Pengendalian wajah dibatalkan."
+ "Wajah buka kunci dibatalkan oleh pengguna.""Terlalu banyak percubaan. Cuba sebentar lagi."
- "Terlalu banyak percubaan. Pengesahan wajah dilumpuhkan."
+ "Terlalu banyak percubaan. Wajah buka kunci dilumpuhkan.""Tidak dapat mengesahkan wajah. Cuba lagi."
- "Anda belum menyediakan pengesahan wajah"
- "Pengesahan wajah tidak disokong pada peranti ini"
+ "Anda belum menyediakan wajah buka kunci."
+ "Wajah buka kunci tidak disokong pada peranti ini.""Wajah %d"
@@ -1254,10 +1255,10 @@
"Ketik untuk melihat semua rangkaian""Sambung""Semua rangkaian"
- "Sambung ke rangkaian Wi-Fi?"
- "Dicadangkan oleh %s"
- "Ya"
- "Tidak"
+ "Benarkan rangkaian Wi-Fi yang dicadangkan?"
+ "Rangkaian yang dicadangkan oleh %s. Peranti mungkin disambungkan secara automatik."
+ "Benarkan"
+ "Tidak perlu""Wi‑Fi akan dihidupkan secara automatik""Apabila anda berada berdekatan dengan rangkaian disimpan yang berkualiti tinggi""Jangan hidupkan kembali"
@@ -1887,8 +1888,8 @@
"Tidak dikategorikan""Anda menetapkan kepentingan pemberitahuan ini.""Mesej ini penting disebabkan orang yang terlibat."
- "Benarkan %1$s membuat Pengguna baharu dengan %2$s?"
- "Benarkan %1$s membuat Pengguna baharu dengan %2$s (Pengguna dengan akaun ini sudah wujud)?"
+ "Benarkan %1$s membuat Pengguna baharu dengan %2$s (Pengguna dengan akaun ini sudah wujud) ?"
+ "Benarkan %1$s membuat Pengguna baharu dengan %2$s?""Tambahkan bahasa""Pilihan wilayah""Taipkan nama bahasa"
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index d590e2538e3437af8f33be6d3b7f486aa3f577e4..951108a8414ff894a4ff21c527f5bbd362c1cbe1 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -95,6 +95,7 @@
"အသံမေးလ် မက်ဆေ့ဂျ်များ""Wi-Fi ခေါ်ဆိုမှု""ဆင်းမ်ကဒ် အခြေအနေ"
+ "အထူးဦးစားပေး ဆင်းမ်ကတ်အခြေအနေ""အခြားစက်မှ TTY မုဒ် FULL ပြုရန် တောင်းဆို၏""အခြားစက်မှ TTY မုဒ် HCO ပြုရန် တောင်းဆို၏""TTY မုဒ် VCO ပြုရန် အခြားစက်မှ တောင်းဆို၏"
@@ -550,11 +551,11 @@
"လက်ဗွေ အိုင်ကွန်"
- "မျက်နှာအထောက်အထားစိစစ်ခြင်း စက်ပစ္စည်းကို စီမံပါ"
+ "မျက်နှာမှတ် သော့ဖွင့်ခြင်း စက်ပစ္စည်းကို စီမံခြင်း""အသုံးပြုရန်အတွက် မျက်နှာပုံစံထည့်ရန် (သို့) ဖျက်ရန်နည်းလမ်းကို အက်ပ်အား သုံးခွင့်ပြုသည်။"
- "မျက်နှာအထောက်အထားစိစစ်ခြင်း စက်ပစ္စည်းကို သုံးပါ"
- "အထောက်အထားစိစစ်ရန်အတွက် ဤအက်ပ်အား မျက်နှာအထောက်အထားစိစစ်ခြင်း စက်ပစ္စည်းကိုသုံးခွင့်ပြုသည်"
- "မျက်နှာ စိစစ်ခြင်း"
+ "မျက်နှာမှတ် သော့ဖွင့်ခြင်း စက်ပစ္စည်းကို သုံးပါ"
+ "အထောက်အထားစိစစ်ရန်အတွက် ဤအက်ပ်အား မျက်နှာမှတ်သော့ဖွင့်ခြင်း စက်ပစ္စည်းကိုသုံးခွင့်ပြုသည်"
+ "မျက်နှာမှတ် သော့ဖွင့်ခြင်း""သင့်မျက်နှာကို စာရင်းပြန်သွင်းပါ""ပိုမှတ်မိစေရန် သင့်မျက်နှာကို စာရင်းပြန်သွင်းပါ""မျက်နှာဒေတာ အမှန် မရိုက်ယူနိုင်ပါ၊ ထပ်စမ်းကြည့်ပါ။"
@@ -567,7 +568,7 @@
"ဖုန်းကို ဘယ်ဘက်သို့ရွှေ့ပါ။""ဖုန်းကို ညာဘက်သို့ ရွှေ့ပါ။""သင့်စက်ပစ္စည်းကို တည့်တည့်ကြည့်ပါ။"
- "သင့်မျက်နှာကို မမြင်ရပါ။ ဖုန်းကိုကြည့်ပါ။"
+ "မျက်နှာကို ဖုန်းရှေ့တွင် တည့်အောင်ထားပါ။""လှုပ်လွန်းသည်။ ဖုန်းကို ငြိမ်ငြိမ်ကိုင်ပါ။""သင့်မျက်နှာကို ပြန်စာရင်းသွင်းပါ။""မျက်နှာ မမှတ်သားနိုင်တော့ပါ။ ထပ်စမ်းကြည့်ပါ။"
@@ -576,19 +577,19 @@
"ခေါင်းကို သိပ်မလှည့်ပါနှင့်။""ခေါင်းကို သိပ်မလှည့်ပါနှင့်။""သင့်မျက်နှာကို ကွယ်နေသည့်အရာအားလုံး ဖယ်ပါ။"
- "မျက်နှာပြင်ထိပ်ရှိ အာရုံခံဆင်ဆာကို သန့်ရှင်းပါ။"
+ "အနက်ရောင်ဘားအပါအဝင် ဖန်သားပြင်ထိပ်ကို သန့်ရှင်းရေး လုပ်ပါ""မျက်နှာကို အတည်ပြု၍ မရပါ။ ဟာ့ဒ်ဝဲ မရနိုင်ပါ။"
- "မျက်နှာဖြင့် ထပ်မံ၍ အထောက်အထား စိစစ်ကြည့်ပါ။"
+ "မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို ထပ်စမ်းကြည့်ပါ။""မျက်နှာဒေတာအသစ် သိမ်း၍မရပါ။ အဟောင်းကို အရင်ဖျက်ပါ။"
- "မျက်နှာဆိုင်ရာ ဆောင်ရွက်မှုကို ပယ်ဖျက်လိုက်ပါပြီ"
- "အသုံးပြုသူက မျက်နှာအထောက်အထားစိစစ်မှု မလုပ်တော့ပါ"
+ "မျက်နှာ ဆောင်ရွက်ခြင်းကို ပယ်ဖျက်လိုက်ပါပြီ။"
+ "မှတ်နှာမှတ် သော့ဖွင့်ခြင်းကို အသုံးပြုသူက မလုပ်တော့ပါ။""အကြိမ်များစွာ စမ်းပြီးပါပြီ။ နောက်မှထပ်စမ်းပါ။"
- "စမ်းသပ်ကြိမ် များနေပြီ။ မျက်နှာစိစစ်ခြင်း ပိတ်လိုက်သည်။"
+ "စမ်းသပ်ကြိမ် များနေပြီ။ မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို ပိတ်လိုက်ပါပြီ။""မျက်နှာကို အတည်ပြု၍ မရပါ။ ထပ်စမ်းကြည့်ပါ။"
- "မျက်နှာ အထောက်အထားစိစစ်ခြင်းကို ထည့်သွင်းမထားပါ"
- "ဤစက်ပစ္စည်းတွင် မျက်နှာအထောက်အထား စိစစ်ခြင်းကို သုံး၍မရပါ"
+ "မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို ထည့်သွင်းမထားပါ"
+ "ဤစက်ပစ္စည်းတွင် မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို သုံး၍မရပါ။""မျက်နှာ %d"
@@ -1254,10 +1255,10 @@
"ကွန်ရက်အားလုံးကို ကြည့်ရန် တို့ပါ""ချိတ်ဆက်ရန်""ကွန်ရက်အားလုံး"
- "Wi‑Fi ကွန်ရက်များသို့ ချိတ်ဆက်လိုပါသလား။"
- "%s က အကြံပြုထားသည်"
- "Yes"
- "No"
+ "အကြံပြုထားသည့် Wi‑Fi ကွန်ရက်များ ခွင့်ပြုမလား။"
+ "%s သည် ကွန်ရက်များကို အကြံပြုထားသည်။ စက်သည် အလိုအလျောက် ချိတ်ဆက်နိုင်သည်။"
+ "ခွင့်ပြုရန်"
+ "မလိုပါ""Wi‑Fi ကို အလိုအလျောက် ပြန်ဖွင့်ပေးလိမ့်ပါမည်""သိမ်းဆည်းထားသည့် အရည်အသွေးမြင့်ကွန်ရက်များအနီးသို့ ရောက်ရှိသည့်အခါ""ပြန်မဖွင့်ပါနှင့်"
@@ -1343,7 +1344,7 @@
"ခွင့်ပြုချက်မလိုအပ်ပါ""သင့်အတွက် ပိုက်ဆံကုန်ကျနိုင်ပါသည်""OK"
- "ဤစက်ပစ္စည်းကို USB မှတစ်ဆင့် အားသွင်းနေသည်"
+ "ဤစက်ကို USB ဖြင့် အားသွင်းနေသည်""USB မှတစ်ဆင့် ချိတ်ဆက်ထားသည့် စက်ပစ္စည်းကို အားသွင်းနေသည်""USB ဖြင့် ဖိုင်လွှဲပြောင်းခြင်းကို ဖွင့်ထားသည်""USB မှတစ်ဆင့် PTP ကို အသုံးပြုရန် ဖွင့်ထားသည်"
@@ -1888,8 +1889,8 @@
"အမျိုးအစားမခွဲရသေးပါ""ဤသတိပေးချက်များ၏ အရေးပါမှုကိုသတ်မှတ်ပြီးပါပြီ။""ပါဝင်သည့်လူများကြောင့် အရေးပါပါသည်။"
- "%1$s ကို %2$s ဖြင့်အသုံးပြုသူအသစ်ဖန်တီးခွင့်ပြုမလား။"
- "%1$s ကို %2$s ဖြင့်အသုံးပြုသူအသစ် ဖန်တီးခွင့်ပြုမလား (ဤအကောင့်ဖြင့် အသုံးပြုသူ ရှိနှင့်ပြီးဖြစ်သည်)။"
+ "%2$s ဖြင့်အသုံးပြုသူအသစ်ကို %1$s အား ဖန်တီးခွင့်ပြုလိုပါသလား (ဤအကောင့်ဖြင့် အသုံးပြုသူ ရှိနှင့်ပြီးဖြစ်သည်) ။"
+ "%2$s ဖြင့်အသုံးပြုသူအသစ်ကို %1$s အား ဖန်တီးခွင့်ပြုလိုပါသလား ။""ဘာသာစကားတစ်ခု ထည့်ပါ""ဒေသရွေးချယ်မှု""ဘာသာစကားအမည် ထည့်ပါ"
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 42139422529ced7624b6cc0a344f02e6c526be1e..f6f7bf4e3bdc121872e3e9acc9059f91039325a0 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -95,6 +95,7 @@
"Talepostmeldinger""Wi-Fi-anrop""SIM-status"
+ "SIM-status er satt til høy prioritet""Motpart ba om TTY-modus FULL""Motpart ba om TTY-modus HCO""Motpart ba om TTY-modus VCO"
@@ -225,7 +226,7 @@
"Telefoninnstillinger""Lås skjermen""Slå av"
- "Nødsituasjon"
+ "Nødssituasjon""Feilrapport""Avslutt økten""Skjermdump"
@@ -290,7 +291,7 @@
"Vil du gi <b>%1$s</b> tilgang til kalenderen din?""SMS""sende og lese SMS-meldinger"
- "Vil du la <b>%1$s</b> sende og se SMS-meldinger?"
+ "Vil du la <b>%1$s</b> sende og se tekstmeldinger?""Lagring""åpne bilder, medieinnhold og filer på enheten din""Vil du gi <b>%1$s</b> tilgang til bilder, medier og filer på enheten din?"
@@ -550,11 +551,11 @@
"Ikon for fingeravtrykk"
- "administrere maskinvare for ansiktsautentisering"
+ "administrere maskinvare for Ansiktslås""Lar appen bruke metoder for å legge til og slette ansiktmaler for bruk."
- "bruke maskinvare for ansiktsautentisering"
- "Lar appen bruke maskinvare for ansiktsautentisering til autentisering"
- "Ansiktsautentisering"
+ "bruke maskinvare for Ansiktslås"
+ "Lar appen bruke maskinvare for Ansiktslås til autentisering"
+ "Ansiktslås""Registrer ansiktet ditt på nytt""For å forbedre gjenkjennelse, registrer ansiktet ditt på nytt""Kunne ikke ta opp nøyaktige ansiktsdata Prøv igjen"
@@ -567,7 +568,7 @@
"Flytt telefonen til venstre.""Flytt telefonen til høyre.""Se mer direkte på enheten din."
- "Kan ikke se ansiktet ditt. Se på telefonen."
+ "Hold ansiktet ditt rett foran telefonen.""For mye bevegelse. Hold telefonen stødig.""Registrer ansiktet ditt på nytt.""Kan ikke gjenkjenne ansiktet lenger. Prøv igjen."
@@ -576,19 +577,19 @@
"Vri hodet ditt litt mindre.""Vri hodet ditt litt mindre.""Fjern alt som skjuler ansiktet ditt."
- "Rengjør sensoren på toppkanten av skjermen."
+ "Rengjør den øverste delen av skjermen, inkludert den svarte linjen""Kan ikke bekrefte ansikt. Utilgjengelig maskinvare."
- "Prøv ansiktsautentisering igjen."
+ "Prøv Ansiktslås igjen.""Kan ikke lagre nye ansiktsdata. Slett gamle data først."
- "Ansiktsoperasjonen ble avbrutt"
- "Ansiktsautentiseringen ble avbrutt av brukeren"
+ "Ansikt-operasjonen ble avbrutt."
+ "Ansiktslås ble avbrutt av brukeren.""For mange forsøk. Prøv igjen senere."
- "For mange forsøk. Ansiktsautentisering er slått av."
+ "For mange forsøk. Ansiktslås er slått av.""Kan ikke bekrefte ansiktet. Prøv igjen."
- "Du har ikke konfigurert ansiktsautentisering"
- "Ansiktsautentisering støttes ikke på denne enheten"
+ "Du har ikke konfigurert Ansiktslås."
+ "Ansiktslås støttes ikke på denne enheten""Ansikt %d"
@@ -811,7 +812,7 @@
"Trykk på menyknappen for å låse opp eller ringe et nødnummer.""Trykk på menyknappen for å låse opp.""Tegn mønster for å låse opp"
- "Nødsituasjon"
+ "Nødssituasjon""Tilbake til samtale""Riktig!""Prøv på nytt"
@@ -1254,10 +1255,10 @@
"Trykk for å se alle nettverkene""Koble til""Alle nettverk"
- "Vil du koble til Wi-Fi-nettverk?"
- "Foreslått av %s"
- "Ja"
- "Nei"
+ "Vil du tillate foreslåtte Wi-Fi nettverk?"
+ "%s-foreslåtte nettverk. Enheten kan koble til automatisk."
+ "Tillat"
+ "Nei takk""Wi‑Fi slås på automatisk""Når du er i nærheten av et lagret nettverk av høy kvalitet""Ikke slå på igjen"
@@ -1887,8 +1888,8 @@
"Uten kategori""Du angir viktigheten for disse varslene.""Dette er viktig på grunn av folkene som er involvert."
- "Vil du la %1$s opprette en ny bruker med %2$s?"
- "Vil du la %1$s opprette en ny bruker med %2$s? (Det finnes allerede en bruker med denne kontoen.)"
+ "Vil du la %1$s opprette en ny bruker med %2$s (en bruker med denne kontoen eksisterer allerede)?"
+ "Vil du la %1$s opprette en ny bruker med %2$s?""Legg til et språk""Regionsinnstilling""Skriv inn språknavn"
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 717d7d8c4866caae0aa87a6194310375f1dd4af7..ff0eadee410a001bb747891e761ec31cd84886f4 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -95,6 +95,7 @@
"भ्वाइस मेल सन्देशहरू""Wi-Fi कल""SIM को स्थिति"
+ "उच्च प्राथमिकता रहेको SIM को स्थिति""सहकर्मी अनुरोध गरियो। TTY मोड पूर्ण""सहकर्मी अनुरोध गरियो। TTY मोड HCO""सहकर्मी अनुरोध गरियो। TTY मोड VCO"
@@ -550,11 +551,11 @@
"फिंगरप्रिन्ट आइकन"
- "अनुहार प्रमाणिकरण हार्डवेयर व्यवस्थापन गर्नुहोस्"
+ "फेस अनलकको हार्डवेयर व्यवस्थित गर्नुहोस्""अनुप्रयोगलाई प्रयोगका लागि अनुहार टेम्प्लेट थप्न र मेटाउने तरिका आह्वान गर्न अनुमति दिन्छ।"
- "अनुहार प्रमाणिकरण हार्डवेयर प्रयोग गर्नुहोस्"
- "अनुप्रयोगलाई प्रमाणीकरणका लागि अनुहार प्रमाणीकरण हार्डवेयर प्रयोग गर्न अनुमति दिन्छ"
- "अनुहार प्रमाणीकरण"
+ "फेस अनलकको हार्डवेयर प्रयोग गर्नुहोस्"
+ "अनुप्रयोगलाई प्रमाणीकरणका लागि फेस अनलकको हार्डवेयर प्रयोग गर्न अनुमति दिन्छ"
+ "फेस अनलक""आफ्नो अनुहार पुनः दर्ता गर्नुहोस्""अनुहार पहिचानको गुणस्तर सुधार गर्न कृपया आफ्नो अनुहार पुनः दर्ता गर्नुहोस्""अनुहारको सटीक डेटा खिच्न सकिएन। फेरि प्रयास गर्नुहोस्।"
@@ -567,7 +568,7 @@
"फोन बायाँतिर सार्नुहोस्।""फोन दायाँतिर सार्नुहोस्।""कृपया अझ सीधा गरी आफ्नो स्क्रिनमा हेर्नुहोस्।"
- "तपाईंको अनुहार देखिएन। फोनमा हेर्नुहोस्।"
+ "आफ्नो अनुहार फोनको सीधा अगाडि पार्नुहोस्।""अत्यधिक हल्लियो। फोन स्थिर राख्नुहोस्।""कृपया आफ्नो अनुहार पुनः दर्ता गर्नुहोस्।""अब उप्रान्त अनुहार पहिचान गर्न सकिएन। फेरि प्रयास गर्नुहोस्।"
@@ -576,19 +577,19 @@
"आफ्नो टाउको अलि थोरै घुमाउनुहोस्।""आफ्नो टाउको अलि थोरै घुमाउनुहोस्।""तपाईंको अनुहार लुकाउने सबै कुरा लुकाउनुहोस्।"
- "स्क्रिनको शीर्ष कुनामा रहेको सेन्सर सफा गर्नुहोस्।"
+ "कालो रङको पट्टीलगायत आफ्नो स्क्रिनको माथिल्लो भाग सफा गर्नुहोस्""अनुहार पुष्टि गर्न सकिएन। हार्डवेयर उपलब्ध छैन।"
- "फेरि अनुहारको प्रमाणीकरण गरी हेर्नुहोस्।"
+ "फेरि फेस अनलक प्रयोग गरी हेर्नुहोस्।""अनुहारसम्बन्धी नयाँ डेटा भण्डारण गर्न सकिएन। पहिले कुनै पुरानो डेटा मेटाउनुहोस्।"
- "अनुहार पहिचान गर्ने सुविधा रद्द गरियो"
- "प्रयोगकर्ताले अनुहार प्रमाणीकरण सेवा रद्द गर्नुभयो"
+ "अनुहार पहिचान रद्द गरियो।"
+ "प्रयोगकर्ताले फेस अनलकको कार्य रद्द गर्नुभयो।""धेरैपटक प्रयासहरू भए। पछि फेरि प्रयास गर्नुहोस्।"
- "अत्यधिक प्रयासहरू भए। अनुहार प्रमाणीकरण गर्ने सुविधा असक्षम पारियो।"
+ "अत्यधिक प्रयासहरू भए। फेस अनलक असक्षम पारियो।""अनुहार पुष्टि गर्न सकिएन। फेरि प्रयास गर्नुहोस्।"
- "तपाईंले अनुहार प्रमाणीकरण गर्ने सुविधा सेट अप गर्नुभएको छैन"
- "यस यन्त्रमा अनुहार प्रमाणीकरण गर्ने सुविधा प्रयोग गर्न मिल्दैन"
+ "तपाईंले फेस अनलक सुविधा सेट अप गर्नुभएको छैन।"
+ "यस यन्त्रमा फेस अनलक सुविधा प्रयोग गर्न मिल्दैन।""अनुहार %d"
@@ -1260,10 +1261,10 @@
"सबै नेटवर्कहरू हेर्न ट्याप गर्नुहोस्""जडान गर्नुहोस्""सबै नेटवर्कहरू"
- "Wi-Fi नेटवर्कसँग जोड्ने हो?"
- "%s ले सुझाव दिएको"
- "हो"
- "होइन"
+ "सिफारिस गरिएका Wi‑Fi नेटवर्कहरूलाई अनुमति दिनुहोस्?"
+ "%s ले सिफारिस गरेका नेटवर्कहरू। यन्त्र स्वतः जडान हुन सक्छ।"
+ "अनुमति दिनुहोस्"
+ "पर्दैन, धन्यवाद""Wi‑Fi स्वतः सक्रिय हुनेछ""तपाईं कुनै सुरक्षित गरिएको उच्च गुणस्तरीय नेटवर्कको नजिक हुनुभएको अवस्थामा""फेरि सक्रिय नगर्नुहोला"
@@ -1893,8 +1894,8 @@
"वर्गीकरण नगरिएको""तपाईंले यी सूचनाहरूको महत्त्व सेट गर्नुहोस् ।""यसमा सङ्लग्न भएका मानिसहरूको कारणले गर्दा यो महत्वपूर्ण छ।"
- "%2$s सँगै नयाँ प्रयोगकर्ता सिर्जना गर्न %1$s लाई अनुमति दिने हो?"
- "%2$s सँगै नयाँ प्रयोगकर्ता सिर्जना गर्न %1$s लाई अनुमति दिने (यस खाताको प्रयोगकर्ता पहिले नै अवस्थित छ) ?"
+ "%2$s (यस खाताको प्रयोगकर्ता पहिले नै अवस्थित छ) मा नयाँ प्रयोगकर्ता सिर्जना गर्न %1$s लाई अनुमति दिने हो?"
+ "%2$s मा नयाँ प्रयोगकर्ता सिर्जना गर्न %1$s लाई अनुमति दिने हो?""भाषा थप्नुहोस्""क्षेत्रको प्राथमिकता""भाषाको नाम टाइप गर्नुहोस्"
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index d0dff88d86a7b83bbbd61af16691d6b692153a2c..e27ad0d583ad4ba1281bc70dbdf3683520f7be3f 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -95,6 +95,7 @@
"Voicemailberichten""Bellen via wifi""Simkaartstatus"
+ "Meldingen met hoge prioriteit voor de simkaartstatus""Door peer aangevraagde TTY-modus VOL""Door peer aangevraagde TTY-modus HCO""Door peer aangevraagde TTY-modus VCO"
@@ -550,11 +551,11 @@
"Vingerafdruk-pictogram"
- "hardware voor gezichtsherkenning beheren"
+ "hardware voor ontgrendelen via gezichtsherkenning beheren""Hiermee kan de app methoden aanroepen om gezichtstemplates toe te voegen en te verwijderen voor gebruik."
- "hardware voor gezichtsherkenning gebruiken"
- "Hiermee kan de app hardware voor gezichtsherkenning gebruiken voor verificatie"
- "Gezichtsherkenning"
+ "hardware voor ontgrendelen via gezichtsherkenning gebruiken"
+ "Hiermee kan de app hardware voor ontgrendelen via gezichtsherkenning gebruiken voor verificatie"
+ "Ontgrendelen via gezichtsherkenning""Je gezicht opnieuw registreren""Registreer je gezicht opnieuw om de herkenning te verbeteren""Geen accurate gegevens. Probeer het nog eens."
@@ -567,7 +568,7 @@
"Beweeg je telefoon meer naar links.""Beweeg je telefoon meer naar rechts.""Kijk rechter naar je apparaat."
- "Je gezicht is niet te zien. Kijk naar de telefoon."
+ "Houd je gezicht recht voor de telefoon.""Te veel beweging. Houd je telefoon stil.""Registreer je gezicht opnieuw.""Herkent gezicht niet meer. Probeer het nog eens."
@@ -576,19 +577,19 @@
"Draai je hoofd iets minder.""Draai je hoofd iets minder.""Zorg dat je gezicht volledig zichtbaar is."
- "Maak de sensor bovenaan het scherm schoon."
+ "Reinig de bovenkant van je scherm, inclusief de zwarte balk""Kan gezicht niet verifiëren. Hardware niet beschikbaar."
- "Probeer de gezichtsverificatie opnieuw."
+ "Probeer ontgrendelen via gezichtsherkenning opnieuw.""Kan nieuwe gezichten niet opslaan. Verwijder eerst een oude."
- "Gezichtsbewerking geannuleerd"
- "Gezichtsverificatie geannuleerd door gebruiker"
+ "Bewerking voor gezichtsherkenning geannuleerd."
+ "Ontgrendelen via gezichtsherkenning geannuleerd door gebruiker.""Te veel pogingen. Probeer het later opnieuw."
- "Te veel pogingen. Gezichtsherkenning uitgeschakeld."
+ "Te veel pogingen. Ontgrendelen via gezichtsherkenning uitgeschakeld.""Kan gezicht niet verifiëren. Probeer het nog eens."
- "Je hebt gezichtsverificatie niet ingesteld"
- "Gezichtsverificatie wordt niet ondersteund op dit apparaat"
+ "Je hebt ontgrendelen via gezichtsherkenning niet ingesteld."
+ "Ontgrendelen via gezichtsherkenning wordt niet ondersteund op dit apparaat.""Gezicht %d"
@@ -1254,10 +1255,10 @@
"Tik om alle netwerken te bekijken""Verbinding maken""Alle netwerken"
- "Verbinding maken met wifi-netwerken?"
- "Voorgesteld door %s"
- "Ja"
- "Nee"
+ "Voorgestelde wifi-netwerken toestaan?"
+ "%s heeft netwerken voorgesteld. Apparaat kan automatisch verbinding maken."
+ "Toestaan"
+ "Nee, bedankt""Wifi wordt automatisch ingeschakeld""Wanneer je in de buurt van een opgeslagen netwerk van hoge kwaliteit bent""Niet weer inschakelen"
@@ -1887,8 +1888,8 @@
"Geen categorie""Je stelt het belang van deze meldingen in.""Dit is belangrijk vanwege de betrokken mensen."
- "Toestaan dat %1$s een nieuwe gebruiker met %2$s maakt?"
- "Toestaan dat %1$s een nieuwe gebruiker met %2$s maakt (er is al een gebruiker met dit account)?"
+ "Toestaan dat %1$s een nieuwe gebruiker met %2$s maakt (er is al een gebruiker met dit account)?"
+ "Toestaan dat %1$s een nieuwe gebruiker met %2$s maakt?""Een taal toevoegen""Regiovoorkeur""Typ een taalnaam"
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 93fdbf9b6287df86245425e3aa1613cd2720dfa4..5192adb8ebd53a2999cfdfbf8ab30e5416aa3436 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -95,6 +95,7 @@
"ଭଏସମେଲ୍ ମେସେଜ୍""ୱାଇ-ଫାଇ କଲିଙ୍ଗ""SIM ଷ୍ଟାଟସ୍"
+ "ଉଚ୍ଚ ପ୍ରାଥମିକତା SIM ସ୍ଥିତି""ପୀଆର୍ ଅନୁରୋଧ କରିଥିବା TTY ମୋଡ୍ FULL ଅଟେ""ପୀଅର୍ ଅନୁରୋଧ କରିଥିବା TTY ମୋଡ୍ HCO ଅଟେ""ପୀଅର୍ ଅନୁରୋଧ କରିଥିବା TTY ମୋଡ୍ VCO ଅଟେ"
@@ -550,11 +551,11 @@
"ଆଙ୍ଗୁଠି ଚିହ୍ନ ଆଇକନ୍"
- "ଫେସ୍ ପ୍ରମାଣୀକରଣ ହାର୍ଡୱେର୍ର ପରିଚାଳନା କରନ୍ତୁ"
+ "ଫେସ୍ ଅନ୍ଲକ୍ ହାର୍ଡୱେର୍ ପରିଚାଳନା କରନ୍ତୁ""ବ୍ୟବହାର ପାଇଁ ଆପ୍କୁ ଫେସିଆଲ୍ ଟେମ୍ପଲେଟ୍ ଯୋଡିବା ଓ ଡିଲିଟ୍ ର ପଦ୍ଧତି ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ।"
- "ଫେସ୍ ପ୍ରମାଣୀକରଣ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରନ୍ତୁ"
- "ଫେସ୍ ପ୍ରମାଣୀକରଣ ହାର୍ଡୱେର୍ର ପ୍ରମାଣ ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଅନ୍ତୁ।"
- "ମୁହଁ ପ୍ରାମାଣିକତା"
+ "ଫେସ୍ ଅନ୍ଲକ୍ ହାର୍ଡୱେର୍ ବ୍ୟବହାର କରନ୍ତୁ"
+ "ପ୍ରାମାଣିକତା ପାଇଁ ଫେସ୍ ଅନ୍ଲକ୍ ହାର୍ଡୱେର୍ର ବ୍ୟବହାର ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଅନ୍ତୁ।"
+ "ଫେସ୍ ଅନ୍ଲକ୍""ଆପଣଙ୍କର ମୁହଁ ପୁଣି-ଏନ୍ରୋଲ୍ କରନ୍ତୁ""ଚିହ୍ନଟକରଣକୁ ଉନ୍ନତ କରିବା ପାଇଁ, ଦୟାକରି ଆପଣଙ୍କର ମୁହଁ ପୁଣି-ଏନ୍ରୋଲ୍ କରନ୍ତୁ।""ମୁହଁର ଡାଟା କ୍ୟାପଚର୍ ହେଲାନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"
@@ -567,7 +568,7 @@
"ବାମ ପଟକୁ ଫୋନ୍ ଘୁଞ୍ଚାନ୍ତୁ।""ଡାହାଣ ପଟକୁ ଫୋନ୍ ଘୁଞ୍ଚାନ୍ତୁ।""ଦୟାକରି ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ ସିଧାସଳଖ ଦେଖନ୍ତୁ।"
- "ଆପଣଙ୍କର ମୁହଁ ଦେଖି ପାରୁନାହିଁ। ଫୋନ୍କୁ ଦେଖନ୍ତୁ।"
+ "ଆପଣଙ୍କ ମୁହଁକୁ ଫୋନ୍ ସାମ୍ନାରେ ସିଧାସଳଖ ରଖନ୍ତୁ।""ଅତ୍ୟଧିକ ଅସ୍ଥିର। ଫୋନ୍କୁ ସ୍ଥିର ଭାବେ ଧରନ୍ତୁ।""ଦୟାକରି ଆପଣଙ୍କର ମୁହଁ ପୁଣି-ଏନ୍ରୋଲ୍ କରନ୍ତୁ।""ଆଉ ମୁହଁ ଚିହ୍ନଟ କରିହେଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"
@@ -576,19 +577,19 @@
"ଆପଣଙ୍କର ମୁଣ୍ଡକୁ ଟିକିଏ ବୁଲାନ୍ତୁ।""ଆପଣଙ୍କର ମୁଣ୍ଡକୁ ଟିକିଏ ବୁଲାନ୍ତୁ।""ଆପଣଙ୍କର ମୁହଁ ଲୁଚାଉଥିବା ଜିନିଷକୁ କାଢ଼ି ଦିଅନ୍ତୁ।"
- "ସ୍କ୍ରିନ୍ର ଉପର ପ୍ରାନ୍ତରେ ଥିବା ସେନ୍ସର୍କୁ ଖାଲି କରନ୍ତୁ।"
+ "କଳା ବାର୍ ସମେତ ଆପଣଙ୍କ ସ୍କ୍ରିନ୍ର ଶୀର୍ଷକୁ ସଫା କରନ୍ତୁ""ମୁହଁ ଚିହ୍ନଟ କରିପାରିଲା ନାହିଁ। ହାର୍ଡୱେୟାର୍ ଉପଲବ୍ଧ ନାହିଁ।"
- "ପୁଣି ମୁହଁ ପ୍ରାମାଣିକତା କରନ୍ତୁ।"
+ "ଫେସ୍ ଅନ୍ଲକ୍ ପୁଣି ବ୍ୟବହାର କରି ଦେଖନ୍ତୁ""ନୂଆ ମୁହଁ ଡାଟା ଷ୍ଟୋର୍ ହେବ ନାହିଁ। ପ୍ରଥମେ ପୁରୁଣାକୁ ଡିଲିଟ୍ କରନ୍ତୁ।"
- "ମୁହଁ ପ୍ରମାଣିକିକରଣ ପ୍ରକ୍ରିୟା ବାତିଲ୍ ହୋଇଛି"
- "ଉପଯୋଗକର୍ତ୍ତା ମୁହଁ ପ୍ରମାଣିକିକରଣ ବାତିଲ୍ କରିଛନ୍ତି"
+ "ଫେସ୍ର ଅପରେଶନ୍ କ୍ୟାନ୍ସଲ୍ ହୋଇଗଲା"
+ "ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ଦ୍ୱାରା ଫେସ୍ ଅନଲକ୍ ବାତିଲ୍ କରାଯାଇଛି।""ବାରମ୍ବାର ଚେଷ୍ଟା। ପରେ ପୁଣିଥରେ ଚେଷ୍ଟା କରନ୍ତୁ।"
- "ଅତ୍ୟଧିକ ପ୍ରଚେଷ୍ଟା. ମୁହଁ ପ୍ରମାଣିକିକରଣ ଅକ୍ଷମ ହୋଇଛି।"
+ "ଅତ୍ୟଧିକ ପ୍ରଚେଷ୍ଟା. ଫେସ୍ ଅନ୍ଲକ୍ ଅକ୍ଷମ କରନ୍ତୁ""ମୁହଁ ଚିହ୍ନଟ କରିପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"
- "ଆପଣ ମୁହଁ ପ୍ରମାଣିକିକରଣ ସେଟ୍ ଅପ୍ କରିନାହାଁନ୍ତି"
- "ଏହି ଡିଭାଇସ୍ରେ ମୁହଁ ପ୍ରମାଣିକିକରଣ ସମର୍ଥିତ ନୁହେଁ"
+ "ଆପଣ ଫେସ୍ ଅନ୍ଲକ୍ ସେଟ୍ ଅପ୍ କରିନାହାଁନ୍ତି"
+ "ଏହି ଡିଭାଇସ୍ରେ ଫେସ୍ ଅନ୍ଲକ୍ ସମର୍ଥିତ ନୁହେଁ।""%dଙ୍କ ଫେସ୍"
@@ -1254,10 +1255,10 @@
"ସମସ୍ତ ନେଟ୍ୱର୍କ ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ""କନେକ୍ଟ କରନ୍ତୁ""ସମସ୍ତ ନେଟ୍ୱର୍କ"
- "ୱାଇ-ଫାଇ ନେଟ୍ୱର୍କଗୁଡ଼ିକୁ ସଂଯୁକ୍ତ କରିବେ?"
- "%sଙ୍କ ଦ୍ୱାରା ପ୍ରସ୍ତାବିତ"
- "ହଁ"
- "ନାହିଁ"
+ "ପ୍ରସ୍ତାବିତ ୱାଇ-ଫାଇ ନେଟ୍ୱାର୍କଗୁଡ଼ିକୁ ଅନୁମତି ଦେବେ?"
+ "%s ପ୍ରସ୍ତାବିତ ନେଟ୍ୱାର୍କଗୁଡ଼ିକ। ଡିଭାଇସ୍ ହୁଏତ ସ୍ୱଚାଳିତ ଭାବେ ସଂଯୋଗ ହୋଇପାରେ।"
+ "ଅନୁମତି ଦିଅନ୍ତୁ"
+ "ନାହିଁ, ଥାଉ""ୱାଇ-ଫାଇ ସ୍ୱଚାଳିତ ଭାବେ ଅନ୍ ହେବ""ଆପଣ ଏକ ଉଚ୍ଚ-କ୍ୱାଲିଟୀ ବିଶିଷ୍ଟ ସେଭ୍ କରାଯାଇଥିବା ନେଟ୍ୱର୍କ ପାଖରେ ଥିବା ସମୟରେ""ପୁଣି ଅନ୍ କରନ୍ତୁ ନାହିଁ"
@@ -1342,7 +1343,7 @@
"କୌଣସି ଅନୁମତିର ଆବଶ୍ୟକତା ନାହିଁ""ଶୁଳ୍କ ଲାଗୁ ହୋଇପାରେ""ଠିକ୍ ଅଛି"
- "USB ମାଧ୍ୟମରେ ଏହି ଡିଭାଇସ୍କୁ ଚାର୍ଜ କରନ୍ତୁ"
+ "USB ମାଧ୍ୟମରେ ଏହି ଡିଭାଇସ୍ ଚାର୍ଜ ହେଉଛି""USB ମାଧ୍ୟମରେ ଯୋଡ଼ାଯାଇଥିବା ଡିଭାଇସ୍ ଚାର୍ଜ ହେଉଛି""USB ଫାଇଲ୍ ଟ୍ରାନ୍ସଫର୍ ଚାଲୁ କରାଗଲା""USB ମାଧ୍ୟମରେ PTPକୁ ଚାଲୁ କରାଗଲା"
@@ -1658,7 +1659,7 @@
"ଆପଣଙ୍କ ଅନଲକ୍ ପାଟର୍ନକୁ ଆପଣ %1$d ଥର ଭୁଲ ଭାବେ ଅଙ୍କନ କରିଛନ୍ତି। ଆଉ %2$dଟି ଭୁଲ ପ୍ରୟାସ ପରେ ଏକ ଇମେଲ୍ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ନିଜ ଫୋନ୍କୁ ଅନଲକ୍ କରିବା ପାଇଁ କୁହାଯିବ।\n\n%3$d ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"" — ""ବାହାର କରନ୍ତୁ"
- "ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିସ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।"
+ "ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିଶ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।""ଆକ୍ସେସବିଲିଟି ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରିବେ?""ସର୍ଟକଟ୍ ଅନ୍ ଥିବା ବେଳେ, ଉଭୟ ଭଲ୍ୟୁମ୍ ବଟନ୍ 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇବା ଦ୍ୱାରା ଆକ୍ସେସବିଲିଟି ବୈଶିଷ୍ଟ ଆରମ୍ଭ ହେବ।\n\n ସମ୍ପ୍ରତି ଆକ୍ସେସବିଲିଟି ବୈଶିଷ୍ଟ୍ୟ:\n %1$s\n\n ସେଟିଙ୍ଗ ଓ ଆକ୍ସେସବିଲିଟିରେ ଆପଣ ବୈଶିଷ୍ଟ୍ୟ ବଦଳାଇ ପାରିବେ।""ଶର୍ଟକଟ୍ ବନ୍ଦ କରନ୍ତୁ"
@@ -1887,8 +1888,8 @@
"ଅବର୍ଗୀକୃତ""ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ପ୍ରମୁଖତା ଆପଣ ସେଟ୍ କରନ୍ତି।""ସମ୍ପୃକ୍ତ ଲୋକଙ୍କ କାରଣରୁ ଏହା ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଅଟେ।"
- "%2$s ସହ ଏକ ନୂଆ ୟୁଜର୍ ତିଆରି କରିବା ପାଇଁ %1$sକୁ ଅନୁମତି ଦେବେ?"
- "%2$s ସହ ଏକ ନୂଆ ୟୁଜର୍ ତିଆରି କରିବାକୁ %1$sକୁ ଅନୁମତି ଦେବେ (ଏହି ଆକାଉଣ୍ଟରେ ଜଣେ ୟୁଜର୍ ପୂର୍ବରୁ ରହିଛନ୍ତି)?"
+ "%1$sରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ %2$sକୁ (ପୂର୍ବରୁ ଏହି ଆକାଉଣ୍ଟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନାମରେ ଅଛି) ଅନୁମତି ଦେବେ?"
+ "%1$sରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ %2$sକୁ ଅନୁମତି ଦେବେ?""ଏକ ଭାଷା ଯୋଡ଼ନ୍ତୁ""ପସନ୍ଦର ଅଞ୍ଚଳ""ଭାଷାର ନାମ ଟାଇପ୍ କରନ୍ତୁ"
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index f605c3c50f6e19e117764e499b0db55382204f64..fe0fada71894a0dea791327671228a8690a16369 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -95,6 +95,7 @@
"ਵੌਇਸਮੇਲ ਸੁਨੇਹੇ""ਵਾਈ-ਫਾਈ ਕਾਲਿੰਗ""ਸਿਮ ਅਵਸਥਾ"
+ "ਉੱਚ ਤਰਜੀਹੀ ਸਿਮ ਸਥਿਤੀ""ਪੀਅਰ ਨੇ TTY Mode FULL ਦੀ ਬੇਨਤੀ ਕੀਤੀ""ਪੀਅਰ ਨੇ TTY Mode HCO ਦੀ ਬੇਨਤੀ ਕੀਤੀ""ਪੀਅਰ ਨੇ TTY Mode VCO ਦੀ ਬੇਨਤੀ ਕੀਤੀ"
@@ -550,11 +551,11 @@
"ਫਿੰਗਰਪ੍ਰਿੰਟ ਪ੍ਰਤੀਕ"
- "ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਹਾਰਡਵੇਅਰ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"
+ "ਚਿਹਰਾ ਅਣਲਾਕ ਹਾਰਡਵੇਅਰ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ""ਐਪ ਨੂੰ ਵਰਤਣ ਲਈ ਚਿਹਰਾ ਟੈਮਪਲੇਟ ਸ਼ਾਮਲ ਕਰਨ ਜਾਂ ਮਿਟਾਉਣ ਦੀਆਂ ਵਿਧੀਆਂ ਦੀ ਬੇਨਤੀ ਕਰਨ ਦਿੰਦੀ ਹੈ।"
- "ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਹਾਰਡਵੇਅਰ ਵਰਤੋ"
- "ਐਪ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਹਾਰਡਵੇਅਰ ਵਰਤਣ ਦਿੰਦੀ ਹੈ"
- "ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ"
+ "ਚਿਹਰਾ ਅਣਲਾਕ ਹਾਰਡਵੇਅਰ ਵਰਤੋ"
+ "ਐਪ ਨੂੰ ਪ੍ਰਮਾਣੀਕਰਨ ਲਈ ਚਿਹਰਾ ਅਣਲਾਕ ਹਾਰਡਵੇਅਰ ਵਰਤਣ ਦਿੰਦੀ ਹੈ"
+ "ਚਿਹਰਾ ਅਣਲਾਕ""ਆਪਣਾ ਚਿਹਰਾ ਮੁੜ-ਦਰਜ ਕਰੋ""ਪਛਾਣ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ, ਕਿਰਪਾ ਕਰਕੇ ਆਪਣੇ ਚਿਹਰੇ ਨੂੰ ਮੁੜ-ਦਰਜ ਕਰੋ""ਸਟੀਕ ਚਿਹਰਾ ਡਾਟਾ ਕੈਪਚਰ ਨਹੀਂ ਹੋਇਆ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"
@@ -567,7 +568,7 @@
"ਫ਼ੋਨ ਨੂੰ ਖੱਬੇ ਪਾਸੇ ਲਿਜਾਓ।""ਫ਼ੋਨ ਨੂੰ ਸੱਜੇ ਪਾਸੇ ਲਿਜਾਓ।""ਕਿਰਪਾ ਕਰਕੇ ਸਿੱਧਾ ਆਪਣੇ ਡੀਵਾਈਸ ਵੱਲ ਦੇਖੋ।"
- "ਤੁਹਾਡਾ ਚਿਹਰਾ ਨਹੀਂ ਦਿਸ ਰਿਹਾ। ਫ਼ੋਨ ਵੱਲ ਦੇਖੋ।"
+ "ਆਪਣਾ ਚਿਹਰਾ ਫ਼ੋਨ ਦੇ ਬਿਲਕੁਲ ਸਾਹਮਣੇ ਰੱਖੋ।""ਬਹੁਤ ਜ਼ਿਆਦਾ ਹਿਲਜੁਲ। ਫ਼ੋਨ ਨੂੰ ਸਥਿਰ ਰੱਖੋ।""ਕਿਰਪਾ ਕਰਕੇ ਆਪਣਾ ਚਿਹਰਾ ਦੁਬਾਰਾ ਦਰਜ ਕਰੋ।""ਹੁਣ ਚਿਹਰਾ ਪਛਾਣਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"
@@ -576,19 +577,19 @@
"ਆਪਣਾ ਸਿਰ ਥੋੜਾ ਜਿਹਾ ਝੁਕਾਓ।""ਆਪਣਾ ਸਿਰ ਥੋੜਾ ਜਿਹਾ ਝੁਕਾਓ।""ਤੁਹਾਡਾ ਚਿਹਰਾ ਲੁਕਾਉਣ ਵਾਲੀ ਕੋਈ ਵੀ ਚੀਜ਼ ਹਟਾਓ।"
- "ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰਲੇ ਕਿਨਾਰੇ ਦਾ ਸੈਂਸਰ ਸਾਫ਼ ਕਰੋ।"
+ "ਕਾਲੀ ਪੱਟੀ ਸਮੇਤ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਸਿਖਰ ਨੂੰ ਸਾਫ਼ ਕਰੋ""ਚਿਹਰੇ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਹੋ ਸਕੀ। ਹਾਰਡਵੇਅਰ ਉਪਲਬਧ ਨਹੀਂ।"
- "ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਦੁਬਾਰਾ ਵਰਤ ਕੇ ਦੇਖੋ।"
+ "ਚਿਹਰਾ ਅਣਲਾਕ ਦੁਬਾਰਾ ਵਰਤ ਕੇ ਦੇਖੋ।""ਨਵਾਂ ਚਿਹਰਾ ਡਾਟਾ ਸਟੋਰ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਪਹਿਲਾਂ ਪੁਰਾਣਾ ਹਟਾਓ।"
- "ਚਿਹਰਾ ਪਛਾਣਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਰੱਦ ਕੀਤੀ ਗਈ"
- "ਵਰਤੋਂਕਾਰ ਵੱਲੋਂ ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਨੂੰ ਰੱਦ ਕੀਤਾ ਗਿਆ"
+ "ਚਿਹਰਾ ਪਛਾਣਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਰੱਦ ਕੀਤੀ ਗਈ।"
+ "ਵਰਤੋਂਕਾਰ ਨੇ ਚਿਹਰਾ ਅਣਲਾਕ ਰੱਦ ਕੀਤਾ।""ਹੱਦੋਂ ਵੱਧ ਕੋਸ਼ਿਸ਼ਾਂ। ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"
- "ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ। ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਬੰਦ ਕੀਤਾ ਗਿਆ।"
+ "ਬਹੁਤ ਸਾਰੀਆਂ ਕੋਸ਼ਿਸ਼ਾਂ। ਚਿਹਰਾ ਅਣਲਾਕ ਬੰਦ ਕੀਤਾ ਗਿਆ।""ਚਿਹਰੇ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"
- "ਤੁਸੀਂ ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਹੈ"
- "ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਰਨ ਦੀ ਸੁਵਿਧਾ ਨਹੀਂ ਹੈ"
+ "ਤੁਸੀਂ ਚਿਹਰਾ ਅਣਲਾਕ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਹੈ।"
+ "ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਚਿਹਰਾ ਅਣਲਾਕ ਦੀ ਸੁਵਿਧਾ ਨਹੀਂ ਹੈ।""ਚਿਹਰਾ %d"
@@ -1254,10 +1255,10 @@
"ਸਾਰੇ ਨੈੱਟਵਰਕਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ""ਕਨੈਕਟ ਕਰੋ""ਸਾਰੇ ਨੈੱਟਵਰਕ"
- "ਕੀ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕਾਂ ਨਾਲ ਕਨੈਕਟ ਕਰਨਾ ਹੈ?"
- "%s ਵਲੋਂ ਸੁਝਾਇਆ ਗਿਆ"
- "ਹਾਂ"
- "ਨਹੀਂ"
+ "ਕੀ ਸੁਝਾਏ ਵਾਈ-ਫਾਈ ਨੈੱਟਵਰਕ ਵਰਤਣੇ ਹਨ?"
+ "%s ਦੇ ਸੁਝਾਏ ਨੈੱਟਵਰਕ। ਸ਼ਾਇਦ ਡੀਵਾਈਸ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਕਨੈਕਟ ਹੋਵੇ।"
+ "ਵਰਤਣ ਦਿਓ"
+ "ਨਹੀਂ ਧੰਨਵਾਦ""ਵਾਈ‑ਫਾਈ ਸਵੈਚਲਿਤ ਤੌਰ \'ਤੇ ਚੱਲ ਪਵੇਗਾ""ਜਦੋਂ ਤੁਸੀਂ ਕਿਸੇ ਰੱਖਿਅਤ ਕੀਤੇ ਉੱਚ-ਗੁਣਵੱਤਾ ਵਾਲੇ ਨੈੱਟਵਰਕ ਦੇ ਨੇੜੇ ਹੋਵੋ""ਵਾਪਸ ਚਾਲੂ ਨਾ ਕਰੋ"
@@ -1343,7 +1344,7 @@
"ਕੋਈ ਅਨੁਮਤੀਆਂ ਲੁੜੀਂਦੀਆਂ ਨਹੀਂ""ਇਸ ਨਾਲ ਤੁਹਾਨੂੰ ਖਰਚਾ ਪੈ ਸਕਦਾ ਹੈ""ਠੀਕ"
- "USB ਰਾਹੀਂ ਇਸ ਡੀਵਾਈਸ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"
+ "ਇਹ ਡੀਵਾਈਸ USB ਰਾਹੀਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ""ਕਨੈਕਟ ਕੀਤਾ ਡੀਵਾਈਸ USB ਰਾਹੀਂ ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ""USB ਫ਼ਾਈਲ ਟ੍ਰਾਂਸਫ਼ਰ ਚਾਲੂ ਹੈ""USB ਰਾਹੀਂ PTP ਚਾਲੂ ਹੈ"
@@ -1888,8 +1889,8 @@
"ਗੈਰ-ਸ਼੍ਰੇਣੀਕਿਰਤ""ਤੁਸੀਂ ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਦੀ ਮਹੱਤਤਾ ਸੈੱਟ ਕੀਤੀ।""ਇਹ ਸ਼ਾਮਲ ਲੋਕਾਂ ਦੇ ਕਾਰਨ ਮਹੱਤਵਪੂਰਨ ਹੈ।"
- "ਕੀ %1$s ਨੂੰ %2$s ਨਾਲ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਮਨਜ਼ੂਰੀ ਦੇਣੀ ਹੈ?"
- "ਕੀ %1$s ਨੂੰ %2$s ਨਾਲ ਇੱਕ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਆਗਿਆ ਦੇਣੀ ਹੈ (ਇਸ ਖਾਤੇ ਨਾਲ ਇੱਕ ਵਰਤੋਂਕਾਰ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮੌਜੂਦ ਹੈ) ?"
+ "ਕੀ %1$s ਨੂੰ %2$s ਨਾਲ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ (ਇਸ ਖਾਤੇ ਨਾਲ ਇੱਕ ਵਰਤੋਂਕਾਰ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮੌਜੂਦ ਹੈ)?"
+ "ਕੀ %1$s ਨੂੰ %2$s ਨਾਲ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?""ਇੱਕ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ""ਖੇਤਰ ਤਰਜੀਹ""ਭਾਸ਼ਾ ਨਾਮ ਟਾਈਪ ਕਰੋ"
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 99f448b6ad7d93de2953ef43b1c072131907a60a..c4d32179d398d86c118e6149dab23dec75bfbf29 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -97,6 +97,7 @@
"Wiadomości poczty głosowej""Połączenia przez Wi-Fi""Stan karty SIM"
+ "Stan karty SIM – wysoki priorytet""Drugie urządzenie zażądało trybu „TTY pełny”""Drugie urządzenie zażądało trybu „TTY HCO”""Drugie urządzenie zażądało trybu „TTY VCO”"
@@ -556,11 +557,11 @@
"Ikona odcisku palca"
- "zarządzanie sprzętem do uwierzytelniania za pomocą twarzy"
+ "zarządzanie sprzętem do rozpoznawania twarzy""Zezwala na aktywowanie przez aplikację metody dodawania i usuwania szablonów twarzy."
- "używanie sprzętu do uwierzytelniania za pomocą twarzy"
- "Zezwala na używanie przez aplikację sprzętu do analizy twarzy na potrzeby uwierzytelniania"
- "Uwierzytelnianie twarzą"
+ "używanie sprzętu do rozpoznawania twarzy"
+ "Zezwala na używanie przez aplikację sprzętu do rozpoznawania twarzy w uwierzytelniania"
+ "Rozpoznanie twarzy""Zarejestruj swoją twarz ponownie""Aby poprawić rozpoznawanie, ponownie zarejestruj swoją twarz""Nie udało się zarejestrować danych twarzy. Spróbuj ponownie."
@@ -573,7 +574,7 @@
"Przesuń telefon w lewo.""Przesuń telefon w prawo.""Patrz prosto na urządzenie."
- "Nie widzę Twojej twarzy. Spójrz na telefon."
+ "Ustaw twarz dokładnie na wprost telefonu.""Telefon się porusza. Trzymaj go nieruchomo.""Zarejestruj swoją twarz ponownie.""Nie można już rozpoznać twarzy. Spróbuj ponownie."
@@ -582,19 +583,19 @@
"Trochę mniej obróć głowę.""Trochę mniej obróć głowę.""Usuń wszystko, co zasłania Ci twarz."
- "Wyczyść czujnik na górnej krawędzi ekranu."
+ "Wyczyść górną krawędź ekranu, w tym czarny pasek""Nie można zweryfikować twarzy. Sprzęt niedostępny."
- "Spróbuj uwierzytelniania twarzą ponownie."
+ "Spróbuj rozpoznania twarzy ponownie.""Nie można przechowywać nowych danych twarzy. Usuń stare."
- "Analiza twarzy została anulowana"
- "Użytkownik anulował uwierzytelnianie twarzą"
+ "Analiza twarzy została anulowana."
+ "Użytkownik anulował rozpoznanie twarzy.""Zbyt wiele prób. Spróbuj ponownie później."
- "Zbyt wiele prób. Uwierzytelnianie twarzą zostało wyłączone."
+ "Zbyt wiele prób. Rozpoznanie twarzy zostało wyłączone.""Nie można zweryfikować twarzy. Spróbuj ponownie."
- "Uwierzytelnianie twarzą nie jest skonfigurowane"
- "To urządzenie nie obsługuje uwierzytelniania twarzą"
+ "Rozpoznanie twarzy nie jest skonfigurowane."
+ "To urządzenie nie obsługuje rozpoznania twarzy.""Twarz %d"
@@ -1298,10 +1299,10 @@
"Kliknij, by zobaczyć wszystkie sieci""Połącz""Wszystkie sieci"
- "Nawiązywać połączenia z sieciami Wi-Fi?"
- "Sugestia: %s"
- "Tak"
- "Nie"
+ "Zezwalać na sugerowane sieci Wi‑Fi?"
+ "Sugerowane sieci: %s. Urządzenie może łączyć się automatycznie."
+ "Zezwól"
+ "Nie, dziękuję""Wi‑Fi włączy się automatycznie""Gdy znajdziesz się w pobliżu zapisanej sieci o mocnym sygnale""Nie włączaj ponownie"
@@ -1711,7 +1712,7 @@
"Gdy skrót jest włączony, jednoczesne naciśnięcie przez trzy sekundy obu klawiszy sterowania głośnością uruchomi funkcję ułatwień dostępu.\n\nBieżąca funkcja ułatwień dostępu:\n%1$s\n\nFunkcję możesz zmienić, wybierając Ustawienia > Ułatwienia dostępu.""Wyłącz skrót""Użyj skrótu"
- "Inwersja kolorów"
+ "Odwrócenie kolorów""Korekcja kolorów""Skrót ułatwień dostępu wyłączył usługę %1$s""Skrót ułatwień dostępu wyłączył usługę %1$s"
@@ -1955,8 +1956,8 @@
"Bez kategorii""Ustawiłeś ważność tych powiadomień.""Ta wiadomość jest ważna ze względu na osoby uczestniczące w wątku."
- "Zezwalasz aplikacji %1$s na utworzenie nowego użytkownika dla konta %2$s?"
- "Zezwalasz aplikacji %1$s na utworzenie nowego użytkownika dla konta %2$s)? Użytkownik z tym kontem już istnieje."
+ "Zezwolić aplikacji %1$s na utworzenie nowego użytkownika dla konta %2$s (użytkownik dla tego konta już istnieje)?"
+ "Zezwolić aplikacji %1$s na utworzenie nowego użytkownika dla konta %2$s?""Dodaj język""Ustawienie regionu""Wpisz nazwę języka"
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 4f24abcd2d722e72bdcc2b995091f2cf5cc5e66d..d239d7693cd1deb52b7a3682af0e6c9a13335c9d 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -95,6 +95,7 @@
"Mensagens do correio de voz""Chamadas por Wi-Fi""Status do chip"
+ "Status de prioridade alta do chip""TTD modo COMPLETO solicitado""TTD modo HCO solicitado""TTD modo VCO solicitado"
@@ -550,11 +551,11 @@
"Ícone de impressão digital"
- "gerenciar hardware de autenticação facial"
+ "gerenciar hardware de desbloqueio facial""Permite que o app execute métodos para adicionar e excluir modelos de rosto para uso."
- "usar hardware de autenticação facial"
- "Permite que o app use o hardware de autenticação facial para autenticação"
- "Autenticação facial"
+ "usar hardware de desbloqueio facial"
+ "Permite que o app use o hardware de desbloqueio facial para autenticação"
+ "Desbloqueio facial""Registre seu rosto novamente""Para melhorar o reconhecimento, registre seu rosto novamente""Dados precisos não capturados. Tente novamente."
@@ -567,7 +568,7 @@
"Mova o smartphone para a esquerda.""Mova o smartphone para a direita.""Olhe mais diretamente para o dispositivo."
- "Não é possível ver o rosto. Olhe para o telefone."
+ "Deixe o rosto diretamente na frente do smartphone.""Muito movimento. Não mova o smartphone.""Registre seu rosto novamente.""O rosto não é mais reconhecido. Tente novamente."
@@ -576,19 +577,19 @@
"Incline a cabeça um pouco menos.""Incline a cabeça um pouco menos.""Remova tudo que esteja ocultando seu rosto."
- "Limpe o sensor na borda superior da tela."
+ "Limpe a parte superior da tela, inclusive a barra preta""Impossível verificar rosto. Hardware indisponível."
- "Tente realizar a autenticação facial novamente."
+ "Tente usar o desbloqueio facial novamente.""Não é possível salvar dados faciais. Exclua dados antigos."
- "Operação facial cancelada"
- "Autenticação facial cancelada pelo usuário"
+ "Operação facial cancelada."
+ "Desbloqueio facial cancelado pelo usuário.""Excesso de tentativas. Tente novamente mais tarde."
- "Muitas tentativas. Autenticação facial desativada."
+ "Muitas tentativas. Desbloqueio facial desativado.""Não é possível verificar o rosto. Tente novamente."
- "Autenticação facial não configurada"
- "A autenticação facial não é permitida neste dispositivo"
+ "O desbloqueio facial não foi configurado."
+ "O desbloqueio facial não é compatível com este dispositivo.""Rosto %d"
@@ -1254,10 +1255,10 @@
"Toque para ver todas as redes""Conectar""Todas as redes"
- "Conectar a redes Wi-Fi?"
- "Sugerido por %s"
- "Sim"
- "Não"
+ "Permitir redes Wi-Fi sugeridas?"
+ "Redes sugeridas pelo app %s. O dispositivo pode se conectar automaticamente."
+ "Permitir"
+ "Não""O Wi‑Fi será ativado automaticamente""Quando você estiver perto de uma rede salva de alta qualidade""Não ativar novamente"
@@ -1475,7 +1476,7 @@
"Enviar""O app para carro está sendo usado""Toque para sair do app para carro."
- "Vínculo ou ponto de acesso ativo"
+ "Ponto de acesso ou tethering ativo""Toque para configurar.""Tethering desativado""Fale com seu administrador para saber detalhes"
@@ -1669,8 +1670,8 @@
"O atalho de acessibilidade desativou o %1$s""Toque nos dois botões de volume e os mantenha pressionados por três segundo para usar o %1$s""Escolha um serviço a ser usado quando você toca no botão Acessibilidade:"
- "Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"
- "Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"
+ "Escolha um serviço para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"
+ "Escolha um serviço para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):""Para alternar entre serviços, toque no botão de acessibilidade e mantenha-o pressionado.""Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos sem soltar.""Para alternar entre serviços, deslize de baixo para cima na tela com três dedos sem soltar."
@@ -1887,8 +1888,8 @@
"Sem classificação""Você definiu a importância dessas notificações.""Isso é importante por causa das pessoas envolvidas."
- "Permitir que %1$s crie um novo usuário com %2$s?"
- "Permitir que %1$s crie um novo usuário com %2$s (já existe um usuário com essa conta)?"
+ "Permitir que o app %1$s crie um novo usuário com %2$s (já existe um usuário com essa conta)?"
+ "Permitir que o app %1$s crie um novo usuário com %2$s?""Adicionar um idioma""Preferência de região""Digitar nome do idioma"
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index c4ae520d75a5fb1316b2969e8ca649be3cc4e9ab..edcf3c77b8df6d5c148fb91b30c0c1b14d5a6555 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -95,6 +95,7 @@
"Mensagens de correio de voz""Chamadas Wi-Fi""Estado do SIM"
+ "Estado do SIM de elevada prioridade""O par solicitou o modo COMPLETO de teletipo""O par solicitou o modo HCO de teletipo""O par solicitou o modo VCO de teletipo"
@@ -228,7 +229,7 @@
"Emergência""Relatório de erros""Terminar sessão"
- "Captura de ecrã"
+ "Capt. ecrã""Relatório de erro""Será recolhida informação sobre o estado atual do seu dispositivo a enviar através de uma mensagem de email. Demorará algum tempo até que o relatório de erro esteja pronto para ser enviado. Aguarde um pouco.""Relatório interativo"
@@ -550,11 +551,11 @@
"Ícone de impressão digital"
- "gerir hardware de autenticação facial"
+ "gerir hardware de Desbloqueio Através do Rosto""Permite à aplicação invocar métodos para adicionar e eliminar modelos faciais para uso."
- "utilizar hardware de autenticação facial"
- "Permite que a aplicação utilize hardware de autenticação facial para autenticação."
- "Autenticação facial"
+ "utilizar hardware de Desbloqueio Através do Rosto"
+ "Permite que a aplicação utilize hardware de Desbloqueio Através do Rosto para autenticação"
+ "Desbloqueio Através do Rosto""Volte a inscrever o seu rosto""Para melhorar o reconhecimento, volte a inscrever o seu rosto.""Imp. capt. dados rosto precisos. Tente novamente."
@@ -567,7 +568,7 @@
"Mova o telemóvel para a esquerda.""Mova o telemóvel para a direita.""Olhe mais diretamente para o dispositivo."
- "Não consigo ver o rosto. Olhe para o telemóvel."
+ "Posicione o rosto em frente ao telemóvel.""Demasiado movimento. Mantenha o telemóvel firme.""Volte a inscrever o rosto.""Impossível reconhecer o rosto. Tente novamente."
@@ -576,19 +577,19 @@
"Rode a cabeça um pouco menos.""Rode a cabeça um pouco menos.""Remova tudo o que esteja a ocultar o seu rosto."
- "Limpe o sensor na extremidade superior do ecrã."
+ "Limpe a parte superior do ecrã, incluindo a barra preta.""Não pode validar o rosto. Hardware não disponível."
- "Tente efetuar a autenticação facial novamente."
+ "Experimente de novo o Desbloqueio Através do Rosto""Não pode guardar novos dados de rostos. Elimine um antigo."
- "Operação de rosto cancelada."
- "Autenticação facial cancelada pelo utilizador."
+ "Operação de rosto cancelada."
+ "Desbloqueio Através do Rosto cancelado pelo utilizador""Demasiadas tentativas. Tente novamente mais tarde."
- "Demasiadas tentativas. Autenticação facial desativada."
+ "Demasiadas tentativas. O Desbloqueio Através do Rosto está desativado.""Não é possível validar o rosto. Tente novamente."
- "Não configurou a autenticação facial."
- "A autenticação facial não é suportada neste dispositivo."
+ "Não configurou o Desbloqueio Através do Rosto."
+ "Desbloqueio Através do Rosto não suportado neste dispositivo.""Rosto %d"
@@ -1254,10 +1255,10 @@
"Toque para ver todas as redes""Ligar""Todas as redes"
- "Pretende estabelecer ligação a redes Wi-Fi?"
- "Sugerida por %s"
- "Sim"
- "Não"
+ "Pretende permitir redes Wi-Fi sugeridas?"
+ "Redes sugeridas por %s. O dispositivo pode estabelecer ligação automaticamente."
+ "Permitir"
+ "Não, obrigado""O Wi‑Fi será ativado automaticamente""Quando estiver próximo de uma rede de alta qualidade guardada.""Não reativar"
@@ -1354,7 +1355,7 @@
"Acessório de áudio analógico detetado""O dispositivo ligado não é compatível com este telemóvel. Toque para saber mais.""Depuração USB ligada"
- "Toque para desativar a depuração USB."
+ "Toque para desativar a depuração USB""Selecione para desativar a depuração por USB.""Modo de estrutura de teste ativado""Efetue uma reposição de dados de fábrica para desativar o Modo de estrutura de teste."
@@ -1505,7 +1506,7 @@
"Eliminar os itens""Anular as eliminações""Não fazer nada por agora"
- "Selecionar uma conta"
+ "Selecione uma conta""Adicionar uma conta""Adicionar conta""Aumentar"
@@ -1887,8 +1888,8 @@
"Sem categoria""Definiu a importância destas notificações.""É importante devido às pessoas envolvidas."
- "Pretende permitir que o %1$s crie um novo utilizador com %2$s?"
- "Pretende permitir que o %1$s crie um novo utilizador com %2$s (já existe um utilizador com esta conta)?"
+ "Pretende permitir que a aplicação %1$s crie um novo utilizador com a conta %2$s (já existe um utilizador com esta conta)?"
+ "Pretende permitir que a aplicação %1$s crie um novo utilizador com a conta %2$s?""Adicionar um idioma""Preferência de região""Intr. nome do idioma"
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 4f24abcd2d722e72bdcc2b995091f2cf5cc5e66d..d239d7693cd1deb52b7a3682af0e6c9a13335c9d 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -95,6 +95,7 @@
"Mensagens do correio de voz""Chamadas por Wi-Fi""Status do chip"
+ "Status de prioridade alta do chip""TTD modo COMPLETO solicitado""TTD modo HCO solicitado""TTD modo VCO solicitado"
@@ -550,11 +551,11 @@
"Ícone de impressão digital"
- "gerenciar hardware de autenticação facial"
+ "gerenciar hardware de desbloqueio facial""Permite que o app execute métodos para adicionar e excluir modelos de rosto para uso."
- "usar hardware de autenticação facial"
- "Permite que o app use o hardware de autenticação facial para autenticação"
- "Autenticação facial"
+ "usar hardware de desbloqueio facial"
+ "Permite que o app use o hardware de desbloqueio facial para autenticação"
+ "Desbloqueio facial""Registre seu rosto novamente""Para melhorar o reconhecimento, registre seu rosto novamente""Dados precisos não capturados. Tente novamente."
@@ -567,7 +568,7 @@
"Mova o smartphone para a esquerda.""Mova o smartphone para a direita.""Olhe mais diretamente para o dispositivo."
- "Não é possível ver o rosto. Olhe para o telefone."
+ "Deixe o rosto diretamente na frente do smartphone.""Muito movimento. Não mova o smartphone.""Registre seu rosto novamente.""O rosto não é mais reconhecido. Tente novamente."
@@ -576,19 +577,19 @@
"Incline a cabeça um pouco menos.""Incline a cabeça um pouco menos.""Remova tudo que esteja ocultando seu rosto."
- "Limpe o sensor na borda superior da tela."
+ "Limpe a parte superior da tela, inclusive a barra preta""Impossível verificar rosto. Hardware indisponível."
- "Tente realizar a autenticação facial novamente."
+ "Tente usar o desbloqueio facial novamente.""Não é possível salvar dados faciais. Exclua dados antigos."
- "Operação facial cancelada"
- "Autenticação facial cancelada pelo usuário"
+ "Operação facial cancelada."
+ "Desbloqueio facial cancelado pelo usuário.""Excesso de tentativas. Tente novamente mais tarde."
- "Muitas tentativas. Autenticação facial desativada."
+ "Muitas tentativas. Desbloqueio facial desativado.""Não é possível verificar o rosto. Tente novamente."
- "Autenticação facial não configurada"
- "A autenticação facial não é permitida neste dispositivo"
+ "O desbloqueio facial não foi configurado."
+ "O desbloqueio facial não é compatível com este dispositivo.""Rosto %d"
@@ -1254,10 +1255,10 @@
"Toque para ver todas as redes""Conectar""Todas as redes"
- "Conectar a redes Wi-Fi?"
- "Sugerido por %s"
- "Sim"
- "Não"
+ "Permitir redes Wi-Fi sugeridas?"
+ "Redes sugeridas pelo app %s. O dispositivo pode se conectar automaticamente."
+ "Permitir"
+ "Não""O Wi‑Fi será ativado automaticamente""Quando você estiver perto de uma rede salva de alta qualidade""Não ativar novamente"
@@ -1475,7 +1476,7 @@
"Enviar""O app para carro está sendo usado""Toque para sair do app para carro."
- "Vínculo ou ponto de acesso ativo"
+ "Ponto de acesso ou tethering ativo""Toque para configurar.""Tethering desativado""Fale com seu administrador para saber detalhes"
@@ -1669,8 +1670,8 @@
"O atalho de acessibilidade desativou o %1$s""Toque nos dois botões de volume e os mantenha pressionados por três segundo para usar o %1$s""Escolha um serviço a ser usado quando você toca no botão Acessibilidade:"
- "Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"
- "Escolha um serviço a ser usado com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):"
+ "Escolha um serviço para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com dois dedos):"
+ "Escolha um serviço para usar com o gesto de acessibilidade (deslizar de baixo para cima na tela com três dedos):""Para alternar entre serviços, toque no botão de acessibilidade e mantenha-o pressionado.""Para alternar entre serviços, deslize de baixo para cima na tela com dois dedos sem soltar.""Para alternar entre serviços, deslize de baixo para cima na tela com três dedos sem soltar."
@@ -1887,8 +1888,8 @@
"Sem classificação""Você definiu a importância dessas notificações.""Isso é importante por causa das pessoas envolvidas."
- "Permitir que %1$s crie um novo usuário com %2$s?"
- "Permitir que %1$s crie um novo usuário com %2$s (já existe um usuário com essa conta)?"
+ "Permitir que o app %1$s crie um novo usuário com %2$s (já existe um usuário com essa conta)?"
+ "Permitir que o app %1$s crie um novo usuário com %2$s?""Adicionar um idioma""Preferência de região""Digitar nome do idioma"
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 50d6a495e147d7cf3e5009fbca15ed6cea7cffd4..1fdf162e8c42b4c91051bda5357e7f45dae32b3b 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -96,6 +96,7 @@
"Mesaje din mesageria vocală""Apelare prin Wi-Fi""Starea cardului SIM"
+ "Notificări de la SIM cu prioritate ridicată""Cealaltă persoană a solicitat modul TTY cu setarea COMPLET""Cealaltă persoană a solicitat modul TTY cu setarea HCO""Cealaltă persoană a solicitat modul TTY cu setarea VCO"
@@ -553,11 +554,11 @@
"Pictograma amprentă"
- "să gestioneze hardware-ul de autentificare facială"
+ "să gestioneze hardware de deblocare facială""Permite aplicației să invoce metode pentru a adăuga și a șterge șabloane faciale pentru utilizare."
- "să folosească hardware de autentificare facială"
- "Permite aplicației să folosească hardware de autentificare facială pentru autentificare"
- "Autentificare facială"
+ "să folosească hardware de deblocare facială"
+ "Permite aplicației să folosească hardware de deblocare facială pentru autentificare"
+ "Deblocare facială""Reînregistrați-vă chipul""Pentru a îmbunătăți recunoașterea, reînregistrați-vă chipul""Nu s-a putut fotografia fața cu precizie. Încercați din nou."
@@ -570,7 +571,7 @@
"Mutați telefonul spre stânga.""Mutați telefonul spre dreapta.""Priviți mai direct spre dispozitiv."
- "Nu vi se vede fața. Uitați-vă la telefon."
+ "Stați cu capul direct în fața telefonului.""Prea multă mișcare. Țineți telefonul nemișcat.""Reînregistrați-vă chipul.""Nu se mai poate recunoaște fața. Încercați din nou."
@@ -579,19 +580,19 @@
"Întoarceți capul mai puțin.""Întoarceți capul mai puțin.""Eliminați orice vă ascunde chipul."
- "Curățați senzorul de la marginea de sus a ecranului."
+ "Curățați partea de sus a ecranului, inclusiv bara neagră""Nu se poate confirma fața. Hardware-ul nu este disponibil."
- "Încercați din nou autentificarea facială."
+ "Încercați din nou deblocarea facială.""Nu se pot stoca date faciale noi. Ștergeți întâi unele vechi."
- "Operațiunea privind fața a fost anulată"
- "Autentificarea chipului este anulată de utilizator"
+ "Operațiunea privind chipul a fost anulată."
+ "Deblocarea facială este anulată de utilizator.""Prea multe încercări. Reîncercați mai târziu."
- "Prea multe încercări. Autentificarea facială este dezactivată"
+ "Prea multe încercări. Deblocarea facială este dezactivată.""Nu se poate confirma fața. Încercați din nou."
- "Nu ați configurat autentificarea facială"
- "Autentificarea facială nu este acceptată pe dispozitiv"
+ "Nu ați configurat deblocarea facială."
+ "Deblocarea facială nu este acceptată pe dispozitiv.""Chip %d"
@@ -1276,10 +1277,10 @@
"Atingeți pentru a vedea toate rețelele""Conectați-vă""Toate rețelele"
- "Vă conectați la rețele Wi-Fi?"
- "Sugerat de %s"
- "Da"
- "Nu"
+ "Permiteți rețelele Wi-Fi sugerate?"
+ "%s a sugerat rețele. Dispozitivul se poate conecta automat."
+ "Permiteți"
+ "Nu, mulțumesc""Wi‑Fi se va activa automat""Când vă aflați lângă o rețea salvată, de înaltă calitate""Nu reactivați"
@@ -1921,8 +1922,8 @@
"Neclasificate""Dvs. setați importanța acestor notificări.""Notificarea este importantă având în vedere persoanele implicate."
- "Permiteți ca %1$s să creeze un nou utilizator folosind %2$s?"
- "Permiteți ca %1$s să creeze un nou utilizator folosind %2$s? (există deja un utilizator cu acest cont)"
+ "Permiteți ca %1$s să creeze un nou utilizator folosind %2$s? (există deja un utilizator cu acest cont)"
+ "Permiteți ca %1$s să creeze un nou utilizator folosind %2$s?""Adăugați o limbă""Regiunea preferată""Numele limbii"
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 2d668f6a905ef055f5fd58c12b7b1b06c7b4e533..7cba3dfa015bb0b58184b68ad60e735617a712a0 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -97,6 +97,7 @@
"Голосовые сообщения""Звонки по Wi-Fi""Статус SIM-карты"
+ "Важные уведомления SIM-карты""На устройстве абонента выбран режим телетайпа \"ВСЕ\"""На устройстве абонента выбран режим телетайпа HCO""На устройстве абонента выбран режим телетайпа VCO"
@@ -556,11 +557,11 @@
"Значок отпечатка пальца"
- "Управлять оборудованием для распознавания лиц"
+ "Управление аппаратным обеспечением для функции \"Фейсконтроль\"""Приложение сможет добавлять и удалять шаблоны лиц."
- "Использовать оборудование для распознавания лиц"
- "Приложение сможет использовать распознающее оборудование для аутентификации."
- "Распознавание лица"
+ "Использование аппаратного обеспечения для функции \"Фейсконтроль\""
+ "Приложение сможет использовать для аутентификации аппаратное обеспечение Фейсконтроля."
+ "Фейсконтроль""Зарегистрируйте лицо ещё раз""Чтобы улучшить распознавание лица, зарегистрируйте его ещё раз""Не удалось собрать данные. Повторите попытку."
@@ -573,7 +574,7 @@
"Переместите телефон влево.""Переместите телефон вправо.""Смотрите прямо на устройство."
- "Вашего лица не видно. Смотрите на телефон."
+ "Держите телефон прямо перед лицом.""Не перемещайте устройство. Держите его неподвижно.""Повторите попытку.""Не удалось распознать лицо. Повторите попытку."
@@ -582,19 +583,19 @@
"Держите голову ровнее.""Держите голову ровнее.""Ваше лицо плохо видно."
- "Очистите сканер в верхней части экрана."
+ "Протрите верхнюю часть экрана (в том числе черную панель).""Не удалось распознать лицо. Сканер недоступен."
- "Лицо не распознано. Попробуйте ещё раз."
+ "Попробуйте воспользоваться функцией ещё раз.""Недостаточно места. Удалите старые данные для распознавания."
- "Распознавание отменено."
- "Распознавание лица отменено пользователем."
+ "Распознавание отменено"
+ "Фейсконтроль: операция отменена пользователем.""Слишком много попыток. Повторите позже."
- "Слишком много попыток. Распознавание лица отключено."
+ "Слишком много попыток. Функция \"Фейсконтроль\" отключена.""Не удалось распознать лицо. Повторите попытку."
- "Вы не настроили распознавание лица."
- "Это устройство не поддерживает распознавание лица."
+ "Вы не настроили фейсконтроль."
+ "Это устройство не поддерживает функцию \"Фейсконтроль\".""Лицо %d"
@@ -1298,10 +1299,10 @@
"Нажмите, чтобы увидеть список сетей""Подключиться""Все сети"
- "Подключиться к сети Wi-Fi?"
- "Предложено приложением \"%s\""
- "Да"
- "Нет"
+ "Подключаться к предложенным сетям Wi‑Fi?"
+ "Приложение \"%s\" рекомендует сети, к которым устройство может подключаться автоматически."
+ "Разрешить"
+ "Нет, спасибо""Wi-Fi включится автоматически""Когда вы будете в зоне действия сохраненной сети с хорошим сигналом.""Не включать снова"
@@ -1717,8 +1718,8 @@
"Сервис %1$s отключен""Чтобы использовать сервис \"%1$s\", нажмите и удерживайте обе клавиши громкости в течение трех секунд.""Выберите сервис, который будет запускаться при нажатии кнопки специальных возможностей:"
- "Выберите сервис, который будет запускаться жестом для доступа к специальным возможностям (провести по экрану снизу вверх двумя пальцами):"
- "Выберите сервис, который будет запускаться жестом для доступа к специальным возможностям (провести по экрану снизу вверх тремя пальцами):"
+ "Выберите сервис, который будет запускаться жестом (провести по экрану снизу вверх двумя пальцами):"
+ "Выберите сервис, который будет запускаться жестом (провести по экрану снизу вверх тремя пальцами):""Для переключения между сервисами нажмите и удерживайте кнопку специальных возможностей.""Для переключения между сервисами проведите по экрану снизу вверх двумя пальцами и задержите их.""Для переключения между сервисами проведите по экрану снизу вверх тремя пальцами и задержите их."
@@ -1955,8 +1956,8 @@
"Без категории""Вы определяете важность этих уведомлений.""Важное (люди)"
- "Разрешить приложению \"%1$s\" создать пользователя для аккаунта %2$s?"
- "Разрешить приложению \"%1$s\" создать нового пользователя для аккаунта %2$s (пользователь c таким аккаунтом уже есть)?"
+ "Разрешить приложению \"%1$s\" создать нового пользователя с аккаунтом %2$s (пользователь с этим аккаунтом уже существует)?"
+ "Разрешить приложению \"%1$s\" создать нового пользователя с аккаунтом %2$s?""Добавьте язык""Региональные настройки""Введите язык"
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index fdf4d53f15b491b4295e9d2a43df7ef7ddae307f..4d9c143e54ddb9f94ee34b825e0417e971a2df9e 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -95,6 +95,7 @@
"හඬ තැපැල් පණිවිඩ""Wi-Fi ඇමතීම""SIM තත්ත්වය"
+ "ඉහළ ප්රමුඛතා SIM තත්ත්වය""සම ඉල්ලීම් කළ TTY ප්රකාරය පූර්ණයි""සම ඉල්ලීම් කළ TTY ප්රකාරය HCO""සම ඉල්ලීම් කළ TTY ප්රකාරය VCO"
@@ -550,11 +551,11 @@
"ඇඟිලි සලකුණු නිරූපකය"
- "මුහුණු සත්යාපක දෘඪාංග කළමනාකරණය කරන්න"
+ "මුහුණු අඟුලු ඇරීමේ දෘඪාංග කළමනා කරන්න""මුහුණු අච්චු එකතු කිරීමට සහ ඉවත් කිරීමට අදාළ ක්රම භාවිතය සඳහා මෙම යෙදුමට ඉඩ දෙයි."
- "මුහුණු සත්යාපක දෘඪාංග භාවිතා කරන්න"
- "සත්යාපනය සඳහා සත්යාපක දෘඪාංග භාවිත කිරීමට යෙදුමට ඉඩ දෙයි"
- "මුහුණු සත්යාපනය"
+ "මුහුණු අඟුලු ඇරීමේ දෘඪාංග භෘවිත කරන්න"
+ "සත්යාපනය සඳහා මුහුණු අඟුලු ඇරීමේ දෘඪාංග භාවිත කිරීමට යෙදුමට ඉඩ දෙයි"
+ "මුහුණු අඟුලු ඇරීම""ඔබේ මුහුණ යළි ලියාපදිංචි කරන්න""හඳුනා ගැනීම වැඩිදියුණු කිරීමට, ඔබේ මුහුණ යළි-ලියාපදිංචි කරන්න""නිරවද්ය මුහුණු දත්ත ගත නොහැකි විය. නැවත උත්සාහ කරන්න."
@@ -567,7 +568,7 @@
"දුරකථනය වමට ගෙන යන්න.""දුරකථනය දකුණට ගෙන යන්න.""ඔබේ උපාංගය වෙත තවත් ඍජුව බලන්න."
- "ඔබේ මුහුණ දැකිය නොහැක. දුරකථනය වෙත බලන්න."
+ "ඔබේ මුහුණ දුරකථනයට සෘජුවම ඉදිරියෙන් ස්ථානගත කරන්න.""චලනය ඉතා වැඩියි. දුරකථනය ස්ථිරව අල්ලා සිටින්න.""ඔබේ මුහුණ යළි ලියාපදිංචි කරන්න.""තවදුරටත් මුහුණ හඳුනාගත නොහැක. නැවත උත්සාහ කරන්න."
@@ -576,19 +577,19 @@
"ඔබේ හිස ටිකක් අඩුවෙන් කරකවන්න.""ඔබේ හිස ටිකක් අඩුවෙන් කරකවන්න.""ඔබේ මුහුණ සඟවන කිසිවක් ඉවත් කරන්න."
- "තිරයේ ඉහළ කෙළවරේ සංවේදකය පිරිසිදු කරන්න."
+ "කලු තීරුව ඇතුළුව, ඔබේ තිරයෙහි මුදුන පිරිසිදු කරන්න""මුහුණ සත්යාපනය කළ නොහැක. දෘඩාංගය නොමැත."
- "මුහුණු සත්යාපනයට උත්සාහ කරන්න."
+ "නැවතත් මුහුණු අඟුලු ඇරීම උත්සාහ කරන්න.""නව මුහුණු දත්ත ගබඩා කළ නොහැක. පළමුව පැරණි එකක් මකන්න."
- "මුහුණු මෙහෙයුම අවලංගුයි"
- "පරිශීලකයා විසින් මුහුණ සත්යාපනය අවලංගු කර ඇත"
+ "මුහුණු මෙහෙයුම අවලංගු කරන ලදී."
+ "පරිශීලකයා මුහුණු අඟුලු ඇරීම අවලංගු කර ඇත.""උත්සාහයන් ඉතා වැඩි ගණනකි. පසුව නැවත උත්සාහ කරන්න."
- "ප්රයත්නයන් බොහෝමයකි. මුහුණු සත්යාපනය අබලයි."
+ "ප්රයත්න ගණන වැඩියි. මුහුණු අඟුලු ඇරීම අබලයි.""මුහුණ සත්යාපන කළ නොහැක. නැවත උත්සාහ කරන්න."
- "ඔබ මුහුණු සත්යාපනය පිහිටුවා නැත"
- "මෙම උපාංගයෙහි මුහුණු සත්යාපනයට සහාය නොදක්වයි"
+ "ඔබ මුහුණු අඟුලු ඇරීම සකසා නැත"
+ "මෙම උපාංගයෙහි මුහුණු අඟුලු ඇරීමට සහය නොදැක්වේ""මුහුණු %d"
@@ -1256,10 +1257,10 @@
"සියලු ජාල බැලීමට තට්ටු කරන්න""සම්බන්ධ කරන්න""සියලු ජාල"
- "Wi-Fi ජාල වෙත සම්බන්ධ කරන්නේද?"
- "%s විසින් යෝජනා කරන ලදි"
- "ඔව්"
- "නැත"
+ "යෝජිත Wi-Fi ජාල ඉඩ දෙන්නද?"
+ "%s යෝජිත ජාල. උපාංගය ස්වයංක්රියව සම්බන්ධ වනු ඇත."
+ "ඉඩ දෙන්න"
+ "එපා, ස්තූතියි""Wi‑Fi ස්වයංක්රියව ක්රියාත්මක වනු ඇත""ඔබ උසස් තත්ත්වයේ සුරැකි ජාලයක් අවට සිටින විට""නැවත ක්රියාත්මක නොකරන්න"
@@ -1889,8 +1890,8 @@
"වර්ගීකරණය නොකළ""ඔබ මෙම දැනුම්දීම්වල වැදගත්කම සකසා ඇත.""සම්බන්ධ වූ පුද්ගලයන් නිසා මෙය වැදගත් වේ."
- "%1$s හට %2$s සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද?"
- "%1$s හට %2$s සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද (මෙම ගිණුම සහිත පරිශීලකයෙකු දැනටමත් සිටී) ?"
+ "%1$s හට %2$s සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද (මෙම ගිණුම සහිත පරිශීලකයෙකු දැනටමත් සිටී) ?"
+ "%1$s හට %2$s සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද ?""භාෂාවක් එක් කරන්න""ප්රදේශ මනාපය""භාෂා නම ටයිප් කරන්න"
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index 874b247d7621462d92e690910b6e68c3b068e86c..102b0d1f2e1b067d311634e2dd4b60410cbf0140 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -97,6 +97,7 @@
"Správy hlasovej schránky""Volanie cez Wi‑Fi""Stav SIM karty"
+ "Stav SIM karty: vysoká priorita""Používateľ, s ktorým komunikujete, požiadal o režim FULL textového telefónu""Používateľ, s ktorým komunikujete, požiadal o režim HCO textového telefónu""Používateľ, s ktorým komunikujete, požiadal o režim VCO textového telefónu"
@@ -556,11 +557,11 @@
"Ikona odtlačku prsta"
- "správa hardvéru na overenie tváre"
+ "spravovať hardvér odomknutia tvárou""Umožňuje aplikácii vyvolať metódy, ktoré pridávajú a odstraňujú šablóny tvárí."
- "používanie hardvéru na overenie tváre"
- "Umožňuje aplikácii používať na overenie totožnosti hardvér na overenie tváre"
- "Overenie tváre"
+ "používať hardvér Odomknutia tvárou"
+ "Umožňuje aplikácii používať na overenie totožnosti hardvér Odomknutia tvárou"
+ "Odomknutie tvárou""Znova zaregistrujte svoju tvár""Znova zaregistrujte svoju tvár, aby sa zlepšilo rozpoznávanie""Nepodarilo sa nasnímať presné údaje o tvári. Skúste to znova."
@@ -573,7 +574,7 @@
"Posuňte telefón doľava.""Posuňte telefón doprava.""Pozrite sa priamejšie na zariadenie."
- "Nie je vidieť vašu tvár. Pozrite sa na telefón."
+ "Umiestnite svoju tvár priamo pred telefón.""Priveľa pohybu. Nehýbte telefónom.""Znova zaregistrujte svoju tvár.""Tvár už nie je možné rozpoznať. Skúste to znova."
@@ -582,19 +583,19 @@
"Otočte hlavu o niečo menej.""Otočte hlavu o niečo menej.""Odstráňte všetko, čo vám zakrýva tvár."
- "Vyčistite senzor v hornom okraji obrazovky."
+ "Vyčistite hornú časť obrazovky vrátane čierneho panela""Tvár sa nedá overiť. Hardvér nie je k dispozícii."
- "Vyskúšajte znova overenie tváre."
+ "Skúste znova použiť odomknutie tvárou.""Nové údaje o tvári sa nedajú uložiť. Najprv odstráňte jeden zo starých záznamov."
- "Operácia týkajúca sa tváre bola zrušená"
- "Overenie tváre bolo zrušené používateľom"
+ "Operácia týkajúca sa tváre bola zrušená"
+ "Odomknutie tvárou zrušil používateľ.""Príliš veľa pokusov. Skúste to znova neskôr."
- "Príliš veľa pokusov. Overenie tváre bolo deaktivované."
+ "Príliš veľa pokusov. Odomknutie tvárou bolo zakázané.""Nedá sa overiť tvár. Skúste to znova."
- "Overenie tváre ste nenastavili"
- "Toto zariadenie nepodporuje overenie tváre"
+ "Nenastavili ste odomknutie tvárou."
+ "Toto zariadenie nepodporuje odomknutie tvárou.""Tvár %d"
@@ -1298,10 +1299,10 @@
"Klepnutím zobrazíte všetky siete""Pripojiť""Všetky siete"
- "Chcete sa pripojiť k sieťam Wi‑Fi?"
- "Navrhuje %s"
- "Áno"
- "Nie"
+ "Chcete povoliť navrhované siete Wi‑Fi?"
+ "Siete navrhuje aplikácia %s. Zariadenie sa môže pripájať automaticky."
+ "Povoliť"
+ "Nie, ďakujem""Wi‑Fi sa zapne automaticky""Keď budete v blízkosti kvalitnej uloženej siete""Znova nezapínať"
@@ -1955,8 +1956,8 @@
"Nekategorizované""Nastavili ste dôležitosť týchto upozornení.""Táto správa je dôležitá vzhľadom na osoby, ktorých sa to týka."
- "Povoliť aplikácii %1$s vytvoriť nového používateľa pomocou účtu %2$s?"
- "Povoliť aplikácii %1$s vytvoriť nového používateľa pomocou účtu %2$s (používateľ s týmto účtom už existuje)?"
+ "Chcete povoliť aplikácii %1$s vytvoriť nového používateľa pomocou účtu %2$s (používateľ s týmto účtom už existuje)?"
+ "Chcete povoliť aplikácii %1$s vytvoriť nového používateľa pomocou účtu %2$s?""Pridať jazyk""Preferovaný región""Zadajte názov jazyka"
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 2dc10edcee400110ac1a9fc797cfa798784cc47f..252ab4ceff5a46a5f526e401204316999d93b96b 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -97,6 +97,7 @@
"Sporočila v odzivniku""Klicanje prek Wi-Fi-ja""Stanje kartice SIM"
+ "Stanje kartice SIM z visoko stopnjo prednosti""Enakovredna naprava je zahtevala način TTY FULL""Enakovredna naprava je zahtevala način TTY HCO""Enakovredna naprava je zahtevala način TTY VCO"
@@ -556,11 +557,11 @@
"Ikona prstnih odtisov"
- "upravljanje strojne opreme za preverjanje pristnosti obraza"
+ "upravljanje strojne opreme za odklepanje z obrazom""Aplikaciji omogoča sprožanje načinov za dodajanje in brisanje predlog z obrazi za uporabo."
- "uporaba strojne opreme za preverjanje pristnosti obraza"
- "Aplikaciji omogoča uporabo strojne opreme za preverjanje pristnosti obraza"
- "Preverjanje pristnosti z obrazom"
+ "uporaba strojne opreme za odklepanje z obrazom"
+ "Aplikaciji omogoča uporabo strojne opreme za odklepanje z obrazom za preverj. pristnosti"
+ "Odklepanje z obrazom""Znova prijavite obraz""Za izboljšanje prepoznavanja znova prijavite svoj obraz""Točnih podatkov o obrazu ni bilo mogoče zajeti. Poskusite znova."
@@ -573,7 +574,7 @@
"Telefon premaknite v levo.""Telefon premaknite v desno.""Glejte bolj naravnost v napravo."
- "Obraz ni viden. Poglejte v telefon."
+ "Obraz nastavite naravnost pred telefon.""Preveč se premikate. Držite telefon pri miru.""Znova prijavite svoj obraz.""Obraza ni več mogoče prepoznati. Poskusite znova."
@@ -582,19 +583,19 @@
"Malce manj nagnite glavo.""Glejte malce bolj naravnost.""Umaknite vse, kar vam morda zakriva obraz."
- "Očistite tipalo na zgornjem robu zaslona."
+ "Očistite vrhnji del zaslona, vključno s črno vrstico""Obraza ni mogoče preveriti. Str. opr. ni na voljo."
- "Znova izvedite preverjanje pristnosti z obrazom."
+ "Znova izvedite odklepanje z obrazom.""Novega obraza ni mogoče shraniti. Najprej izbrišite starega."
- "Dejanje z obrazom je bilo preklicano"
- "Preverjanje pristnosti obraza preklical uporabnik"
+ "Dejanje z obrazom je bilo preklicano."
+ "Odklepanje z obrazom je preklical uporabnik.""Preveč poskusov. Poskusite znova pozneje."
- "Preveč poskusov. Preverjanje pristnosti obraza onemogočeno."
+ "Preveč poskusov. Odklepanje z obrazom je onemogočeno.""Obraza ni mogoče preveriti. Poskusite znova."
- "Preverjanje pristnosti obraza ni nastavljeno"
- "Ta naprava ne podpira preverjanja pristnosti obraza"
+ "Odklepanja z obrazom niste nastavili."
+ "Ta naprava ne podpira odklepanja z obrazom.""Obraz %d"
@@ -1059,10 +1060,10 @@
pred %d minutami
- pred %d uro
- pred %d urama
- pred %d urami
- pred %d urami
+ pred %d h
+ pred %d h
+ pred %d h
+ pred %d hpred %d dnevom
@@ -1298,10 +1299,10 @@
"Dotaknite se, če si želite ogledati vsa omrežja""Vzpostavi povezavo""Vsa omrežja"
- "Želite vzpostaviti povezavo z omrežji Wi-Fi?"
- "Predlagala aplikacija %s"
- "Da"
- "Ne"
+ "Želite dovoliti predlagana omrežja Wi-Fi?"
+ "%s – predlagana omrežja. Naprava se lahko poveže samodejno."
+ "Dovoli"
+ "Ne, hvala""Povezava Wi‑Fi se bo samodejno vklopila""Ko ste v bližini zanesljivega shranjenega omrežja""Ne vklopi znova"
@@ -1398,7 +1399,7 @@
"Zaznana je analogna dodatna zvočna oprema""Priključena naprava ni združljiva s tem telefonom. Dotaknite se za več informacij.""Iskanje napak prek USB je povezano"
- "Dotaknite se, če želite izklopiti odpravljanje napak prek USB-ja"
+ "Dotaknite se, če želite izklop. odpravlj. napak prek USB-ja""Izberite, če želite onemogočiti iskanje in odpravljanje napak prek vrat USB.""Način preizkusnega ogrodja je omogočen""Če želite onemogočiti način preizkusnega ogrodja, ponastavite napravo na tovarniške nastavitve."
@@ -1536,7 +1537,7 @@
"Končano""Brisanje skupne shrambe …"
- "Deli z dr."
+ "Deli""Najdi""Spletno iskanje""Najdi naslednje"
@@ -1955,8 +1956,8 @@
"Nekategorizirano""Vi določite raven pomembnosti teh obvestil.""Pomembno zaradi udeleženih ljudi."
- "Dovolite, da aplikacija %1$s ustvari novega uporabnika za račun %2$s?"
- "Dovolite aplikaciji %1$s, da ustvari novega uporabnika za račun %2$s (uporabnik s tem računom že obstaja)?"
+ "Ali aplikaciji %1$s dovolite, da ustvari novega uporabnika za račun %2$s (uporabnik s tem računom že obstaja)?"
+ "Ali aplikaciji %1$s dovolite, da ustvari novega uporabnika za račun %2$s?""Dodajanje jezika""Nastavitev območja""Vnesite ime jezika"
@@ -2050,7 +2051,7 @@
"Bližnjice ni bilo mogoče obnoviti zaradi neujemanja podpisa aplikacije""Bližnjice ni bilo mogoče obnoviti""Bližnjica je onemogočena"
- "ODSTRANI"
+ "ODMESTI""VSEENO ODPRI""Zaznana je bila škodljiva aplikacija""Aplikacija %1$s želi prikazati izreze aplikacije %2$s"
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index 1c2f64ef900da26dd539a73fd5948b44c677c340..a92d1ee18aa490c409dbbc76bb4d1613ecb2c4cf 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -95,6 +95,7 @@
"Mesazhet e postës zanore""Telefonata me Wi-Fi""Statusi i kartës SIM"
+ "Statusi i kartës SIM me përparësi të lartë""Homologu yt kërkoi modalitet \"TTY\" të plotë""Homologu kërkoi modalitet \"TTY\" të llojit \"HCO\"""Homologu yt kërkoi modalitet \"TTY\" të llojit \"VCO\""
@@ -550,11 +551,11 @@
"Ikona e gjurmës së gishtit"
- "menaxho harduerin për vërtetimin e fytyrës"
+ "menaxho harduerin për shkyçjen me fytyrën""Lejon aplikacionin të aktivizojë mënyra për shtim e fshirje të shablloneve të përdorura."
- "përdor harduerin për vërtetimin e fytyrës"
- "Lejon aplikacionin të përdorë harduer vërtetimi të fytyrës për procesin e vërtetimit"
- "Vërtetimi me fytyrë"
+ "përdor harduerin e shkyçjes me fytyrën"
+ "Lejon aplikacionin të përdorë harduerin e shkyçjes me fytyrën për procesin e vërtetimit"
+ "Shkyçja me fytyrë""Regjistro përsëri fytyrën tënde""Për të përmirësuar njohjen, regjistro përsëri fytyrën tënde""S\'mund të regjistroheshin të dhëna të sakta të fytyrës. Provo përsëri."
@@ -567,7 +568,7 @@
"Lëvize telefonin majtas.""Lëvize telefonin djathtas""Shiko më drejt në pajisjen tënde."
- "Fytyra jote nuk shfaqet. Shiko te telefoni."
+ "Pozicionoje fytyrën tënde direkt përpara telefonit.""Ka shumë lëvizje. Mbaje telefonin të palëvizur.""Regjistroje përsëri fytyrën tënde.""Fytyra nuk mund të njihet më. Provo përsëri."
@@ -576,19 +577,19 @@
"Ktheje kokën pak më pak.""Ktheje kokën pak më pak.""Hiq gjithçka që fsheh fytyrën tënde."
- "Pastro sensorin në anën e sipërme të ekranit."
+ "Pastro kreun e ekranit, duke përfshirë shiritin e zi""Fytyra s\'mund të verifikohet. Hardueri nuk ofrohet."
- "Provo përsëri vërtetimin e fytyrës."
+ "Provo përsëri shkyçjen me fytyrën.""S\'mund të ruhen të dhëna të reja fytyre. Fshi një të vjetër në fillim."
- "Veprimi me fytyrën u anulua"
- "Vërtetimi me fytyrë u anulua nga përdoruesi"
+ "Veprimi me fytyrën u anulua."
+ "Shkyçja me fytyrë u anulua nga përdoruesi.""Shumë përpjekje. Provo sërish më vonë."
- "Shumë përpjekje. Vërtetimi me fytyrë u çaktivizua."
+ "Shumë përpjekje. Shkyçja me fytyrë u çaktivizua.""Fytyra nuk mund të verifikohet. Provo përsëri."
- "Nuk e ke konfiguruar vërtetimin me fytyrë."
- "Vërtetimi me fytyrë nuk mbështetet në këtë pajisje"
+ "Nuk e ke konfiguruar shkyçjen me fytyrë."
+ "Shkyçja me fytyrë nuk mbështetet në këtë pajisje""Fytyra %d"
@@ -1254,10 +1255,10 @@
"Trokit për të parë të gjitha rrjetet""Lidhu""Të gjitha rrjetet"
- "Do të lidhesh me rrjetet Wi-Fi?"
- "Sugjeruar nga %s"
- "Po"
- "Jo"
+ "Të lejohen rrjetet e sugjeruara Wi‑Fi?"
+ "Rrjet e sugjeruara të %s. Pajisja mund të lidhet automatikisht."
+ "Lejo"
+ "Jo, faleminderit""Wi‑Fi do të aktivizohet automatikisht""Kur ndodhesh pranë një rrjeti të ruajtur me cilësi të lartë""Mos e aktivizo përsëri"
@@ -1672,7 +1673,7 @@
"Zgjidh një shërbim për ta përdorur kur troket butonin e qasshmërisë:""Zgjidh një shërbim për ta përdorur me gjestin e qasshmërisë (rrëshqit shpejt lart nga fundi i ekranit me dy gishta):""Zgjidh një shërbim për ta përdorur me gjestin e qasshmërisë (rrëshqit shpejt lart nga fundi i ekranit me tre gishta):"
- "Për të kaluar mes shërbimeve, prek dhe mbaj prekur butonin e qasshmërisë."
+ "Për të kaluar mes shërbimeve, prek dhe mbaj të shtypur butonin e qasshmërisë.""Për të kaluar mes pajisjeve, rrëshqit shpejt lart me dy gishta dhe mbaje prekur.""Për të kaluar mes pajisjeve, rrëshqit shpejt lart me tre gishta dhe mbaje prekur.""Zmadhimi"
@@ -1888,8 +1889,8 @@
"E pakategorizuara""Ke caktuar rëndësinë e këtyre njoftimeve.""Është i rëndësishëm për shkak të personave të përfshirë."
- "Të lejohet %1$s që të krijojë një përdorues të ri me %2$s ?"
- "Të lejohet %1$s që të krijojë një përdorues të ri me %2$s (një përdorues me këtë llogari ekziston tashmë) ?"
+ "Të lejohet %1$s që të krijojë një përdorues të ri me %2$s (një përdorues me këtë llogari ekziston tashmë) ?"
+ "Të lejohet %1$s që të krijojë një përdorues të ri me %2$s ?""Shto një gjuhë""Preferenca e rajonit""Shkruaj emrin e gjuhës"
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 0b3656e1cb897a554a7e717b432699621bbccbfd..3d646689a82d267c6ea0bf77c32272edf428b172 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -27,7 +27,7 @@
"TB""PB""%1$s%2$s"
- "<Без наслова>"
+ "<Без имена>""(Нема броја телефона)""Непознато""Гласовна пошта"
@@ -96,6 +96,7 @@
"Поруке говорне поште""Позивање преко Wi-Fi мреже""Статус SIM-а"
+ "Обавештења SIM картице са статусом „висок приоритет“""Корисник захтева ПОТПУН режим TTY""Корисник захтева ПРЕНОС ЗВУКА за режим TTY""Корисник захтева ПРЕНОС ГЛАСА за режим TTY"
@@ -553,11 +554,11 @@
"Икона отиска прста"
- "управљање хардв. за потврду идентитета помоћу лица"
+ "управљање хардв. за откључавање лицем""Дозвољава да апликација активира методе за додавање и брисање шаблона лица ради коришћења."
- "коришћење хардв. за потврду идентитета помоћу лица"
- "Дозвољава да апликација користи хардвер за потврду идентитета помоћу лица"
- "Потврда идентитета лицем"
+ "коришћење хардвера за откључавање лицем"
+ "Дозвољава да апликација користи хардвер за откључавање лицем ради потврде идентитета"
+ "Откључавање лицем""Поново региструјте лице""Да бисте побољшали препознавање, поново региструјте лице""Снимање лица није успело. Пробајте поново."
@@ -570,7 +571,7 @@
"Померите телефон улево.""Померите телефон удесно.""Гледајте право у уређај."
- "Не види се лице. Гледајте у телефон."
+ "Поставите лице директно испред телефона""Много се померате. Држите телефон мирно.""Поново региструјте лице.""Више не може да се препозна лице. Пробајте поново."
@@ -579,19 +580,19 @@
"Мало мање померите главу.""Мало мање померите главу.""Уклоните све што вам заклања лице."
- "Очистите сензор на горњој ивици екрана."
+ "Очистите горњи део екрана, укључујући црну траку""Провера лица није успела. Хардвер није доступан."
- "Пробајте поново потврду идентитета помоћу лица."
+ "Пробајте поново откључавање лицем.""Нови подаци о лицу нису сачувани. Прво избришете претходне."
- "Обрада лица је отказана"
- "Корисник је отказао потврду идентитета лицем"
+ "Обрада лица је отказана."
+ "Корисник је отказао откључавање лицем""Превише покушаја. Пробајте поново касније."
- "Превише покушаја. Потврда идентитета лицем је онемогућена."
+ "Превише покушаја. Откључавање лицем је онемогућено.""Провера лица није успела. Пробајте поново."
- "Нисте подесили потврду идентитета лицем"
- "Препознавање лица није подржано на овом уређају"
+ "Нисте подесили откључавање лицем"
+ "Откључавање лицем није подржано на овом уређају""Лице %d"
@@ -1276,10 +1277,10 @@
"Додирните да бисте видели све мреже""Повежи""Све мреже"
- "Желите ли да се повежете са Wi-Fi мрежама?"
- "%s предлаже"
- "Да"
- "Не"
+ "Желите да дозволите предложене Wi‑Fi мреже?"
+ "Мреже које предлаже %s. Уређај ће се можда повезати аутоматски."
+ "Дозволи"
+ "Не, хвала""Wi‑Fi ће се аутоматски укључити""Када сте у близини сачуване мреже високог квалитета""Не укључуј поново"
@@ -1921,8 +1922,8 @@
"Некатегоризовано""Ви подешавате важност ових обавештења.""Ово је важно због људи који учествују."
- "Желите ли да дозволите апликацији %1$s да направи новог корисника за %2$s?"
- "Желите ли да дозволите апликацији %1$s да направи новог корисника за %2$s (корисник са овим налогом већ постоји)?"
+ "Желите ли да дозволите да %1$s направи новог корисника са налогом %2$s (корисник са тим налогом већ постоји)?"
+ "Желите ли да дозволите да %1$s направи новог корисника са налогом %2$s?""Додајте језик""Подешавање региона""Унесите назив језика"
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 66256fa550de08742fd4ffc40b2ee8b352f6ec25..8c0ef5bad5c2c16d20e709aca13c26fc41fc88c7 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -95,6 +95,7 @@
"Röstmeddelanden""Wi-Fi-samtal""Status för SIM-kort"
+ "SIM-aviseringar med hög prioritet""Peer-enheten begärde texttelefonläget FULL""Peer-enheten begärde texttelefonläget HCO""Peer-enheten begärde texttelefonläget VCO"
@@ -550,11 +551,11 @@
"Ikon för fingeravtryck"
- "hantera maskinvara för ansiktsautentisering"
+ "hantera maskinvara för ansiktslås""Tillåter att appen anropar metoder för att lägga till och radera ansiktsmallar."
- "använda maskinvara för ansiktsautentisering"
- "Tillåter att appen använder maskinvara för ansiktsigenkänning vid autentisering"
- "Ansiktsautentisering"
+ "använd maskinvara för ansiktslås"
+ "Tillåter att appen använder maskinvara för ansiktslås vid autentisering"
+ "Ansiktslås""Registrera ansiktet på nytt""Gör om registreringen av ansiktet så att ansiktsigenkänningen ska fungera bättre""Det gick inte att fånga ansiktsdata. Försök igen."
@@ -567,7 +568,7 @@
"Flytta mobilen åt vänster.""Flytta mobilen åt höger.""Titta rakt på enheten."
- "Ansiktet syns inte. Titta på mobilen."
+ "Ha ansiktet direkt framför telefonen.""För mycket rörelse. Håll mobilen stilla.""Registrera ansiktet på nytt.""Ansiktet kan inte längre kännas igen. Försök igen."
@@ -576,19 +577,19 @@
"Vrid mindre på huvudet.""Vrid mindre på huvudet.""Ta bort allt som täcker ansiktet."
- "Rengör sensorn på skärmens överkant."
+ "Rengör skärmens överkant, inklusive det svarta fältet""Ansiktsverifiering går ej. Otillgänglig maskinvara."
- "Testa ansiktsautentiseringen igen."
+ "Försök att använda ansiktslåset igen.""Kan inte lagra ny ansiktsdata. Radera först gammal data."
- "Ansiktsåtgärden har avbrutits"
- "Autentiseringen av ansiktet avbröts av användaren"
+ "Ansiktsåtgärden har avbrutits."
+ "Ansiktslås avbröts av användaren.""Du har gjort för många försök. Försök igen senare."
- "För många försök. Ansiktsautentisering har inaktiverats."
+ "För många försök. Ansiktslås har inaktiverats.""Det gick inte att verifiera ansiktet. Försök igen."
- "Du har inte konfigurerat ansiktsautentisering"
- "Ansiktsautentisering stöds inte på den här enheten"
+ "Du har inte konfigurerat ansiktslås."
+ "Ansiktslås stöds inte på den här enheten.""Ansikte %d"
@@ -1254,10 +1255,10 @@
"Tryck för att visa alla nätverk""Anslut""Alla nätverk"
- "Vill du ansluta till Wi-Fi-nätverk?"
- "Förslag från %s"
- "Ja"
- "Nej"
+ "Vill du tillåta föreslagna Wi-Fi-nätverk?"
+ "Nätverk som föreslagits av %s. Enheten kan anslutas automatiskt."
+ "Tillåt"
+ "Nej tack""Wi-Fi aktiveras automatiskt""När du är i närheten av ett sparat nätverk av hög kvalitet""Återaktivera inte"
@@ -1887,8 +1888,8 @@
"Okategoriserad""Du anger hur viktiga aviseringarna är.""Detta är viktigt på grund av personerna som deltar."
- "Tillåter du att %1$s skapar en ny användare för %2$s?"
- "Tillåter du att %1$s skapar en ny användare för %2$s (det finns redan en användare med det här kontot)?"
+ "Tillåter du att %1$s skapar en ny användare för %2$s (det finns redan en användare med det här kontot)?"
+ "Tillåter du att %1$s skapar en ny användare för %2$s?""Lägg till ett språk""Regionsinställningar""Ange språket"
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index 1071aef3cc306c19369bb0745ba60b75b44fac87..632076815d2b9b3ecd12e1aa97b0d753e7a5ea33 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -95,6 +95,7 @@
"Ujumbe wa sauti""Kupiga simu kupitia Wi-Fi""Hali ya SIM"
+ "Hali ya SIM ya kipaumbele cha juu""Hali ya TTY iliyoombwa na mtandao mwenza KAMILI""Hali ya TTY iliyoombwa na mtandao mwenza HCO""Hali ya TTY iliyoombwa na mtandao mwenza VCO"
@@ -363,7 +364,7 @@
"Wezesha mtindo wa gari""Inaruhusu programu kuwawezesha mtindo wa gari.""funga programu zingine"
- "Inaruhusu programu kukamilisha michakato ya usuli ya programu nyingine. Hii inaweza kusababisha programu nyingine kukoma kufanyakazi."
+ "Huruhusu programu kukamilisha michakato ya chinichini ya programu nyingine. Hii inaweza kusababisha programu nyingine kuacha kufanya kazi.""Programu hii inaweza kuonekana juu ya programu zingine""Programu hii inaweza kuonekana juu ya programu zingine au sehemu zingine za skrini. Hii huenda ikaathiri matumizi ya kawaida ya programu na kubadilisha jinsi ambavyo programu zingine zinavyoonekana.""tumia chini chini"
@@ -550,11 +551,11 @@
"Aikoni ya kitambulisho"
- "dhibiti maunzi ya kuthibitisha uso"
+ "dhibiti maunzi ya kufungua kwa uso""Huruhusu programu iombe njia za kuongeza na kufuta violezo vya uso vitakavyotumiwa."
- "tumia maunzi ya kuthibistiha uso"
- "Huruhusu programu ithibitishe uso kwa kutumia maunzi ya kuthibitisha"
- "Utambuzi wa Uso"
+ "tumia maunzi ya kufungua kwa uso"
+ "Huruhusu programu itumie maunzi ya kufungua kwa uso ili kuthibitisha"
+ "Kufungua kwa uso""Sajili uso wako tena""Ili kuimarisha utambuzi, tafadhali sajili uso wako tena""Imeshindwa kunasa data sahihi ya uso. Jaribu tena."
@@ -567,7 +568,7 @@
"Sogeza simu upande wa kushoto.""Sogeza simu upande wa kulia.""Tafadhali angalia kifaa chako moja kwa moja."
- "Uso wako hauonekani. Angalia simu."
+ "Weka uso wako moja kwa moja mbele ya simu.""Inatikisika sana. Ishike simu iwe thabiti.""Tafadhali sajili uso wako tena.""Haiwezi tena kutambua uso. Jaribu tena."
@@ -576,19 +577,19 @@
"Geuza kichwa chako kidogo.""Geuza kichwa chako kidogo.""Ondoa kitu chochote kinachoficha uso wako."
- "Safisha kitambuzi kwenye ukingo wa juu wa skrini."
+ "Safisha sehemu ya juu ya skrini yako, ikiwa ni pamoja na upau mweusi""Imeshindwa kuthibitisha uso. Maunzi hayapatikani."
- "Jaribu tena uthibitishaji wa uso."
+ "Jaribu kufungua kwa uso tena.""Imeshindwa kuhifadhi data ya uso mpya. Futa wa kale kwanza."
- "Utendaji wa kitambulisho umeghairiwa"
- "Mtumiaji ameghairi uthibitishaji wa uso"
+ "Utendaji wa kitambulisho umeghairiwa."
+ "Kufungua kwa uso kumeghairiwa na mtumiaji.""Umejaribu mara nyingi mno. Jaribu tena baadaye."
- "Umejaribu mara nyingi mno. Uthibitishaji wa uso umezimwa."
+ "Umejaribu mara nyingi mno. Kipengele cha kufungua kwa uso kimezimwa.""Imeshindwa kuthibitisha uso. Jaribu tena."
- "Hujaweka mipangilio ya uthibitishaji wa uso"
- "Uthibitishaji wa uso hautumiki kwenye kifaa hiki"
+ "Hujaweka mipangilio ya kufungua kwa uso."
+ "Kufungua kwa uso hakutumiki kwenye kifaa hiki.""Uso wa %d"
@@ -1192,7 +1193,7 @@
"Kompyuta kibao inasasishwa…""Kifaa kinasasishwa…""Simu inawaka…"
- "Inaanzisha Android..."
+ "Inawasha Android...""Kompyuta kibao inawaka…""Kifaa kiwaka…""Inaboresha hifadhi."
@@ -1254,10 +1255,10 @@
"Gusa ili uone mitandao yote""Unganisha""Mitandao yote"
- "Je, ungependa kuunganisha kwenye mitandao ya Wi-Fi?"
- "Imependekezwa na %s"
- "Ndiyo"
- "Hapana"
+ "Ungependa kuruhusu mitandao inayopendekezwa ya Wi-Fi?"
+ "Mitandao inayopendekezwa kwa ajili ya %s. Huenda kifaa kikaunganisha kiotomatiki."
+ "Ruhusu"
+ "Hapana, asante""Wi‑Fi itawashwa kiotomatiki""Unapokuwa karibu na mtandao uliohifadhiwa wenye ubora wa juu""Usiwashe tena"
@@ -1887,8 +1888,8 @@
"Ambazo aina haijabainishwa""Uliweka mipangilio ya umuhimu wa arifa hizi.""Hii ni muhimu kwa sababu ya watu waliohusika."
- "Ungependa kuruhusu %1$s iunde Mtumiaji mpya ikitumia %2$s?"
- "Ungependa kuruhusu %1$s iunde Mtumiaji mpya ikitumia %2$s (Je, akaunti hii tayari ina Mtumiaji)?"
+ "Ruhusu %1$s iweke Mtumiaji mpya ikitumia %2$s (Je, tayari kuna mtumiaji anayetumia akaunti hii)?"
+ "Ungependa kuruhusu %1$s iweke Mtumiaji mpya ikitumia %2$s?""Ongeza lugha""Mapendeleo ya eneo""Weka jina la lugha"
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 51d0ffa84a908ed8375d14806c238d1872060385..a76538bf3cbfc476ad8da4d62892e0a26b104f00 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -95,6 +95,7 @@
"குரலஞ்சல் செய்திகள்""வைஃபை அழைப்பு""சிம் நிலை"
+ "அதிக முன்னுரிமையுடைய சிம்மின் நிலை""TTY Mode FULLஐ இணைச் செயல்பாடு கோரியது""TTY Mode HCOஐ இணைச் செயல்பாடு கோரியது""TTY Mode VCOஐ இணைச் செயல்பாடு கோரியது"
@@ -219,7 +220,7 @@
"பாதுகாப்பான பயன்முறைக்கு மீண்டும் தொடங்கவும்""பாதுகாப்பான பயன்முறைக்குச் செல்ல மீண்டும் துவக்க விரும்புகிறீர்களா? நீங்கள் நிறுவிய எல்லா மூன்றாம் தரப்பு பயன்பாடுகளையும் இது முடக்கும். நீங்கள் மீண்டும் மறுதொடக்கம் செய்யும்போது அவை மீட்டமைக்கப்படும்.""சமீபத்தியவை"
- "சமீபத்திய பயன்பாடுகள் எதுவுமில்லை."
+ "சமீபத்திய ஆப்ஸ் எதுவுமில்லை.""டேப்லெட் விருப்பங்கள்""டிவி விருப்பங்கள்""தொலைபேசி விருப்பங்கள்"
@@ -269,7 +270,7 @@
"ஆப்ஸ் இயங்குகிறது""பேட்டரியைப் பயன்படுத்தும் ஆப்ஸ்""%1$s ஆப்ஸ் பேட்டரியைப் பயன்படுத்துகிறது"
- "%1$d பயன்பாடுகள் பேட்டரியைப் பயன்படுத்துகின்றன"
+ "%1$d ஆப்ஸ் பேட்டரியைப் பயன்படுத்துகின்றன""பேட்டரி மற்றும் டேட்டா உபயோக விவரங்களைக் காண, தட்டவும்""%1$s, %2$s""பாதுகாப்பு பயன்முறை"
@@ -339,33 +340,33 @@
"ஃபோன் அழைப்புகளுக்குப் பதிலளி""உள்வரும் ஃபோன் அழைப்பிற்குப் பதிலளிக்க, ஆப்ஸை அனுமதிக்கும்.""உரைச் செய்திகளை (SMS) பெறுதல்"
- "SMS செய்திகளைப் பெற, செயற்படுத்தப் ஆப்ஸை அனுமதிக்கிறது. இதற்கு அர்த்தம் உங்கள் சாதனத்திற்கு அனுப்பப்படும் செய்திகளை உங்களுக்குக் காட்டாமல் கண்காணிப்பதற்கு அல்லது நீக்குவதற்குப் பயன்பாட்டால் முடியும் என்பதாகும்."
+ "SMS செய்திகளைப் பெற, செயற்படுத்தப் ஆப்ஸை அனுமதிக்கிறது. இதற்கு அர்த்தம் உங்கள் சாதனத்திற்கு அனுப்பப்படும் செய்திகளை உங்களுக்குக் காட்டாமல் கண்காணிப்பதற்கு அல்லது நீக்குவதற்கு ஆப்ஸால் முடியும் என்பதாகும்.""உரைச் செய்திகளை (MMS) பெறுதல்"
- "MMS செய்திகளைப் பெற, செயற்படுத்தப் ஆப்ஸை அனுமதிக்கிறது. இதற்கு அர்த்தம் உங்கள் சாதனத்திற்கு அனுப்பப்படும் செய்திகளை உங்களுக்குக் காட்டாமல் கண்காணிக்கவோ, நீக்கவோ பயன்பாட்டால் முடியும் என்பதாகும்."
+ "MMS செய்திகளைப் பெற, செயற்படுத்தப் ஆப்ஸை அனுமதிக்கிறது. இதற்கு அர்த்தம் உங்கள் சாதனத்திற்கு அனுப்பப்படும் செய்திகளை உங்களுக்குக் காட்டாமல் கண்காணிக்கவோ, நீக்கவோ ஆப்ஸால் முடியும் என்பதாகும்.""செல் அலைபரப்புச் செய்திகளைப் படித்தல்"
- "உங்கள் சாதனத்தில் பெறப்படும் செல் அலைபரப்புச் செய்திகளைப் படிப்பதற்குப் ஆப்ஸை அனுமதிக்கிறது. அவசரநிலை சூழ்நிலைகளை உங்களுக்கு எச்சரிக்கைச் செய்வதற்கு சில இடங்களில் செல் அலைபரப்பு விழிப்பூட்டல்கள் வழங்கப்படும். அவசரநிலை மொபைல் அலைபரப்புப் பெறப்படும்போது உங்கள் சாதனத்தின் செயல்திறன் அல்லது செயல்பாட்டுடன் தீங்கிழைக்கும் பயன்பாடுகள் அதைத் தடுக்கலாம்."
+ "உங்கள் சாதனத்தில் பெறப்படும் செல் அலைபரப்புச் செய்திகளைப் படிப்பதற்குப் ஆப்ஸை அனுமதிக்கிறது. அவசரநிலை சூழ்நிலைகளை உங்களுக்கு எச்சரிக்கைச் செய்வதற்கு சில இடங்களில் செல் அலைபரப்பு விழிப்பூட்டல்கள் வழங்கப்படும். அவசரநிலை மொபைல் அலைபரப்புப் பெறப்படும்போது உங்கள் சாதனத்தின் செயல்திறன் அல்லது செயல்பாட்டுடன் தீங்கிழைக்கும் ஆப்ஸ் அதைத் தடுக்கலாம்.""குழுசேர்ந்த ஊட்டங்களைப் படித்தல்""தற்போது ஒத்திசைந்த ஊட்டங்களைப் பற்றிய விவரங்களைப் பெற ஆப்ஸை அனுமதிக்கிறது.""SMS செய்திகளை அனுப்புதல் மற்றும் பார்த்தல்"
- "SMS செய்திகளை அனுப்ப ஆப்ஸை அனுமதிக்கிறது. இதற்கு எதிர்பாராத பேமெண்ட்கள் விதிக்கப்படலாம். தீங்கு விளைவிக்கும் பயன்பாடுகள் உங்களின் உறுதிப்படுத்தல் எதுவுமின்றி செய்திகளை அனுப்பி உங்களுக்குக் கட்டணம் விதிக்கலாம்."
+ "SMS செய்திகளை அனுப்ப ஆப்ஸை அனுமதிக்கிறது. இதற்கு எதிர்பாராத பேமெண்ட்கள் விதிக்கப்படலாம். தீங்கு விளைவிக்கும் ஆப்ஸ் உங்களின் உறுதிப்படுத்தல் எதுவுமின்றி செய்திகளை அனுப்பி உங்களுக்குக் கட்டணம் விதிக்கலாம்.""உங்கள் உரைச் செய்திகளை (SMS அல்லது MMS) படித்தல்""இந்த ஆப்ஸ் உங்கள் டேப்லெட்டில் சேமிக்கப்பட்டுள்ள எல்லா SMS (உரை) செய்திகளையும் படிக்கலாம்.""இந்த ஆப்ஸ் உங்கள் டிவியில் சேமிக்கப்பட்டுள்ள எல்லா SMS (உரை) செய்திகளையும் படிக்கலாம்.""இந்த ஆப்ஸ் உங்கள் மொபைலில் சேமிக்கப்பட்டுள்ள எல்லா SMS (உரை) செய்திகளையும் படிக்கலாம்.""உரைச் செய்திகளைப் (WAP) பெறுதல்""WAP செய்திகளைப் பெற, செயற்படுத்தப் ஆப்ஸை அனுமதிக்கிறது. உங்களுக்கு அனுப்பப்படும் செய்திகளை உங்களுக்குக் காட்டாமல் கண்காணிக்க அல்லது நீக்குவதற்கான திறன் இந்த அனுமதியில் உள்ளடங்கும்."
- "இயங்கும் பயன்பாடுகளை மீட்டெடுத்தல்"
- "நடப்பில் மற்றும் சமீபத்தில் இயங்கும் காரியங்களின் தகவலைப் பெற ஆப்ஸை அனுமதிக்கிறது. சாதனத்தில் எந்தப் பயன்பாடுகள் பயன்படுத்தப்படுகின்றன என்பது குறித்த தகவலைக் கண்டறிய ஆப்ஸை இது அனுமதிக்கலாம்."
+ "இயங்கும் ஆப்ஸை மீட்டெடுத்தல்"
+ "நடப்பில் மற்றும் சமீபத்தில் இயங்கும் காரியங்களின் தகவலைப் பெற ஆப்ஸை அனுமதிக்கிறது. சாதனத்தில் எந்த ஆப்ஸ் பயன்படுத்தப்படுகின்றன என்பது குறித்த தகவலைக் கண்டறிய ஆப்ஸை இது அனுமதிக்கலாம்.""சுயவிவரத்தையும் சாதன உரிமையாளர்களையும் நிர்வகித்தல்"
- "சுயவிவர உரிமையாளர்களையும் சாதன உரிமையாளரையும் அமைக்க, பயன்பாடுகளை அனுமதிக்கிறது."
- "இயங்கும் பயன்பாடுகளை மறுவரிசைப்படுத்தல்"
+ "சுயவிவர உரிமையாளர்களையும் சாதன உரிமையாளரையும் அமைக்க, ஆப்ஸை அனுமதிக்கிறது."
+ "இயங்கும் ஆப்ஸை மறுவரிசைப்படுத்தல்""பின்புலத்திலும், முன்புலத்திலும் காரியங்களை நகர்த்த ஆப்ஸை அனுமதிக்கிறது. உங்கள் உள்ளீடு இல்லாமலே ஆப்ஸ் இதைச் செய்யலாம்.""கார் பயன்முறையை இயக்குதல்""கார் முறையை இயக்க, ஆப்ஸை அனுமதிக்கிறது."
- "பிற பயன்பாடுகளை மூடுதல்"
- "பிற பயன்பாடுகளின் பின்புலச் செயல்முறைகளை நிறுத்த ஆப்ஸை அனுமதிக்கிறது. இதனால் பிற பயன்பாடுகள் இயங்குவதை நிறுத்தலாம்."
- "இந்த ஆப்ஸ் பிற பயன்பாடுகளின் மேலே தோன்றலாம்"
- "இந்த ஆப்ஸ் பிற பயன்பாடுகளின் மேலே அல்லது திரையின் பிற பகுதிகளில் தோன்றலாம். இது வழக்கமான பயன்பாட்டு உபயோகத்தில் குறுக்கிட்டு, பிற பயன்பாடுகள் தோன்றும் விதத்தை மாற்றக்கூடும்."
+ "பிற ஆப்ஸை மூடுதல்"
+ "பிற ஆப்ஸின் பின்புலச் செயல்முறைகளை நிறுத்த ஆப்ஸை அனுமதிக்கிறது. இதனால் பிற ஆப்ஸ் இயங்குவதை நிறுத்தலாம்."
+ "இந்த ஆப்ஸ் பிற ஆப்ஸின் மேலே தோன்றலாம்"
+ "இந்த ஆப்ஸ் பிற ஆப்ஸின் மேலே அல்லது திரையின் பிற பகுதிகளில் தோன்றலாம். இது வழக்கமான ஆப்ஸ் உபயோகத்தில் குறுக்கிட்டு, பிற ஆப்ஸ் தோன்றும் விதத்தை மாற்றக்கூடும்.""பின்னணியில் இயக்கு""இந்த ஆப்ஸ், பின்னணியில் இயங்கலாம். இதனால் பேட்டரி விரைவாகத் தீர்ந்துவிடக்கூடும்.""பின்னணியில் தரவைப் பயன்படுத்து"
@@ -379,7 +380,7 @@
"பயன்பாட்டுச் சேமிப்பு இடத்தை அளவிடல்""ஆப்ஸ், அதன் குறியீடு, தரவு, மற்றும் தற்காலிகச் சேமிப்பு அளவுகளை மீட்டெடுக்க அனுமதிக்கிறது""சாதன அமைப்புகளை மாற்றுதல்"
- "முறைமையின் அமைப்பு தரவைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. தீங்குவிளைவிக்கும் பயன்பாடுகள், முறைமையின் உள்ளமைவைச் சிதைக்கலாம்."
+ "முறைமையின் அமைப்பு தரவைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. தீங்குவிளைவிக்கும் ஆப்ஸ், முறைமையின் உள்ளமைவைச் சிதைக்கலாம்.""தொடக்கத்தில் இயக்குதல்""மறுஇயக்கம் முடிந்தது, விரைவில் தானாகவே தொடங்க, ஆப்ஸை அனுமதிக்கிறது. இதனால் டேப்லெட் நீண்ட நேரம் கழித்து தொடங்கும் மற்றும் எப்போதும் இயங்குகின்ற டேப்லெட்டின் ஒட்டுமொத்தச் செயல்பாட்டையும் தாமதமாகும்.""சாதனம் தொடங்குவது முடிந்தவுடன், ஆப்ஸ் தானாகவே விரைவில் தொடங்க அனுமதிக்கிறது. இது டிவி தொடங்குவதற்கான நேரத்தைத் தாமதமாக்குவதோடு, எப்போதும் இயங்கிக்கொண்டிருப்பதன் மூலம் ஒட்டுமொத்த டேப்லெட்டின் வேகத்தைக் குறைக்க, ஆப்ஸை அனுமதிக்கிறது."
@@ -389,21 +390,21 @@
"அலைபரப்பு முடிந்த பின்னரும் தங்கிவிடும் ஸ்டிக்கி அலைபரப்புகளை அனுப்ப, ஆப்ஸை அனுமதிக்கிறது. அளவுக்கதிகமான உபயோகமானது, டிவியின் வேகத்தைக் குறைக்கலாம் அல்லது அதிகமான நினைவகம் பயன்பட்டால் நிலையற்றதாகலாம்.""அலைபரப்பு முடிந்த பின்னும் இருக்கும், தொடர்ந்து அணுகத்தக்க அலைபரப்பை அனுப்பப் ஆப்ஸை அனுமதிக்கிறது. அதிகமாகப் பயன்படுத்தினால், மொபைலானது நினைவகத்தை மிக அதிகமாகப் பயன்படுத்துவதால் வேகம் குறைந்ததாகவும், நிலையற்றதாகவும் ஆகலாம்.""உங்கள் தொடர்புகளைப் படித்தல்"
- "குறிப்பிட்டவர்களுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உட்பட, உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைப் படிக்க ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதி, உங்கள் தொடர்பு தரவைச் சேமிக்க பயன்பாடுகளை அனுமதிக்கிறது, மேலும் தீங்கிழைக்கும் பயன்பாடுகள் உங்களுக்குத் தெரியாமல் தொடர்பு தரவைப் பகிரலாம்."
- "உங்கள் டிவியில் சேமிக்கப்பட்ட தொடர்புகள் பற்றிய தரவைப் படிக்க, ஆப்ஸை அனுமதிக்கிறது, இதில் குறிப்பிட்ட தனிநபர் எண்ணை எத்தனைமுறை அழைத்தீர்கள், மின்னஞ்சல் செய்தீர்கள் அல்லது பிறவழிகளில் தொடர்புகொண்டீர்கள் என்பதும் அடங்கும். இந்த அனுமதியானது உங்கள் தொடர்புத் தரவைச் சேமிக்கப் ஆப்ஸை அனுமதிக்கிறது மற்றும் தீங்குவிளைவிக்கும் பயன்பாடுகள் உங்கள் அனுமதியின்றி தொடர்புத் தரவைப் பகிரலாம்."
- "குறிப்பிட்டவர்களுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்ட எண்ணிக்கை உட்பட, உங்கள் மொபைலில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைப் படிக்க ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதி, உங்கள் தொடர்பு தரவைச் சேமிக்க பயன்பாடுகளை அனுமதிக்கிறது, மேலும் தீங்கிழைக்கும் பயன்பாடுகள் உங்களுக்குத் தெரியாமல் தொடர்பு தரவைப் பகிரலாம்."
+ "குறிப்பிட்டவர்களுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உட்பட, உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைப் படிக்க ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதி, உங்கள் தொடர்பு தரவைச் சேமிக்க ஆப்ஸை அனுமதிக்கிறது, மேலும் தீங்கிழைக்கும் ஆப்ஸ் உங்களுக்குத் தெரியாமல் தொடர்பு தரவைப் பகிரலாம்."
+ "உங்கள் டிவியில் சேமிக்கப்பட்ட தொடர்புகள் பற்றிய தரவைப் படிக்க, ஆப்ஸை அனுமதிக்கிறது, இதில் குறிப்பிட்ட தனிநபர் எண்ணை எத்தனைமுறை அழைத்தீர்கள், மின்னஞ்சல் செய்தீர்கள் அல்லது பிறவழிகளில் தொடர்புகொண்டீர்கள் என்பதும் அடங்கும். இந்த அனுமதியானது உங்கள் தொடர்புத் தரவைச் சேமிக்கப் ஆப்ஸை அனுமதிக்கிறது மற்றும் தீங்குவிளைவிக்கும் ஆப்ஸ் உங்கள் அனுமதியின்றி தொடர்புத் தரவைப் பகிரலாம்."
+ "குறிப்பிட்டவர்களுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்ட எண்ணிக்கை உட்பட, உங்கள் மொபைலில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைப் படிக்க ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதி, உங்கள் தொடர்பு தரவைச் சேமிக்க ஆப்ஸை அனுமதிக்கிறது, மேலும் தீங்கிழைக்கும் ஆப்ஸ் உங்களுக்குத் தெரியாமல் தொடர்பு தரவைப் பகிரலாம்.""உங்கள் தொடர்புகளை மாற்றுதல்"
- "குறிப்பிட்ட தொடர்புகளுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உள்பட, உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதியானது தொடர்புத் தரவை நீக்கப் பயன்பாடுகளை அனுமதிக்கிறது."
+ "குறிப்பிட்ட தொடர்புகளுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உள்பட, உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதியானது தொடர்புத் தரவை நீக்க ஆப்ஸை அனுமதிக்கிறது.""உங்கள் டிவியில் சேமிக்கப்பட்ட தொடர்புகள் பற்றிய தரவை மாற்ற, ஆப்ஸை அனுமதிக்கிறது, இதில் குறிப்பிட்ட தொடர்பை எத்தனைமுறை அழைத்தீர்கள், மின்னஞ்சல் செய்தீர்கள் அல்லது பிறவழிகளில் தொடர்புகொண்டீர்கள் என்பதும் அடங்கும். இது தொடர்புத் தரவை நீக்க, ஆப்ஸை அனுமதிக்கிறது."
- "குறிப்பிட்ட தொடர்புகளுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உள்பட, உங்கள் மொபைலில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதியானது தொடர்புத் தரவை நீக்கப் பயன்பாடுகளை அனுமதிக்கிறது."
+ "குறிப்பிட்ட தொடர்புகளுடன் நீங்கள் அழைத்த, மின்னஞ்சல் அனுப்பிய அல்லது வேறு வழியில் தொடர்புகொண்டதின் எண்ணிக்கை உள்பட, உங்கள் மொபைலில் சேமிக்கப்பட்ட உங்கள் தொடர்புகள் குறித்த தரவைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இந்த அனுமதியானது தொடர்புத் தரவை நீக்க ஆப்ஸை அனுமதிக்கிறது.""அழைப்புப் பதிவைப் படித்தல்""இந்த ஆப்ஸ் உங்கள் அழைப்பு வரலாற்றைப் படிக்கலாம்.""அழைப்புப் பதிவை எழுதுதல்"
- "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்பட உங்கள் டேப்லெட்டின் அழைப்புப் பதிவைத் திருத்துவதற்குப் ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பின் பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."
- "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்ளிட்ட உங்கள் டிவியின் அழைப்பு பதிவைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பு பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."
- "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்பட உங்கள் மொபைல் அழைப்புப் பதிவைத் திருத்துவதற்குப் ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பின் பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."
+ "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்பட உங்கள் டேப்லெட்டின் அழைப்புப் பதிவைத் திருத்துவதற்குப் ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பின் பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் ஆப்ஸ் இதைப் பயன்படுத்தலாம்."
+ "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்ளிட்ட உங்கள் டிவியின் அழைப்பு பதிவைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பு பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் ஆப்ஸ் இதைப் பயன்படுத்தலாம்."
+ "உள்வரும் மற்றும் வெளிச்செல்லும் அழைப்புகள் குறித்த தகவல் உள்பட உங்கள் மொபைல் அழைப்புப் பதிவைத் திருத்துவதற்குப் ஆப்ஸை அனுமதிக்கிறது. உங்கள் அழைப்பின் பதிவை அழிக்க அல்லது திருத்த தீங்கு விளைவிக்கும் ஆப்ஸ் இதைப் பயன்படுத்தலாம்.""உடல் உணர்விகளை (இதயத் துடிப்பு மானிட்டர்கள் போன்றவை) அணுகுதல்"
- "உங்கள் இதயத்துடிப்பு விகிதம் போன்ற உங்கள் உடல்நிலையைக் கண்காணிக்கும் உணர்விகளில் இருந்து தரவை அணுக பயன்பாடுகளை அனுமதிக்கும்."
+ "உங்கள் இதயத்துடிப்பு விகிதம் போன்ற உங்கள் உடல்நிலையைக் கண்காணிக்கும் உணர்விகளில் இருந்து தரவை அணுக ஆப்ஸை அனுமதிக்கும்.""கேலெண்டர் நிகழ்வுகளையும் விவரங்களையும் படிக்கலாம்""இந்த ஆப்ஸ் உங்கள் டேப்லெட்டில் சேமிக்கப்பட்டுள்ள கேலெண்டர் நிகழ்வுகள் அனைத்தையும் படிக்கலாம், உங்கள் கேலெண்டர் தரவைப் பகிரலாம் அல்லது சேமிக்கலாம்.""இந்த ஆப்ஸ் உங்கள் டிவியில் சேமிக்கப்பட்டுள்ள எல்லா கேலெண்டர் நிகழ்வுகளையும் படிக்கலாம், உங்கள் கேலெண்டர் தரவைப் பகிரலாம் அல்லது சேமிக்கலாம்."
@@ -435,7 +436,7 @@
"அதிர்வைக் கட்டுப்படுத்துதல்""அதிர்வைக் கட்டுப்படுத்தப் ஆப்ஸை அனுமதிக்கிறது.""தொலைபேசி எண்களை நேரடியாக அழைத்தல்"
- "உங்கள் தலையீட்டின்றி மொபைல் எண்களை அழைக்கப் ஆப்ஸை அனுமதிக்கிறது. இதன் விளைவாக எதிர்பாராத கட்டணங்களோ அழைப்புகளோ ஏற்படலாம். அவசரகால எண்களை அழைக்க இது ஆப்ஸை அனுமதிக்காது என்பதை நினைவில்கொள்ளவும். தீங்கிழைக்கும் பயன்பாடுகள், உங்கள் உறுதிப்படுத்தல் இன்றி அழைப்புகளைச் செய்வதால் உங்களுக்குச் செலவு ஏற்படக்கூடும்."
+ "உங்கள் தலையீட்டின்றி மொபைல் எண்களை அழைக்கப் ஆப்ஸை அனுமதிக்கிறது. இதன் விளைவாக எதிர்பாராத கட்டணங்களோ அழைப்புகளோ ஏற்படலாம். அவசரகால எண்களை அழைக்க இது ஆப்ஸை அனுமதிக்காது என்பதை நினைவில்கொள்ளவும். தீங்கிழைக்கும் ஆப்ஸ், உங்கள் உறுதிப்படுத்தல் இன்றி அழைப்புகளைச் செய்வதால் உங்களுக்குச் செலவு ஏற்படக்கூடும்.""IMS அழைப்புச் சேவையை அணுகுதல்""உங்கள் குறுக்கீடின்றி IMS சேவையைப் பயன்படுத்தி அழைப்பதற்கு, ஆப்ஸை அனுமதிக்கும்.""மொபைல் நிலை மற்றும் அடையாளத்தைப் படித்தல்"
@@ -550,11 +551,11 @@
"கைரேகை ஐகான்"
- "முக அங்கீகாரத்திற்கான வன்பொருளை நிர்வகித்தல்"
+ "\'முகம் காட்டித் திறத்தலுக்கான\' வன்பொருளை நிர்வகித்தல்""உபயோகிப்பதற்காக முக டெம்ப்ளேட்டுகளை சேர்க்கும்/நீக்கும் முறைகளை இயக்க, ஆப்ஸை அனுமதிக்கும்."
- "முக அங்கீகாரத்திற்கான வன்பொருளைப் பயன்படுத்துதல்"
- "அடையாளம் காண்பதற்கு, முக அங்கீகார வன்பொருளைப் பயன்படுத்த ஆப்ஸை அனுமதிக்கிறது"
- "முக அங்கீகாரம்"
+ "’முகம் காட்டித் திறத்தல்’ அம்சத்திற்கான வன்பொருளைப் பயன்படுத்துதல்"
+ "அடையாளம் காண \'முகம் காட்டித் திறத்தலுக்கான\' வன்பொருளைப் பயன்படுத்த ஆப்ஸை அனுமதிக்கும்"
+ "முகம் காட்டித் திறத்தல்""முகத்தை மீண்டும் பதிவுசெய்யவும்""அடையாளத்தை மேம்படுத்த முகத்தை மீண்டும் பதிவுசெய்யவும்""முகம் தெளிவாகப் பதிவாகவில்லை. மீண்டும் முயலவும்."
@@ -567,7 +568,7 @@
"மொபைலை இடப்புறம் நகர்த்தவும்.""மொபைலை வலப்புறம் நகர்த்தவும்.""முழுமுகம் தெரியுமாறு நேராகப் பார்க்கவும்."
- "முகம் சரியாகத் தெரியவில்லை. மொபைலைப் பார்க்கவும்."
+ "முகத்தை மொபைலுக்கு நேராக வைக்கவும்.""அதிகமாக அசைகிறது. மொபைலை அசைக்காமல் பிடிக்கவும்.""உங்கள் முகத்தை மீண்டும் பதிவுசெய்யுங்கள்.""முகத்தைக் கண்டறிய இயலவில்லை. மீண்டும் முயலவும்."
@@ -576,19 +577,19 @@
"தலையை லேசாகத் திருப்பவும்.""உங்கள் தலையைச் சற்றுத் திருப்பவும்.""உங்கள் முகத்தை மறைக்கும் அனைத்தையும் நீக்குக."
- "திரையின் மேல்முனையிலுள்ள சென்சாரைச் சுத்தம் செய்க."
+ "திரையையும் அதிலுள்ள கருப்புப் பட்டியையும் சுத்தம் செய்யவும்""முகத்தைச் சரிபார்க்க இயலவில்லை. வன்பொருள் இல்லை."
- "முக அங்கீகாரத்தை மீண்டும் முயலவும்."
+ "\'முகம் காட்டித் திறத்தலை\' மீண்டும் முயலவும்.""புதிய முகங்களைச் சேர்க்க இயலவில்லை. பழையது ஒன்றை நீக்கவும்."
- "முக அங்கீகாரச் செயல்பாடு ரத்துசெய்யப்பட்டது"
- "முக அங்கீகாரம் பயனரால் ரத்துசெய்யப்பட்டது"
+ "முக அங்கீகாரச் செயல்பாடு ரத்துசெய்யப்பட்டது."
+ "\'முகம் காட்டித் திறத்தல்\' பயனரால் ரத்துசெய்யப்பட்டது.""பலமுறை முயன்றுவிட்டீர்கள். பிறகு முயலவும்."
- "பலமுறை முயன்றுவிட்டீர்கள். முக அங்கீகாரம் முடக்கப்பட்டது."
+ "பலமுறை முயன்றுவிட்டீர்கள். \'முகம் காட்டித் திறத்தல்’ முடக்கப்பட்டது.""முகத்தைச் சரிபார்க்க இயலவில்லை. மீண்டும் முயலவும்."
- "முக அங்கீகாரத்தை இன்னும் நீங்கள் அமைக்கவில்லை"
- "இந்தச் சாதனத்தில் முக அங்கீகாரம் ஆதரிக்கப்படவில்லை"
+ "’முகம் காட்டித் திறத்தலை’ நீங்கள் அமைக்கவில்லை."
+ "இந்த சாதனத்தில் ’முகம் காட்டித் திறத்தல்’ ஆதரிக்கப்படவில்லை.""முகம் %d"
@@ -935,15 +936,15 @@
"உங்கள் இணையப் புத்தக்கக்குறிகள் மற்றும் வரலாற்றைப் படித்தல்""உலாவி மூலம் பார்வையிட்ட எல்லா URLகளின் வரலாற்றையும், உலாவியில் குறிக்கப்பட்ட எல்லா புத்தகக்குறிகளையும் படிக்கப் ஆப்ஸை அனுமதிக்கிறது. குறிப்பு: மூன்றாம் தரப்பு உலாவிகள் அல்லது இணைய உலாவல் திறன்களுடன் கூடிய பிற பயன்பாடுகளால் இந்த அனுமதி செயற்படுத்தப்படாமல் போகலாம்.""இணையப் புத்தகக்குறிகளையும், வரலாற்றையும் எழுதுதல்"
- "உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற பயன்பாடுகள் இந்த அனுமதியைச் செயற்படுத்த முடியாது."
- "டிவியில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்க அல்லது திருத்த ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இந்த அனுமதி, மூன்றாம் தரப்பு உலாவிகள் அல்லது இணைய உலாவல் திறன்களுடன் கூடிய பிற பயன்பாடுகள் போன்றவற்றில் செயல்படாமல் போகலாம்."
- "உங்கள் மொபைலில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற பயன்பாடுகள் இந்த அனுமதியைச் செயற்படுத்த முடியாது."
+ "உங்கள் டேப்லெட்டில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற ஆப்ஸ் இந்த அனுமதியைச் செயற்படுத்த முடியாது."
+ "டிவியில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்க அல்லது திருத்த ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இந்த அனுமதி, மூன்றாம் தரப்பு உலாவிகள் அல்லது இணைய உலாவல் திறன்களுடன் கூடிய பிற ஆப்ஸ் போன்றவற்றில் செயல்படாமல் போகலாம்."
+ "உங்கள் மொபைலில் சேமிக்கப்பட்ட உலாவியின் வரலாறு அல்லது புத்தகக்குறிகளைத் திருத்த ஆப்ஸை அனுமதிக்கிறது. இது உலாவியின் தரவை அழிக்கவோ, திருத்தவோ ஆப்ஸை அனுமதிக்கலாம். குறிப்பு: இணைய உலாவல் செயல்திறன்கள் மூலம் மூன்றாம் தரப்பு உலாவிகள் அல்லது பிற ஆப்ஸ் இந்த அனுமதியைச் செயற்படுத்த முடியாது.""அலாரத்தை அமைத்தல்""நிறுவிய அலார கடிகாரப் பயன்பாட்டில் அலாரத்தை அமைக்க, ஆப்ஸை அனுமதிக்கிறது. சில அலார கடிகார பயன்பாடுகளில் இந்த அம்சம் இல்லாமல் இருக்கலாம்.""குரலஞ்சலைச் சேர்த்தல்""குரலஞ்சல் இன்பாக்ஸில் செய்திகளைச் சேர்க்க, ஆப்ஸை அனுமதிக்கிறது.""உலாவியின் புவியியல் இருப்பிடம் சார்ந்த அனுமதிகளைத் திருத்துதல்"
- "உலாவியின் புவியியல் இருப்பிடம் சார்ந்த அனுமதிகளைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. இடத் தகவலை தன்னிச்சையான இணையதளங்களுக்கு அனுப்புவதை அனுமதிக்க, தீங்குவிளைவிக்கும் பயன்பாடுகள் இதைப் பயன்படுத்தலாம்."
+ "உலாவியின் புவியியல் இருப்பிடம் சார்ந்த அனுமதிகளைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. இடத் தகவலை தன்னிச்சையான இணையதளங்களுக்கு அனுப்புவதை அனுமதிக்க, தீங்குவிளைவிக்கும் ஆப்ஸ் இதைப் பயன்படுத்தலாம்.""இந்தக் கடவுச்சொல்லை உலாவி நினைவில்கொள்ள விரும்புகிறீர்களா?""இப்போது இல்லை""நினைவில்கொள்"
@@ -1152,10 +1153,10 @@
"படமெடு""இந்தச் செயலுக்கு இயல்பாகப் பயன்படுத்து.""வேறு ஆப்ஸைப் பயன்படுத்தவும்"
- "முறைமை அமைப்பு > பயன்பாடுகள் > பதிவிறக்கியவை என்பதில் உள்ள இயல்பை அழிக்கவும்."
+ "முறைமை அமைப்பு > ஆப்ஸ் > பதிவிறக்கியவை என்பதில் உள்ள இயல்பை அழிக்கவும்.""செயலைத் தேர்ந்தெடுக்கவும்""USB சாதனத்திற்கான பயன்பாட்டைத் தேர்வுசெய்க"
- "இந்தச் செயலைச் செய்ய பயன்பாடுகள் எதுவுமில்லை."
+ "இந்தச் செயலைச் செய்ய ஆப்ஸ் எதுவுமில்லை.""%1$s செயலிழந்தது""%1$s செயலிழந்தது""%1$s தொடர்ந்து செயலிழக்கிறது"
@@ -1180,7 +1181,7 @@
"%1$s உண்மையாக வெளியிடப்பட்டது.""அளவு""எப்போதும் காட்டு"
- "சிஸ்டம் அமைப்பு > பயன்பாடுகள் > பதிவிறக்கம் என்பதில் இதை மீண்டும் இயக்கவும்."
+ "சிஸ்டம் அமைப்பு > ஆப்ஸ் > பதிவிறக்கம் என்பதில் இதை மீண்டும் இயக்கவும்.""தற்போதைய திரை அளவு அமைப்பை %1$s ஆதரிக்காததால், அது வழக்கத்திற்கு மாறாகச் செயல்படக்கூடும்.""எப்போதும் காட்டு""%1$s பயன்பாடானது, இந்தச் சாதனத்தின் Android OSக்கு இணக்கமற்ற பதிப்பிற்காக உருவாக்கப்பட்டதால், இதில் சரியாகச் செயல்படாது. இந்த ஆப்ஸின் புதுப்பிக்கப்பட்ட பதிப்பானது தற்போது கிடைக்கக்கூடும்."
@@ -1200,7 +1201,7 @@
"%1$sஐ மேம்படுத்துகிறது…""%1$d / %2$d ஆப்ஸை ஒருங்கிணைக்கிறது.""%1$sஐத் தயார்செய்கிறது."
- "பயன்பாடுகள் தொடங்கப்படுகின்றன."
+ "ஆப்ஸ் தொடங்கப்படுகின்றன.""துவக்குதலை முடிக்கிறது.""%1$s இயங்குகிறது""கேமிற்குச் செல்ல, தட்டவும்"
@@ -1254,10 +1255,10 @@
"எல்லா நெட்வொர்க்குகளையும் பார்க்க, தட்டவும்""இணை""எல்லா நெட்வொர்க்குகளும்"
- "வைஃபை நெட்வொக்குகளுடன் இணைக்கவா?"
- "%s ஆப்ஸால் பரிந்துரைக்கப்பட்டது"
- "சரி"
- "வேண்டாம்"
+ "பரிந்துரைக்கப்பட்ட வைஃபை நெட்வொர்க்குகளை அனுமதிக்க வேண்டுமா?"
+ "%s பரிந்துரைக்கும் நெட்வொர்க்குகள். சாதனம் தானாக இணைக்கப்படக்கூடும்."
+ "அனுமதி"
+ "வேண்டாம்""வைஃபை தானாக ஆன் ஆகும்""சேமித்த, உயர்தர நெட்வொர்க்கிற்கு அருகில் இருக்கும்போது""மீண்டும் ஆன் செய்யாதே"
@@ -1319,7 +1320,7 @@
"அனுப்பு""ரத்துசெய்""எனது விருப்பத்தேர்வை நினைவில்கொள்"
- "அமைப்பு > பயன்பாடுகள் என்பதில் பிறகு நீங்கள் மாற்றலாம்"
+ "அமைப்பு > ஆப்ஸ் என்பதில் பிறகு நீங்கள் மாற்றலாம்""எப்போதும் அனுமதி""ஒருபோதும் அனுமதிக்காதே""சிம் கார்டு அகற்றப்பட்டது"
@@ -1377,7 +1378,7 @@
" ABCDEFGHIJKLMNOPQRSTUVWXYZ"" 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ""பிற ஆப்ஸின் மேலே காட்டு"
- "%s பிற பயன்பாடுகளின் மீது தோன்றுகிறது"
+ "%s பிற ஆப்ஸின் மீது தோன்றுகிறது""%s பிற ஆப்ஸின் மீது தோன்றுகிறது""%s இந்த அம்சத்தைப் பயன்படுத்த வேண்டாம் என நினைத்தால், அமைப்புகளைத் திறந்து அதை முடக்க, தட்டவும்.""ஆஃப் செய்"
@@ -1443,7 +1444,7 @@
"செயலாக்கு""%s ஐப் பயன்படுத்தி\nஅழை""%s ஐப்\nபயன்படுத்தி தொடர்பை உருவாக்கு"
- "பின்வரும் ஒன்று அல்லது அதற்கு மேற்பட்ட பயன்பாடுகள், இப்போதும் எதிர்காலத்திலும் உங்கள் கணக்கை அணுகுவதற்கான அனுமதியைக் கோருகின்றன."
+ "பின்வரும் ஒன்று அல்லது அதற்கு மேற்பட்ட ஆப்ஸ், இப்போதும் எதிர்காலத்திலும் உங்கள் கணக்கை அணுகுவதற்கான அனுமதியைக் கோருகின்றன.""இந்தக் கோரிக்கையை அனுமதிக்க விரும்புகிறீர்களா?""அணுகல் கோரிக்கை""அனுமதி"
@@ -1888,8 +1889,8 @@
"வகைப்படுத்தப்படாதவை""இந்த அறிவிப்புகளின் முக்கியத்துவத்தை அமைத்துள்ளீர்கள்.""ஈடுபட்டுள்ளவர்களின் காரணமாக, இது முக்கியமானது."
- "%2$s மூலம் புதிய பயனரை உருவாக்க %1$sஐ அனுமதிக்கவா?"
- "%2$s (இந்தக் கணக்கில் ஏற்கனவே ஒரு பயனர் உள்ளார்) மூலம் புதிய பயனரை உருவாக்க %1$sஐ அனுமதிக்கவா?"
+ "%2$s மூலம் புதிய பயனரை உருவாக்க %1$s ஆப்ஸை அனுமதிக்கவா (இந்தக் கணக்கில் ஏற்கெனவே ஒரு பயனர் உள்ளார்) ?"
+ "%2$s மூலம் புதிய பயனரை உருவாக்க %1$s ஆப்ஸை அனுமதிக்கவா?""மொழியைச் சேர்""மண்டல விருப்பம்""மொழி பெயரை உள்ளிடுக"
@@ -1998,7 +1999,7 @@
"அமைப்புகள்""கேமரா""மைக்ரோஃபோன்"
- "உங்கள் திரையில் உள்ள பிற பயன்பாடுகளின் மேல் காட்டுகிறது"
+ "உங்கள் திரையில் உள்ள பிற ஆப்ஸின் மேல் காட்டுகிறது""வழக்கமான பேட்டரி சேமிப்பானுக்கான விவர அறிவிப்பு""வழக்கமாகச் சார்ஜ் செய்வதற்கு முன்பே பேட்டரி தீர்ந்துபோகக்கூடும்""பேட்டரி நிலையை நீட்டிக்க பேட்டரி சேமிப்பான் இயக்கப்பட்டுள்ளது"
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 1556b1739fb729fb8b478bca1ef7dc82bbe3195f..6112bc596c23c39f8664523275a836ebc3c37b34 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -95,6 +95,7 @@
"వాయిస్ మెయిల్ సందేశాలు""Wi-Fi కాలింగ్""SIM స్థితి"
+ "అధిక ప్రాధాన్యత గల SIM స్థితి""అవతలి వారు FULL TTY మోడ్ని అభ్యర్థించారు""అవతలి వారు HCO TTY మోడ్ని అభ్యర్థించారు""అవతలి వారు VCO TTY మోడ్ని అభ్యర్థించారు"
@@ -290,7 +291,7 @@
"మీ క్యాలెండర్ని యాక్సెస్ చేయడానికి <b>%1$s</b>ని అనుమతించాలా?""SMS""SMS సందేశాలను పంపడం మరియు వీక్షించడం"
- "SMS సందేశాలు పంపడానికి మరియు వీక్షించడానికి <b>%1$s</b>ని అనుమతించాలా?"
+ "SMS సందేశాలు పంపడం, చూడటం చేయగలిగేలా <b>%1$s</b>ను అనుమతించాలా?""నిల్వ""మీ పరికరంలోని ఫోటోలు, మీడియా మరియు ఫైల్లను యాక్సెస్ చేయడానికి""మీ పరికరంలోని ఫోటోలు, మీడియా మరియు ఫైల్లను యాక్సెస్ చేయడానికి <b>%1$s</b>ను అనుమతించాలా?"
@@ -330,7 +331,7 @@
"స్థితి బార్ ఉండేలా చేయడానికి యాప్ను అనుమతిస్తుంది.""స్థితి పట్టీని విస్తరింపజేయడం/కుదించడం""స్థితి బార్ను విస్తరింపజేయడానికి లేదా కుదించడానికి యాప్ను అనుమతిస్తుంది."
- "సత్వరమార్గాలను ఇన్స్టాల్ చేయడం"
+ "షార్ట్కట్లను ఇన్స్టాల్ చేయడం""వినియోగదారు ప్రమేయం లేకుండానే హోమ్స్క్రీన్ సత్వరమార్గాలను జోడించడానికి అనువర్తనాన్ని అనుమతిస్తుంది.""సత్వరమార్గాలను అన్ఇన్స్టాల్ చేయడం""వినియోగదారు ప్రమేయం లేకుండానే హోమ్స్క్రీన్ సత్వరమార్గాలను తీసివేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది."
@@ -358,7 +359,7 @@
"ప్రస్తుతం మరియు ఇటీవల అమలవుతున్న విధుల గురించి వివరణాత్మక సమాచారాన్ని తిరిగి పొందడానికి యాప్ను అనుమతిస్తుంది. ఇది పరికరంలో ఉపయోగించబడిన యాప్ల గురించి సమాచారాన్ని కనుగొనడానికి యాప్ను అనుమతించవచ్చు.""ప్రొఫైల్ మరియు పరికర యజమానులను నిర్వహించడం""ప్రొఫైల్ యజమానులను మరియు పరికరం యజమానిని సెట్ చేయడానికి అనువర్తనాలను అనుమతిస్తుంది."
- "అమలవుతున్న అనువర్తనాలను మళ్లీ క్రమం చేయడం"
+ "అమలవుతోన్న యాప్లను మళ్లీ క్రమం చేయడం""విధులను ముందుకు మరియు నేపథ్యానికి తరలించడానికి యాప్ను అనుమతిస్తుంది. యాప్ మీ ప్రమేయం లేకుండానే దీన్ని చేయవచ్చు.""కారు మోడ్ను ప్రారంభించడం""కారు మోడ్ను ప్రారంభించడానికి యాప్ను అనుమతిస్తుంది."
@@ -450,7 +451,7 @@
"పరికరం యొక్క ఫోన్ నంబర్లను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది.""టాబ్లెట్ను నిద్రావస్థకు వెళ్లనీయకుండా నిరోధించడం""టీవీ నిద్రావస్థకు వెళ్లకుండా నిరోధించడం"
- "ఫోన్ను నిద్రావస్థకు వెళ్లనీయకుండా నిరోధించడం"
+ "ఫోన్ను స్లీప్ మోడ్లోకి వెళ్లనీయకుండా నిరోధించగలగడం""నిద్రావస్థకి వెళ్లకుండా టాబ్లెట్ను నిరోధించడానికి యాప్ను అనుమతిస్తుంది.""టీవీ నిద్రావస్థకు వెళ్లకుండా నిరోధించడానికి అనువర్తనాన్ని అనుమతిస్తుంది.""నిద్రావస్థకి వెళ్లకుండా ఫోన్ను నిరోధించడానికి యాప్ను అనుమతిస్తుంది."
@@ -472,7 +473,7 @@
"ఫోన్కు తెలిసిన ఖాతాల జాబితాను పొందడానికి యాప్ను అనుమతిస్తుంది. దీనిలో మీరు ఇన్స్టాల్ చేసిన యాప్ల ద్వారా సృష్టించబడిన ఖాతాలు ఏవైనా ఉండవచ్చు.""నెట్వర్క్ కనెక్షన్లను వీక్షించడం""ఏ నెట్వర్క్లు ఉన్నాయి మరియు కనెక్ట్ చేయబడ్డాయి వంటి నెట్వర్క్ కనెక్షన్ల గురించి సమాచారాన్ని వీక్షించడానికి యాప్ను అనుమతిస్తుంది."
- "పూర్తి నెట్వర్క్ ప్రాప్యతను కలిగి ఉండటం"
+ "నెట్వర్క్ను పూర్తిగా యాక్సెస్ చేయగలగడం""నెట్వర్క్ సాకెట్లను సృష్టించడానికి మరియు అనుకూల నెట్వర్క్ ప్రోటోకాల్లను ఉపయోగించడానికి యాప్ను అనుమతిస్తుంది. బ్రౌజర్ మరియు ఇతర యాప్లు ఇంటర్నెట్కు డేటా పంపడానికి మార్గాలను అందిస్తాయి, కనుక ఇంటర్నెట్కు డేటా పంపడానికి ఈ అనుమతి అవసరం లేదు.""నెట్వర్క్ కనెక్టివిటీని మార్చడం""నెట్వర్క్ కనెక్టివిటీ యొక్క స్థితిని మార్చడానికి యాప్ను అనుమతిస్తుంది."
@@ -550,11 +551,11 @@
"వేలిముద్ర చిహ్నం"
- "ముఖ ప్రమాణీకరణ హార్డ్వేర్ను నిర్వహించండి"
+ "ముఖంతో అన్లాక్ చేయగల హార్డ్వేర్ నిర్వహణ""వినియోగం కోసం ముఖ టెంప్లేట్లను జోడించే మరియు తొలగించే పద్ధతులను అమలు చేయడానికి యాప్ను అనుమతిస్తుంది."
- "ముఖ ప్రమాణీకరణ హార్డ్వేర్ను వాడండి"
- "ప్రమాణీకరణ కోసం ముఖ ప్రామాణీకరణ హార్డ్వేర్ను ఉపయోగించడానికి యాప్ని అనుమతిస్తుంది"
- "ముఖ ప్రామాణీకరణ"
+ "ముఖంతో అన్లాక్ చేయగల హార్డ్వేర్ వినియోగం"
+ "ప్రమాణీకరణ కోసం ముఖంతో అన్లాక్ చేయగల హార్డ్వేర్ను ఉపయోగించడానికి యాప్ను అనుమతిస్తుంది"
+ "ముఖంతో అన్లాక్""మీ ముఖాన్ని తిరిగి నమోదు చేయండి""గుర్తింపును మెరుగుపరచడానికి, దయచేసి మీ ముఖంను తిరిగి నమోదు చేసుకోండి""ముఖం డేటా సరిగ్గా రాలేదు. మళ్లీ ప్రయత్నించండి."
@@ -567,7 +568,7 @@
"ఫోన్ను ఎడమవైపునకు జరపండి.""ఫోన్ను కుడివైపునకు జరపండి.""దయచేసి మీ పరికరం వైపు మరింత నేరుగా చూడండి."
- "మీ ముఖం కనిపించడం లేదు. ఫోన్ వైపు చూడండి."
+ "మీ ముఖాన్ని ఫోన్కు ఎదురుగా ఉంచండి.""బాగా కదుపుతున్నారు. ఫోన్ను స్థిరంగా పట్టుకోండి""దయచేసి మీ ముఖాన్ని మళ్లీ నమోదు చేయండి.""ఇక ముఖం గుర్తించలేదు. మళ్లీ ప్రయత్నించండి."
@@ -576,28 +577,28 @@
"మీ తలను ఇంకాస్త తక్కువ తిప్పండి.""మీ తలను ఎడమ/కుడి వైపుగా ఇంకాస్త తిప్పండి.""మీ ముఖానికి అడ్డుగా ఉన్నవాటిని తీసివేస్తుంది."
- "స్క్రీన్ ఎగువన ఉన్న సెన్సార్ను శుభ్రం చేస్తుంది."
+ "నల్లని పట్టీతో సహా మీ స్క్రీన్ పైభాగం అంతటినీ శుభ్రంగా తుడవండి""ముఖం ధృవీకరించలేరు. హార్డ్వేర్ అందుబాటులో లేదు."
- "ముఖ ప్రామాణీకరణను మళ్ళీ ప్రయత్నించండి."
+ "ముఖంతో అన్లాక్ను మళ్లీ ప్రయత్నించండి.""కొత్త ముఖం డేటాను నిల్వ చేయడం కాదు. మొదట పాతది తొలిగించండి."
- "ముఖ కార్యకలాపం రద్దయింది"
- "వినియోగదారు ద్వారా ముఖ ప్రామాణీకరణ రద్దు చేయబడింది"
+ "ముఖ కార్యకలాపం రద్దయింది."
+ "ముఖంతో అన్లాక్ను వినియోగదారు రద్దు చేశారు.""చాలా ఎక్కువ ప్రయత్నాలు చేసారు. తర్వాత మళ్లీ ప్రయత్నించండి."
- "అనేకసార్లు ప్రయత్నించారు. ముఖ ప్రమాణీకరణ నిలిపివేయబడింది."
+ "అనేకసార్లు ప్రయత్నించారు. ముఖంతో అన్లాక్ నిలిపివేయబడింది.""ముఖం ధృవీకరించలేకపోయింది. మళ్లీ ప్రయత్నించండి."
- "మీరు ముఖ ప్రామాణీకరణను సెటప్ చేయలేదు"
- "ఈ పరికరంలో ముఖ ప్రమాణీకరణకు మద్దతు లేదు"
+ "మీరు ముఖంతో అన్లాక్ను సెటప్ చేయలేదు."
+ "ఈ పరికరంలో ముఖంతో అన్లాక్ను ఉపయోగించడానికి మద్దతు లేదు.""ముఖ %d""ముఖ చిహ్నం"
- "సమకాలీకరణ సెట్టింగ్లను చదవడం"
+ "సింక్ సెట్టింగ్లను చదవగలగడం""ఖాతా యొక్క సమకాలీకరణ సెట్టింగ్లను చదవడానికి యాప్ను అనుమతిస్తుంది. ఉదాహరణకు, వ్యక్తుల యాప్ ఖాతాతో సమకాలీకరించబడాలా లేదా అనే విషయాన్ని ఇది నిశ్చయించవచ్చు."
- "సమకాలీకరణను ఆన్ మరియు ఆఫ్కు టోగుల్ చేయడం"
+ "\'సింక్\'ను ఆన్, ఆఫ్ల మధ్య టోగుల్ చేయడం""ఖాతా యొక్క సమకాలీకరణ సెట్టింగ్లను సవరించడానికి యాప్ను అనుమతిస్తుంది. ఉదాహరణకు, ఇది ఒక ఖాతాతో వ్యక్తుల యాప్ యొక్క సమకాలీకరణను ప్రారంభించడానికి ఉపయోగించబడవచ్చు."
- "సమకాలీకరణ గణాంకాలను చదవడం"
+ "సింక్ గణాంకాలను చదవగలగడం""ఖాతా యొక్క సమకాలీకరణ గణాంకాలను అలాగే సమకాలీకరణ ఈవెంట్ల చరిత్రను మరియు ఎంత డేటా సమకాలీకరించబడింది అనేవాటిని చదవడానికి యాప్ను అనుమతిస్తుంది.""మీ షేర్ చేసిన నిల్వ యొక్క కంటెంట్లను చదువుతుంది""మీ షేర్ చేసిన నిల్వ యొక్క కంటెంట్లను చదవడానికి యాప్ను అనుమతిస్తుంది."
@@ -1254,10 +1255,10 @@
"అన్ని నెట్వర్క్లు చూడటానికి నొక్కండి""కనెక్ట్ చేయి""అన్ని నెట్వర్క్లు"
- "Wi‑Fi నెట్వర్క్లకు కనెక్ట్ చేయాలా?"
- "%s ద్వారా సూచించబడింది"
- "అవును"
- "లేదు"
+ "సూచించిన Wi‑Fi నెట్వర్క్లను అనుమతించాలా?"
+ "%s సూచించిన నెట్వర్క్లు. పరికరం ఆటోమేటిక్గా కనెక్ట్ అవచ్చు."
+ "అనుమతించు"
+ "వద్దు""Wi‑Fi స్వయంచాలకంగా ఆన్ అవుతుంది""మీరు అధిక నాణ్యత గల సేవ్ చేసిన నెట్వర్క్కు సమీపంగా ఉన్నప్పుడు""తిరిగి ఆన్ చేయవద్దు"
@@ -1327,7 +1328,7 @@
"పూర్తయింది""సిమ్ కార్డు జోడించబడింది""మొబైల్ నెట్వర్క్ను యాక్సెస్ చేయడానికి మీ పరికరాన్ని పునఃప్రారంభించండి."
- "పునఃప్రారంభించు"
+ "రీస్టార్ట్ చేయి""మొబైల్ సేవను సక్రియం చేయండి""మీ కొత్త SIMని సక్రియం చేయడానికి క్యారియర్ యాప్ను డౌన్లోడ్ చేయండి""మీ కొత్త SIMని సక్రియం చేయడం కోసం %1$s యాప్ని డౌన్లోడ్ చేయండి"
@@ -1603,7 +1604,7 @@
"ప్రసారం చేయండి""పరికరానికి కనెక్ట్ చేయండి""స్క్రీన్ను పరికరానికి ప్రసారం చేయండి"
- "పరికరాల కోసం శోధిస్తోంది…"
+ "పరికరాల కోసం వెతుకుతోంది…""సెట్టింగ్లు""డిస్కనెక్ట్ చేయి""స్కాన్ చేస్తోంది..."
@@ -1664,13 +1665,13 @@
"షార్ట్కట్ ఆన్లో ఉన్నప్పుడు, రెండు వాల్యూమ్ బటన్లను 3 సెకన్ల పాటు నొక్కితే యాక్సెస్ సామర్థ్య ఫీచర్ ప్రారంభం అవుతుంది.\n\n ప్రస్తుత యాక్సెస్ సామర్థ్య ఫీచర్:\n %1$s\n\n సెట్టింగ్లు > యాక్సెస్ సామర్థ్యంలో మీరు ఫీచర్ను మార్చవచ్చు.""సత్వరమార్గాన్ని ఆఫ్ చేయి""సత్వరమార్గాన్ని ఉపయోగించు"
- "వర్ణ విలోమం"
+ "రంగుల మార్పిడి""రంగు సవరణ""యాక్సెస్ సామర్థ్య షార్ట్కట్ ద్వారా %1$s ఆన్ చేయబడింది""యాక్సెస్ సామర్థ్య షార్ట్కట్ ద్వారా %1$s ఆఫ్ చేయబడింది""%1$sని ఉపయోగించడానికి వాల్యూమ్ కీలు రెండింటినీ 3 సెకన్లు నొక్కి ఉంచండి""యాక్సెసిబిలిటీ బటన్ను మీరు నొక్కినప్పుడు ఉపయోగించాల్సిన ఒక ఫీచర్ను ఎంచుకోండి:"
- "యాక్సెసిబిలిటీ సంజ్ఞతో ఉపయోగించడానికి ఒక సేవను ఎంచుకోండి (రెండు చేతి వేళ్లతో స్క్రీన్ను కింద నుండి పైకి స్వైప్ చేయండి):"
+ "యాక్సెసిబిలిటీ సంజ్ఞతో ఉపయోగించడానికి ఒక సేవను ఎంచుకోండి (రెండు వేళ్లతో స్క్రీన్ను కింద నుండి పైకి స్వైప్ చేయండి):""యాక్సెసిబిలిటీ సంజ్ఞతో ఉపయోగించడానికి ఒక సేవను ఎంచుకోండి (మూడు చేతి వేళ్లతో స్క్రీన్ను కింద నుండి పైకి స్వైప్ చేయండి):""సేవల మధ్య మారడానికి, యాక్సెసిబిలిటీ బటన్ను నొక్కి & పట్టుకోండి.""సేవల మధ్య మారడానికి, రెండు చేతి వేళ్ళతో పైకి స్వైప్ చేసి పట్టుకోండి."
@@ -1888,8 +1889,8 @@
"వర్గీకరించబడలేదు""మీరు ఈ నోటిఫికేషన్ల ప్రాముఖ్యతను సెట్ చేసారు.""ఇందులో పేర్కొనబడిన వ్యక్తులను బట్టి ఇది చాలా ముఖ్యమైనది."
- "%2$sతో కొత్త వినియోగదారుని సృష్టించడానికి %1$sని అనుమతించాలా ?"
- "%2$sతో (ఈ ఖాతాతో ఇప్పటికే ఒక వినియోగదారు ఉన్నారు) కొత్త వినియోగదారుని సృష్టించడానికి %1$sని అనుమతించాలా?"
+ "%2$sతో కొత్త వినియోగదారుని సృష్టించడానికి %1$sను అనుమతించాలా (ఈ ఖాతాతో ఇప్పటికే ఒక వినియోగదారు ఉన్నారు) ?"
+ "%2$sతో కొత్త వినియోగదారుని సృష్టించడానికి %1$sను అనుమతించాలా?""భాషను జోడించండి""ప్రాంతం ప్రాధాన్యత""భాష పేరును టైప్ చేయండి"
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 8328af53957819b686329c1ec647c568513565b4..9258d4271a7e1c487f610f0a43558f234a0e4fc9 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -95,6 +95,7 @@
"ข้อความเสียง""การโทรผ่าน Wi-Fi""สถานะซิม"
+ "สถานะซิมลำดับความสำคัญสูง""อีกฝั่งหนึ่งขอโหมด TTY เป็น \"เต็ม\"""อีกฝั่งหนึ่งขอโหมด TTY เป็น \"HCO\"""อีกฝั่งหนึ่งขอโหมด TTY เป็น \"VCO\""
@@ -297,7 +298,7 @@
"ไมโครโฟน""บันทึกเสียง""อนุญาตให้ <b>%1$s</b> บันทึกเสียงไหม"
- "กิจกรรมการเคลื่อนไหวร่างกาย"
+ "การเคลื่อนไหวร่างกาย""เข้าถึงกิจกรรมการเคลื่อนไหวร่างกายของคุณ""อนุญาตให้ <b>%1$s</b> เข้าถึงกิจกรรมการเคลื่อนไหวร่างกายของคุณไหม""กล้องถ่ายรูป"
@@ -550,11 +551,11 @@
"ไอคอนลายนิ้วมือ"
- "จัดการฮาร์ดแวร์ตรวจสอบสิทธิ์ด้วยใบหน้า"
+ "จัดการฮาร์ดแวร์ Face Unlock""อนุญาตให้แอปเรียกใช้วิธีเพิ่มและลบเทมเพลตใบหน้าสำหรับการใช้งาน"
- "ใช้ฮาร์ดแวร์ตรวจสอบสิทธิ์ด้วยใบหน้า"
- "อนุญาตให้แอปใช้ฮาร์ดแวร์ตรวจสอบสิทธิ์ด้วยใบหน้าเพื่อตรวจสอบสิทธิ์"
- "การตรวจสอบสิทธิ์ด้วยใบหน้า"
+ "ใช้ฮาร์ดแวร์ Face Unlock"
+ "อนุญาตให้แอปใช้ฮาร์ดแวร์ Face Unlock เพื่อตรวจสอบสิทธิ์"
+ "Face Unlock""ลงทะเบียนใบหน้าอีกครั้ง""โปรดลงทะเบียนใบหน้าอีกครั้งเพื่อปรับปรุงการจดจำ""บันทึกข้อมูลใบหน้าที่ถูกต้องไม่ได้ ลองอีกครั้ง"
@@ -567,7 +568,7 @@
"เลื่อนโทรศัพท์ไปทางซ้าย""เลื่อนโทรศัพท์ไปทางขวา""โปรดมองตรงมาที่อุปกรณ์"
- "ไม่เห็นหน้าเลย ลองมองที่โทรศัพท์"
+ "หันหน้าให้ตรงกับโทรศัพท์""มีการเคลื่อนไหวมากเกินไป ถือโทรศัพท์นิ่งๆ""โปรดลงทะเบียนใบหน้าอีกครั้ง""จำใบหน้าไม่ได้แล้ว ลองอีกครั้ง"
@@ -576,19 +577,19 @@
"จัดตำแหน่งศีรษะให้ตรง""จัดตำแหน่งศีรษะให้ตรง""เอาสิ่งที่ปิดบังใบหน้าออก"
- "ทำความสะอาดเซ็นเซอร์ที่ขอบด้านบนของหน้าจอ"
+ "ทำความสะอาดด้านบนของหน้าจอ รวมถึงแถบสีดำ""ยืนยันใบหน้าไม่ได้ ฮาร์ดแวร์ไม่พร้อมใช้งาน"
- "ลองใช้การตรวจสอบสิทธิ์ด้วยใบหน้าอีกครั้ง"
+ "ลองใช้ Face Unlock อีกครั้ง""จัดเก็บข้อมูลใบหน้าใหม่ไม่ได้ ลบข้อมูลเก่าออกไปก่อน"
- "ยกเลิกการดำเนินการด้วยใบหน้าแล้ว"
- "ผู้ใช้ยกเลิกการตรวจสอบสิทธิ์ด้วยใบหน้า"
+ "ยกเลิกการดำเนินการกับใบหน้าแล้ว"
+ "ผู้ใช้ยกเลิกการใช้ Face Unlock""ดำเนินการหลายครั้งเกินไป ลองอีกครั้งในภายหลัง"
- "ลองหลายครั้งเกินไป การตรวจสอบสิทธิ์ด้วยใบหน้าถูกปิดใช้"
+ "ลองหลายครั้งเกินไป ปิดใช้ Face Unlock แล้ว""ยืนยันใบหน้าไม่ได้ ลองอีกครั้ง"
- "คุณยังไม่ได้ตั้งค่าการตรวจสอบสิทธิ์ด้วยใบหน้า"
- "อุปกรณ์นี้ไม่รองรับการตรวจสอบสิทธิ์ด้วยใบหน้า"
+ "คุณยังไม่ได้ตั้งค่า Face Unlock"
+ "อุปกรณ์นี้ไม่รองรับ Face Unlock""ใบหน้า %d"
@@ -1254,10 +1255,10 @@
"แตะเพื่อดูเครือข่ายทั้งหมด""เชื่อมต่อ""เครือข่ายทั้งหมด"
- "เชื่อมต่อเครือข่าย Wi-Fi ไหม"
- "แนะนำโดย %s"
- "ใช่"
- "ไม่"
+ "อนุญาตให้เชื่อมต่อเครือข่าย Wi-Fi ที่แนะนำไหม"
+ "เครือข่ายที่แนะนำโดย %s และอุปกรณ์อาจเชื่อมต่อโดยอัตโนมัติ"
+ "อนุญาต"
+ "ไม่เป็นไร""Wi‑Fi จะเปิดโดยอัตโนมัติ""เมื่อคุณอยู่ใกล้เครือข่ายคุณภาพสูงที่บันทึกไว้""ไม่ต้องเปิดอีกครั้ง"
@@ -1887,8 +1888,8 @@
"ไม่จัดอยู่ในหมวดหมู่ใดๆ""คุณตั้งค่าความสำคัญของการแจ้งเตือนเหล่านี้""ข้อความนี้สำคัญเนื่องจากบุคคลที่เกี่ยวข้อง"
- "อนุญาตให้ %1$s สร้างผู้ใช้ใหม่ด้วย %2$s ไหม"
- "อนุญาตให้ %1$s สร้างผู้ใช้ใหม่ด้วย %2$s (มีผู้ใช้ที่มีบัญชีนี้อยู่แล้ว) ไหม"
+ "อนุญาตให้ %1$s สร้างผู้ใช้ใหม่ด้วย %2$s ไหม (มีผู้ใช้ที่มีบัญชีนี้อยู่แล้ว)"
+ "อนุญาตให้ %1$s สร้างผู้ใช้ใหม่ด้วย %2$s ไหม""เพิ่มภาษา""ค่ากำหนดภูมิภาค""พิมพ์ชื่อภาษา"
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index db96753de7c426d333c9db93e0f49a26c796be4f..3caa9cc2766e6fa97deccf4da73207e0c6c51836 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -95,6 +95,7 @@
"Mga mensahe sa voicemail""Pagtawag gamit ang Wi-Fi""Status ng SIM"
+ "High priority na status ng SIM""Hiniling ng peer ang TTY Mode FULL""Hiniling ng peer ang TTY Mode HCO""Hiniling ng peer ang TTY Mode VCO"
@@ -550,11 +551,11 @@
"Icon ng fingerprint"
- "pamahalaan ang hardware sa authentication ng mukha"
+ "pamahalaan ang hardware ng face unlock""Pumapayag na mag-invoke ang app ng paraang magdagdag at mag-delete ng template ng mukha."
- "gumamit ng hardware sa pag-authenticate ng mukha"
- "Pumapayag na gumamit ng face authentication hardware ang app para sa pag-authenticate"
- "Pag-authenticate ng Mukha"
+ "gamitin ang hardware ng face unlock"
+ "Pinapayagan ang app na gamitin ang hardware ng face unlock para sa pag-authenticate"
+ "Face unlock""I-enroll ulit ang iyong mukha""Para mapahusay ang pagkilala, paki-enroll ulit ang iyong mukha""Hindi makakuha ng tamang face data. Subukang muli."
@@ -567,7 +568,7 @@
"Igalaw ang telepono pakaliwa.""Igalaw ang telepono pakanan.""Tumingin nang mas direkta sa iyong device."
- "Hindi makita ang mukha mo. Tumingin sa telepono."
+ "Itapat ang mukha mo sa mismong harap ng telepono.""Masyadong magalaw. Hawakang mabuti ang telepono.""Paki-enroll muli ang iyong mukha.""Hindi na makilala ang mukha. Subukang muli."
@@ -576,19 +577,19 @@
"Huwag masyadong tumingala o yumuko.""Huwag masyadong lumingon.""Alisin ang anumang humaharang sa iyong mukha."
- "Linisinin ang sensor sa itaas na gilid ng screen."
+ "Linisin ang itaas ng iyong screen, kasama ang itim na bar""Di ma-verify ang mukha. Di available ang hardware."
- "Subukan ulit ang pag-authenticate sa mukha."
+ "Subukan ulit ang face unlock.""Hindi ma-store ang data ng mukha. Mag-delete muna ng iba."
- "Nakansela ang operation kaugnay ng mukha"
- "Kinansela ng user ang pag-authenticate ng mukha"
+ "Nakansela ang operation kaugnay ng mukha."
+ "Kinansela ng user ang face unlock.""Masyadong maraming pagsubok. Subukang muli mamaya."
- "Sumobra ang pagsubok. Na-disable ang face authentication."
+ "Masyadong maraming pagsubok. Na-disable ang face unlock.""Hindi ma-verify ang mukha. Subukang muli."
- "Hindi pa na-set up ang pag-authenticate ng mukha"
- "Hindi sinusuportahan ang pag-authenticate ng mukha sa device"
+ "Hindi mo pa nase-set up ang face unlock."
+ "Hindi sinusuportahan ang face unlock sa device na ito.""Mukha %d"
@@ -1254,10 +1255,10 @@
"I-tap upang makita ang lahat ng network""Kumonekta""Lahat ng network"
- "Kumonekta sa mga Wi-Fi network?"
- "Iminumungkahi ng %s"
- "Oo"
- "Hindi"
+ "Payagan ang mga iminumungkahing Wi‑Fi network?"
+ "Mga iminumungkahing network ng %s. Posibleng awtomatikong kumonekta ang device."
+ "Payagan"
+ "Hindi, salamat na lang""Awtomatikong mag-o-on ang Wi‑Fi""Kapag malapit ka sa naka-save na network na mataas ang kalidad""Huwag i-on muli"
@@ -1887,8 +1888,8 @@
"Di-nakategorya""Ikaw ang magtatakda sa kahalagahan ng mga notification na ito.""Mahalaga ito dahil sa mga taong kasangkot."
- "Payagan ang %1$s na gumawa ng bagong User sa %2$s ?"
- "Payagan ang %1$s na gumawa ng bagong User sa %2$s (mayroon nang User sa account na ito) ?"
+ "Payagan ang %1$s na gumawa ng bagong User sa %2$s (mayroon nang User sa account na ito) ?"
+ "Payagan ang %1$s na gumawa ng bagong User sa %2$s ?""Magdagdag ng wika""Kagustuhan sa rehiyon""I-type ang wika"
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 4dfb34874493b9b3dde9b51adddca8041f0b3213..1f110d6c151fa93efe58473a061c7138ac76ff6a 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -95,6 +95,7 @@
"Sesli mesajlar""Kablosuz çağrı""SIM durumu"
+ "Yüksek öncelikli SIM durumu""Karşı taraf TTY Modunu TAM yaptı""Karşı taraf TTY Modunu HCO yaptı""Karşı taraf TTY Modunu VCO yaptı"
@@ -550,11 +551,11 @@
"Parmak izi simgesi"
- "yüz kimlik doğrulaması donanımını yönetme"
+ "yüz tanıma kilidi donanımı yönet""Uygulamanın, kullanılacak yüz şablonlarını ekleme ve silme yöntemlerini başlatmasına izin verir."
- "yüz kimlik doğrulaması donanımını kullanma"
- "Uygulamanın yüz kimlik doğrulaması donanımı kullanmasına izin verir"
- "Yüzle Kimlik Doğrulama"
+ "yüz tanıma kilidi donanımını kullan"
+ "Uygulamanın yüz tanıma kilidi donanımı kullanmasına izin verir"
+ "Yüz tanıma kilidi""Yüzünüzü yeniden kaydedin""Daha iyi tanınmasını sağlamak için lütfen yüzünüzü yeniden kaydedin""Doğru yüz verileri yakalanamadı. Tekrar deneyin."
@@ -567,7 +568,7 @@
"Telefonu sola hareket ettirin.""Telefonu sağa hareket ettirin.""Lütfen cihazınıza daha doğrudan bakın."
- "Yüzünüz görülmüyor. Telefona bakın."
+ "Yüzünüz telefonun tam karşısına gelmelidir.""Çok fazla hareket ediyorsunuz. Telefonu sabit tutun.""Lütfen yüzünüzü yeniden kaydedin.""Yüz artık tanınamıyor. Tekrar deneyin."
@@ -576,19 +577,19 @@
"Başınızı biraz daha az çevirin.""Başınızı biraz daha az çevirin.""Yüzünüzün görünmesini engelleyen şeyleri kaldırın."
- "Ekranın üst kenarındaki sensörü temizleyin."
+ "Siyah çubuk da dahil olmak üzere ekranınızın üst kısmını temizleyin""Yüz doğrulanamıyor. Donanım kullanılamıyor."
- "Yüzle kimlik doğrulamayı tekrar deneyin."
+ "Yüz tanıma kilidini yeniden deneyin.""Yeni yüz verisi depolanamıyor. Önce eski bir tanesini silin."
- "Yüz işlemi iptal edildi"
- "Yüz kimlik doğrulama işlemini kullanıcı iptal etti"
+ "Yüz işlemi iptal edildi."
+ "Yüz tanıma kilidi kullanıcı tarafından iptal edildi.""Çok fazla deneme yapıldı. Daha sonra tekrar deneyin."
- "Çok fazla deneme yapıldı. Yüz kimlik doğrulaması devre dışı."
+ "Çok fazla deneme yapıldı. Yüz tanıma kilidi devredışı.""Yüz doğrulanamıyor. Tekrar deneyin."
- "Yüz kimlik doğrulaması ayarlamadınız"
- "Bu cihazda yüz kimlik doğrulaması desteklenmiyor"
+ "Yüz tanıma kilidi ayarlamadınız."
+ "Bu cihazda yüz tanıma kilidi desteklenmiyor""Yüz %d"
@@ -1254,10 +1255,10 @@
"Tüm ağları görmek için dokunun""Bağlan""Tüm ağlar"
- "Kablosuz ağlara bağlanılsın mı?"
- "Öneren: %s"
- "Evet"
- "Hayır"
+ "Önerilen kablosuz ağlara izin verilsin mi?"
+ "%s tarafından önerilen ağlar. Cihaz otomatik olarak bağlanabilir."
+ "İzin ver"
+ "Hayır, teşekkürler""Kablosuz özelliği otomatik olarak açılacak""Daha önce kaydedilmiş yüksek kaliteli bir ağın yakınında olduğunuzda""Tekrar açılmasın"
@@ -1887,8 +1888,8 @@
"Kategorize edilmemiş""Bu bildirimlerin önem derecesini ayarladınız.""Bu, dahil olan kişiler nedeniyle önemlidir."
- "%1$s uygulamasının %2$s hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi?"
- "%1$s uygulamasının %2$s hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi (bu hesaba sahip bir kullanıcı zaten var)?"
+ "%1$s uygulamasının %2$s hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi (bu hesaba sahip bir kullanıcı zaten var)?"
+ "%1$s uygulamasının %2$s hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi?""Dil ekleyin""Bölge tercihi""Dil adını yazın"
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 565021fd918dc4e4d4ff2dbb9e0663df1f3634d0..49e1de1018e33ef311e815f46dbf1a0a00cfd08c 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -97,6 +97,7 @@
"Повідомлення голосової пошти""Дзвінки через Wi-Fi""Статус SIM-карти"
+ "Високопріоритетні сповіщення із SIM-карти""Пристрій змінив режим TTY на FULL""Пристрій змінив режим TTY на HCO""Пристрій змінив режим TTY на VCO"
@@ -556,11 +557,11 @@
"Значок відбитка пальця"
- "керувати обладнанням для автентифікації облич"
+ "керувати апаратним забезпечення для Фейсконтролю""Додаток може активувати способи додавання й видалення шаблонів облич."
- "застосовувати обладнання для автентифікації облич"
- "Додаток може застосовувати обладнання для автентифікації облич"
- "Автентифікація за обличчям"
+ "використовувати апаратне забезпечення для Фейсконтролю"
+ "Додаток може використовувати апаратне забезпечення для Фейсконтролю"
+ "Фейсконтроль""Повторно проскануйте обличчя""Повторно проскануйте обличчя для ефективнішого розпізнавання""Не вдалося чітко зняти обличчя. Повторіть спробу."
@@ -573,7 +574,7 @@
"Тримайте телефон лівіше.""Тримайте телефон правіше.""Дивіться просто на пристрій."
- "Обличчя не видно. Дивіться на телефон."
+ "Тримайте телефон просто перед обличчям.""Забагато рухів. Тримайте телефон нерухомо.""Повторно проскануйте обличчя.""Розпізнати обличчя вже не вдається. Повторіть спробу."
@@ -582,19 +583,19 @@
"Трохи перемістіть обличчя.""Трохи поверніть обличчя.""Приберіть об’єкти, які затуляють ваше обличчя."
- "Очистьте датчик угорі екрана."
+ "Очистьте верхню частину екрана, зокрема чорну панель""Не вдається перевірити обличчя. Апаратне забезпечення недоступне."
- "Повторіть автентифікацію за обличчям."
+ "Скористайтеся Фейсконтролем ще раз.""Не вдається зберегти нові дані про обличчя. Видаліть старі."
- "Дію з обличчям скасовано"
- "Користувач скасував автентифікацію за обличчям"
+ "Дію з обличчям скасовано."
+ "Користувач скасував Фейсконтроль.""Забагато спроб. Повторіть пізніше."
- "Забагато спроб. Автентифікацію за обличчям вимкнено."
+ "Забагато спроб. Фейсконтроль вимкнено.""Не вдається перевірити обличчя. Повторіть спробу."
- "Ви не налаштували автентифікацію за обличчям"
- "На цьому пристрої автентифікація за обличчям не підтримується"
+ "Ви не налаштували Фейсконтроль"
+ "На цьому пристрої не підтримується Фейсконтроль.""Обличчя %d"
@@ -1298,10 +1299,10 @@
"Торкніться, щоб побачити всі мережі""Під’єднатися""Усі мережі"
- "Підключатися до мереж Wi-Fi?"
- "Запропоновано додатком %s"
- "Так"
- "Ні"
+ "Дозволити пропоновані мережі Wi‑Fi?"
+ "Мережі, пропоновані додатком %s. Пристрій може підключитися автоматично."
+ "Дозволити"
+ "Ні, дякую""Wi-Fi вмикатиметься автоматично""Коли ви поблизу збереженої мережі високої якості""Не вмикати знову"
@@ -1388,7 +1389,7 @@
"OK""Пристрій заряджається через USB""Під’єднаний пристрій заряджається через USB"
- "Передавання файлів через USB ввімкнено"
+ "USB-передавання файлів увімк.""Режим PTP через USB ввімкнено""Режим USB-модема ввімкнено""Режим MIDI через USB ввімкнено"
@@ -1397,7 +1398,7 @@
"Під’єднаний пристрій заряджається. Торкніться, щоб побачити більше опцій.""Виявлено аналоговий аксесуар для аудіо""Під’єднаний пристрій несумісний із цим телефоном. Торкніться, щоб дізнатися більше."
- "Налагодження USB завершено"
+ "Налагодження USB підключено""Торкніться, щоб вимкнути налагоджувач USB""Виберіть, щоб вимкнути налагодження за USB""Увімкнено режим автоматизованого тестування"
@@ -1955,8 +1956,8 @@
"Без категорії""Ви вказуєте пріоритет цих сповіщень.""Важливе з огляду на учасників."
- "Дозволити додатку %1$s створити нового користувача з обліковим записом %2$s?"
- "Дозволити додатку %1$s створити нового користувача з обліковим записом %2$s (користувач із таким обліковим записом уже існує)?"
+ "Дозволити додатку %1$s створити нового користувача з обліковим записом %2$s (користувач із таким обліковим записом уже існує)?"
+ "Дозволити додатку %1$s створити нового користувача з обліковим записом %2$s?""Додати мову""Вибір регіону""Введіть назву мови"
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index b510ed72b4199050e4e22a20a813d4cd5fe38b06..a54fa9cabddaca3fa6d032d325d99cbf6b41ab01 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -95,6 +95,7 @@
"صوتی میل پیغامات""Wi-Fi کالنگ""SIM کا اسٹیٹس"
+ "اعلی ترجیحی SIM کی صورتحال""ہمسر نے TTY وضع مکمل کی درخواست کی""ہمسر نے TTY وضع HCO کی درخواست کی""ہمسر نے TTY وضع VCO کی درخواست کی"
@@ -550,11 +551,11 @@
"فنگر پرنٹ آئیکن"
- "چہرے کی توثیق کے ہارڈویئر کا نظم کریں"
+ "چہرے کے ذریعے غیر مقفل کرنے والے ہارڈ ویئر کا نظم کریں""ایپ کو چہرے کی تمثیلات شامل اور حذف کرنے کے طریقوں کو کالعدم قرار دینے کی اجازت دیتا ہے۔"
- "چہرے کی توثیق کا ہارڈویئر استعمال کریں"
- "ایپ کو توثیق کیلئے چہرے کا ہارڈ ویئر استعمال کرنے کی اجازت دیتا ہے"
- "چہرے سے تصدیق"
+ "چہرے کے ذریعے غیر مقفل کرنے والا ہارڈ ویئر استعمال کریں"
+ "ایپ کو تصدیق کے لیے چہرے کے ذریعے غیر مقفل کرنے کا ہارڈ ویئر استعمال کرنے کی اجازت دیتی ہے"
+ "چہرے کے ذریعے غیر مقفل کریں""اپنے چہرے کو دوبارہ مندرج کریں""شناخت کو بہتر بنانے کے لیے براہ کرم اپنے چہرے کو دوبارہ مندرج کریں""چہرے کا درست ڈيٹا کیپچر نہیں ہو سکا۔ پھر آزمائيں۔"
@@ -567,7 +568,7 @@
"فون کو بائیں جانب لے جائيں۔""فون کو دائیں جانب لے جائیں۔""براہ کرم اپنے آلہ کی طرف چہرے کو سیدھا رکھیں۔"
- "آپ کا چہرہ دکھائی نہیں دے رہا۔ فون کی طرف دیکھیں۔"
+ "اپنے چہرے کو براہ راست فون کے سامنے رکھیں۔""کافی حرکت ہو رہی ہے۔ فون کو مضبوطی سے پکڑیں۔""براہ کرم اپنے چہرے کو دوبارہ مندرج کریں۔""اب چہرے کی شناخت نہیں کر سکتے۔ پھر آزمائيں۔"
@@ -576,19 +577,19 @@
"اپنا سر تھوڑا کم کریں۔""اپنا سر تھوڑا کم کریں۔""آپ کے چہرہ کو چھپانے والی ہر چیز کو ہٹائیں۔"
- "اسکرین کے بالائی کنارے پر سنسر کو صاف کریں۔"
+ "سیاہ بار سمیت، اپنی اسکرین کے اوپری حصے کو صاف کریں""چہرے کی توثیق نہیں کی جا سکی۔ ہارڈ ویئر دستیاب نہیں ہے۔"
- "چہرے سے تصدیق دوبارہ آزمائيں۔"
+ "چہرے کے ذریعے غیر مقفل کرنے کو دوبارہ آزمائیں۔""چہرے کا نیا ڈیٹا اسٹور نہیں کر سکتے۔ پہلے پرانا حذف کریں۔"
- "چہرے پر آپریشن منسوخ ہو گئی"
- "صارف نے چہرے کی تصدیق کو منسوخ کر دیا"
+ "چہرے پر ہونے والی کارروائی منسوخ ہو گئی۔"
+ "صارف نے چہرے کے ذریعے غیر مقفل کرنے کو منسوخ کر دیا۔""کافی زیادہ کوششیں کی گئیں۔ دوبارہ کوشش کریں۔"
- "کافی زیادہ کوششیں۔ چہرے سے تصدیق غیر فعال کر دی گئی ہے۔"
+ "کافی زیادہ کوششیں۔ چہرے کے ذریعے غیر مقفل کرنا غیر فعال کر دیا گیا۔""چہرے کی توثیق نہیں کی جا سکی۔ پھر آزمائيں۔"
- "آپ نے چہرے سے تصدیق سیٹ اپ نہیں کیا ہے"
- "اس آلہ پر چہرے سے تصدیق تعاون یافتہ نہیں ہے"
+ "آپ نے بذریعہ چہرہ غیر مقفل کرنے کو سیٹ نہیں کیا ہے۔"
+ "اس آلہ پر چہرے کے ذریعے غیر مقفل کرنا تعاون یافتہ نہیں ہے۔""چہرہ %d"
@@ -1254,10 +1255,10 @@
"تمام نیٹ ورکس دیکھنے کیلئے تھپتھپائيں""منسلک کریں""سبھی نیٹ ورکس"
- "Wi-Fi نیٹ ورکس سے منسلک کریں؟"
- "%s کی طرف سے تجویز کردہ"
- "ہاں"
- "نہیں"
+ "تجویز کردہ Wi‑Fi نیٹ ورکس کو اجازت دیں؟"
+ "%s تجویز کردہ نیٹ ورکس۔ آلہ خودکار طور پر منسلک ہو سکتا ہے۔"
+ "اجازت ہیں"
+ "نہیں شکریہ""Wi‑Fi از خود آن ہو جائے گا""جب آپ اعلی معیار کے محفوظ کردہ نیٹ ورک کے قریب ہوں""دوبارہ آن نہ کریں"
@@ -1888,8 +1889,8 @@
"غیر زمرہ بند""ان اطلاعات کی اہمیت آپ مقرر کرتے ہیں۔""اس میں موجود لوگوں کی وجہ سے یہ اہم ہے۔"
- "%1$s کو %2$s کے ساتھ ایک نیا صارف بنانے کی اجازت دیں؟"
- "%1$s کو %2$s کے ساتھ ایک نیا صارف بنانے کی اجازت دیں (اس اکاؤنٹ کے ساتھ ایک صارف پہلے سے موجود ہے) ؟"
+ "%1$s کو %2$s کے ساتھ ایک نیا صارف بنانے کی اجازت دیں (اس اکاؤنٹ کے ساتھ ایک صارف پہلے سے موجود ہے) ؟"
+ "%2$s کے ساتھ نئے صارف کو تخلیق کرنے کے لیے %1$s کو اجازت دیں ؟""ایک زبان شامل کریں""علاقہ کی ترجیح""زبان کا نام ٹائپ کریں"
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index 04672e4de0d6ffa40b436cdb94016be4347dad62..b17b84ba51948e00c00797290240a5dc152469fc 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -95,6 +95,7 @@
"Ovozli xabarlar""Wi-Fi chaqiruv""SIM karta holati"
+ "SIM kartadagi muhim bildirishnomalar""Teng huquqli ishtirokchi teletayp rejimini FULL (to‘liq) qilib o‘zgartirdi""Teng huquqli ishtirokchi teletayp rejimini HCO (eshitadi, gapirolmaydi) qilib o‘zgartirdi""Teng huquqli ishtirokchi teletayp rejimini VCO (gapiradi, eshitolmaydi) qilib o‘zgartirdi"
@@ -550,11 +551,11 @@
"Barmoq izi belgisi"
- "yuzni aniqlash qurilmasini boshqarish"
+ "yuz bilan ochish qurilmasini boshqarish""Ilova foydalanish uchun yuz namunalarini qo‘shish va o‘chirish usullarini tatbiq qilishi mumkin."
- "yuzni aniqlash qurilmasidan foydalanish"
- "Haqiqiylikni tekshirish uchun skanerdan foydalanish imkonini beradi"
- "Yuz tekshiruvi"
+ "yuz bilan ochish qurilmasidan foydalanish"
+ "Haqiqiylikni tekshirish uchun yuz bilan ochishdan foydalanish imkonini beradi"
+ "Yuz bilan ochish""Yuzingizni yana qayd qiling""Yuzingiz yanada yaxshiroq aniqlanishi uchun uni yana bir marta qayd qiling""Yuz ravshan suratga olinmadi. Qaytadan urining."
@@ -567,7 +568,7 @@
"Telefonni chapga suring.""Telefonni oʻngga suring.""Qurilmaga tik qarang."
- "Yuzingiz koʻrinmayapti. Telefonga qarang."
+ "Telefoningizga yuzingizni tik tuting.""Ortiqcha harakatlanmoqda. Qimirlatmasdan ushlang.""Yuzingizni qaytadan qayd qildiring.""Yuz tanilmadi. Qaytadan urining."
@@ -576,19 +577,19 @@
"Boshingizni asta buring.""Boshingizni asta buring.""Yuzingizni berkitayotgan narsalarni olib tashlang."
- "Ekranning tepasidagi sensorni tozalang."
+ "Ekranning yuqori qismini, shuningdek, qora panelni ham tozalang""Yuzingiz tasdiqlanmadi. Qurilma ishlamayapti."
- "Yana yuz tekshiruvini amalga oshirish."
+ "Yana yuz bilan ochishga urining.""Yuzga oid axborot saqlanmadi. Avval eskilari tozalansin."
- "Yuzni aniqlash bekor qilindi"
- "Yuz tekshiruvi bekor qilindi."
+ "Yuzni aniqlash bekor qilindi."
+ "Yuz bilan ochishni foydalanuvchi bekor qildi.""Juda ko‘p urinildi. Keyinroq qaytadan urining."
- "Juda koʻp urinildi. Yuz tekshiruvi faolsizlantirildi."
+ "Juda koʻp urinildi. Yuz bilan ochish faolsizlantirildi.""Yuzingiz tasdiqlanmadi. Qaytadan urining."
- "Hali yuz tekshiruvini sozlamagansiz"
- "Yuz tekshiruvi bu qurilmada ishlamaydi"
+ "Hali yuz bilan ochishni sozlamagansiz"
+ "Yuz bilan ochish bu qurilmada ishlamaydi""Yuz %d"
@@ -1223,12 +1224,12 @@
"Ovozsiz rejim tanlandi""Suhbat vaqtidagi tovush balandligi""Kiruvchi bluetooth tovushi"
- "Signal tovushi balandligi"
+ "Signal tovushi""Eslatma tovushi""Tovush balandligi""Bluetooth tovushi""Rington balandligi"
- "Qo‘ng‘iroq tovushi balandligi"
+ "Suhbat tovushi""Multimedia tovushi""Eslatma tovushi""Standart rington"
@@ -1254,10 +1255,10 @@
"Barcha tarmoqlarni ko‘rish uchun bosing""Ulanish""Barcha tarmoqlar"
- "Wi-Fi tarmoqlarga ulanilsinmi?"
- "%s tomonidan taklif etilgan"
- "Ha"
- "Yoʻq"
+ "Tavsiya qilingan Wi‑Fi tarmoqlarga ruxsat berilsinmi?"
+ "%s tavsiya qilgan tarmoqlar. Qurilma avtomatik ulanishi mumkin."
+ "Ruxsat"
+ "Kerak emas""Wi‑Fi avtomatik ravishda yoqiladi""Saqlangan tarmoqlar ichidan signali yaxshisi hududida ekaningizda""Qayta yoqilmasin"
@@ -1354,7 +1355,7 @@
"Ulangan qurilma quvvatlanmoqda. Boshqa parametrlar uchun bosing.""Analogli audio uskuna aniqlandi""Biriktirilgan qurilma mazkur telefon bilan mos emas. Batafsil axborot olish uchun bu yerga bosing."
- "USB orqali nosozliklarni tuzatish"
+ "USB orqali nosozliklarni aniqlash""USB orqali nosozliklarni aniqlashni faolsizlantirish uchun bosing""USB orqali nosozliklarni tuzatishni o‘chirib qo‘yish uchun bosing.""Xavfsizlik sinovi rejimi yoqildi"
@@ -1888,8 +1889,8 @@
"Turkumlanmagan""Siz ushbu bildirishnomalarning muhimligini belgilagansiz.""Bu odamlar siz uchun muhim."
- "%1$s ilovasiga %2$s hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi ?"
- "%1$s ilovasiga %2$s hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi (bunday hisobdagi foydalanuvchi allaqachon mavjud) ?"
+ "%1$s ilovasiga %2$s hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi (bunday hisobdagi foydalanuvchi allaqachon mavjud) ?"
+ "%1$s ilovasiga %2$s hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi ?""Til qoʻshish""Hudud sozlamalari""Til nomini kiriting"
@@ -1928,7 +1929,7 @@
"Xaritalar va navigatsiya""Ish va unumdorlik""Qurilma xotirasi"
- "USB orqali nosozliklarni tuzatish"
+ "USB orqali nosozliklarni aniqlash""soat""daqiqa""Vaqtni sozlash"
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 2631d87cd67c2e689aa69cf49563a58cee13ccf0..42dfee5434480f363e3e19eb735fadf55844ac5f 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -95,6 +95,7 @@
"Thư thoại""Gọi qua Wi-Fi""Trạng thái SIM"
+ "Trạng thái SIM có mức ưu tiên cao""TTY theo yêu cầu của thiết bị ngang hàng ở chế độ ĐẦY ĐỦ""TTY theo yêu cầu của thiết bị ngang hàng ở chế độ HCO""TTY theo yêu cầu của thiết bị ngang hàng ở chế độ VCO"
@@ -520,7 +521,7 @@
"Cho phép ứng dụng này sửa đổi bộ sưu tập ảnh của bạn.""đọc vị trí từ bộ sưu tập phương tiện""Cho phép ứng dụng này đọc vị trí từ bộ sưu tập phương tiện của bạn."
- "Hãy xác minh đó là bạn"
+ "Xác minh danh tính của bạn""Không có phần cứng sinh trắc học""Đã hủy xác thực""Không nhận dạng được"
@@ -550,11 +551,11 @@
"Biểu tượng vân tay"
- "quản lý phần cứng xác thực khuôn mặt"
+ "quản lý phần cứng mở khóa bằng khuôn mặt""Cho phép ứng dụng gọi ra các phương pháp để thêm và xóa mẫu khuôn mặt sử dụng."
- "sử dụng phần cứng xác thực khuôn mặt"
- "Cho phép ứng dụng sử dụng phần cứng xác thực khuôn mặt để tiến hành xác thực"
- "Xác thực khuôn mặt"
+ "sử dụng phần cứng mở khóa bằng khuôn mặt"
+ "Cho phép ứng dụng dùng phần cứng mở khóa bằng khuôn mặt để tiến hành xác thực"
+ "Mở khóa bằng khuôn mặt""Đăng ký lại khuôn mặt của bạn""Để cải thiện khả năng nhận dạng, hãy đăng ký lại khuôn mặt của bạn""Không thể ghi lại đúng dữ liệu mặt. Hãy thử lại."
@@ -567,7 +568,7 @@
"Đưa điện thoại sang bên trái.""Đưa điện thoại sang bên phải.""Vui lòng nhìn thẳng vào thiết bị."
- "Hệ thống không phát hiện được khuôn mặt bạn. Hãy nhìn vào điện thoại."
+ "Hướng thẳng khuôn mặt về phía trước điện thoại.""Thiết bị di chuyển quá nhiều. Giữ yên thiết bị.""Vui lòng đăng ký lại khuôn mặt của bạn.""Không nhận ra khuôn mặt. Hãy thử lại."
@@ -576,19 +577,19 @@
"Hãy bớt di chuyển đầu.""Hãy bớt di chuyển đầu.""Hãy loại bỏ mọi thứ che khuất khuôn mặt bạn."
- "Hãy lau sạch cảm biến ở cạnh trên của màn hình."
+ "Vệ sinh phần đầu màn hình, bao gồm cả thanh màu đen""Không thể xác minh khuôn mặt. Phần cứng không có sẵn."
- "Thử xác thực lại khuôn mặt."
+ "Thử lại thao tác mở khóa bằng khuôn mặt.""Không lưu được dữ liệu khuôn mặt mới. Hãy xóa dữ liệu cũ trước."
- "Đã hủy thao tác dùng khuôn mặt"
- "Người dùng đã hủy thao tác xác thực khuôn mặt"
+ "Đã hủy thao tác dùng khuôn mặt."
+ "Người dùng đã hủy thao tác mở khóa bằng khuôn mặt.""Bạn đã thử quá nhiều lần. Hãy thử lại sau."
- "Quá nhiều lần thử. Tính năng xác thực khuôn mặt đã tắt."
+ "Quá nhiều lần thử. Đã tắt tính năng mở khóa bằng khuôn mặt.""Không thể xác minh khuôn mặt. Hãy thử lại."
- "Bạn chưa thiết lập tính năng xác thực khuôn mặt"
- "Thiết bị này không hỗ trợ tính năng xác thực khuôn mặt"
+ "Bạn chưa thiết lập tính năng mở khóa bằng khuôn mặt."
+ "Thiết bị này không hỗ trợ tính năng mở khóa bằng khuôn mặt.""Khuôn mặt %d"
@@ -1254,10 +1255,10 @@
"Nhấn để xem tất cả các mạng""Kết nối""Tất cả các mạng"
- "Bạn muốn kết nối với mạng Wi‑Fi?"
- "Do %s đề xuất"
- "Có"
- "Không"
+ "Cho phép các mạng Wi‑Fi được đề xuất?"
+ "Các mạng do %s đề xuất. Thiết bị có thể kết nối tự động."
+ "Cho phép"
+ "Không, cảm ơn""Wi-Fi sẽ tự động bật""Khi bạn ở gần mạng đã lưu chất lượng cao""Không bật lại"
@@ -1353,9 +1354,9 @@
"Đang sạc thiết bị được kết nối. Hãy nhấn để biết thêm các tùy chọn.""Đã phát hiện phụ kiện âm thanh analog""Thiết bị được kết nối không tương thích với điện thoại này. Nhấn để tìm hiểu thêm."
- "Đã kết nối gỡ lỗi USB"
- "Nhấn để tắt tính năng gỡ lỗi USB"
- "Chọn để vô hiệu hóa gỡ lỗi USB."
+ "Đã kết nối chế độ gỡ lỗi qua USB"
+ "Nhấn để tắt chế độ gỡ lỗi qua USB"
+ "Chọn để tắt chế độ gỡ lỗi qua USB.""Đã bật Chế độ khai thác kiểm thử""Khôi phục cài đặt gốc để tắt Chế độ khai thác kiểm thử.""Có chất lỏng hoặc mảnh vỡ trong cổng USB"
@@ -1669,8 +1670,8 @@
"Đã tắt phím tắt trợ năng %1$s""Nhấn và giữ đồng thời cả hai phím âm lượng trong 3 giây để sử dụng %1$s""Chọn dịch vụ sẽ sử dụng khi bạn nhấn vào nút hỗ trợ tiếp cận:"
- "Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận (vuốt lên từ cuối màn hình bằng 2 ngón tay):"
- "Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận (vuốt lên từ cuối màn hình bằng 3 ngón tay):"
+ "Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận này (vuốt lên từ cuối màn hình bằng 2 ngón tay):"
+ "Chọn dịch vụ sẽ sử dụng với cử chỉ hỗ trợ tiếp cận này (vuốt lên từ cuối màn hình bằng 3 ngón tay):""Để chuyển đổi giữa các dịch vụ, hãy chạm và giữ nút hỗ trợ tiếp cận.""Để chuyển đổi giữa các dịch vụ, hãy vuốt lên và giữ bằng 2 ngón tay.""Để chuyển đổi giữa các dịch vụ, hãy vuốt lên và giữ bằng 3 ngón tay."
@@ -1887,8 +1888,8 @@
"Chưa được phân loại""Bạn đặt tầm quan trọng của các thông báo này.""Thông báo này quan trọng vì những người có liên quan."
- "Cho phép %1$s tạo người dùng mới bằng %2$s?"
- "Cho phép %1$s tạo người dùng mới bằng %2$s (người dùng có tài khoản này đã tồn tại)?"
+ "Cho phép %1$s tạo người dùng mới bằng %2$s (đã tồn tại người dùng có tài khoản này)?"
+ "Cho phép %1$s tạo người dùng mới bằng %2$s?""Thêm ngôn ngữ""Tùy chọn khu vực""Nhập tên ngôn ngữ"
@@ -1927,7 +1928,7 @@
"Bản đồ và dẫn đường""Sản xuất""Bộ nhớ của thiết bị"
- "Gỡ lỗi USB"
+ "Gỡ lỗi qua USB""giờ""phút""Đặt giờ"
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index ccbd5d2932414d52c51254a8b48fa2a3ee15bc0d..4f21cc20aca40f1c9c3ce5d783df1b738b4603ee 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -95,6 +95,7 @@
"语音邮件""WLAN 通话""SIM 卡状态"
+ "高优先顺序 SIM 卡状态""对方请求使用“TTY 完整”模式""对方请求使用“TTY HCO”模式""对方请求使用“TTY VCO”模式"
@@ -281,7 +282,7 @@
"允许<b>%1$s</b>访问您的通讯录吗?""位置信息""获取此设备的位置信息"
- "允许“%1$s”获取此设备的位置信息吗?"
+ "要允许“%1$s”获取此设备的位置信息吗?""只有当您使用该应用时,该应用才有权访问位置信息""要<b>一律允许</b>允许<b>%1$s</b>访问此设备的位置信息吗?""目前只有当您使用该应用时,该应用才能访问位置信息"
@@ -290,16 +291,16 @@
"允许<b>%1$s</b>访问您的日历吗?""短信""发送和查看短信"
- "允许<b>%1$s</b>发送和查看短信吗?"
+ "要允许<b>%1$s</b>发送和查看短信吗?""存储空间""访问您设备上的照片、媒体内容和文件""允许“%1$s”<b></b>访问您设备上的照片、媒体内容和文件吗?""麦克风""录制音频""允许<b>%1$s</b>录音吗?"
- "健身运动"
- "访问您的健身运动"
- "允许<b>%1$s</b>访问您的健身运动吗?"
+ "身体活动"
+ "获取您的身体活动数据"
+ "允许<b>%1$s</b>获取您的身体活动数据吗?""相机""拍摄照片和录制视频""允许<b>%1$s</b>拍摄照片和录制视频吗?"
@@ -428,8 +429,8 @@
"此应用可随时使用麦克风进行录音。""向 SIM 卡发送命令""允许应用向SIM卡发送命令(此权限具有很高的危险性)。"
- "识别健身运动"
- "此应用可以识别您的健身运动。"
+ "识别身体活动"
+ "此应用可以识别您的身体活动。""拍摄照片和视频""此应用可随时使用相机拍摄照片和录制视频。""控制振动"
@@ -550,11 +551,11 @@
"指纹图标"
- "管理人脸身份验证硬件"
+ "管理人脸解锁硬件""允许该应用调用方法来添加和删除可用的人脸模板。"
- "使用人脸身份验证硬件"
- "允许该应用使用人脸身份验证硬件进行身份验证"
- "面孔身份验证"
+ "使用人脸解锁硬件"
+ "允许该应用使用人脸解锁硬件进行身份验证"
+ "人脸解锁""重新注册您的面孔""要提升识别精确度,请重新注册您的面孔""无法捕获准确的人脸数据,请重试。"
@@ -567,7 +568,7 @@
"请将手机向左移动。""请将手机向右移动。""请直视您的设备。"
- "看不到您的脸部,请直视手机。"
+ "请将你的面部正对手机。""摄像头过于晃动。请将手机拿稳。""请重新注册您的面孔。""已无法识别人脸,请重试。"
@@ -576,19 +577,19 @@
"请将您的头稍微上下倾斜。""请将您的头稍微左右旋转。""请移除所有遮挡您面部的物体。"
- "请将屏幕顶部边缘的传感器擦拭干净。"
+ "请将屏幕顶部(包括黑色条栏)清理干净""无法验证人脸。硬件无法使用。"
- "请重新尝试面孔身份验证。"
+ "请重新尝试人脸解锁。""无法存储新的人脸数据。请先删除旧的人脸数据。"
- "人脸处理操作已取消"
- "用户已取消人脸身份验证"
+ "面孔处理操作已取消。"
+ "用户已取消人脸解锁。""尝试次数过多,请稍后重试。"
- "尝试次数过多,人脸身份验证已停用。"
+ "尝试次数过多,人脸解锁已停用。""无法验证人脸,请重试。"
- "您尚未设置人脸身份验证"
- "此设备不支持人脸身份验证"
+ "您尚未设置人脸解锁。"
+ "此设备不支持人脸解锁。""面孔 %d"
@@ -1254,10 +1255,10 @@
"点按即可查看所有网络""连接""所有网络"
- "要连接到 WLAN 网络吗?"
- "由%s推荐"
- "是"
- "否"
+ "是否允许系统连接到建议的 WLAN 网络?"
+ "%s建议的网络。设备可能会自动连接到这些网络。"
+ "允许"
+ "不用了""WLAN 将自动开启""当您位于已保存的高品质网络信号范围内时""不要重新开启"
@@ -1887,8 +1888,8 @@
"未分类""这些通知的重要程度由您来设置。""这条通知涉及特定的人,因此被归为重要通知。"
- "允许%1$s使用 %2$s 创建新用户吗?"
- "允许%1$s使用 %2$s(目前已有用户使用此帐号)创建新用户吗?"
+ "允许%1$s使用 %2$s(目前已有用户使用此帐号)创建新用户吗?"
+ "允许%1$s使用 %2$s 创建新用户吗?""添加语言""区域偏好设置""输入语言名称"
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index bf9d0cc070b205cad2dca1ae5e84ffe817888009..e01ad3bd629aec075497c9f1dba5280149f87235 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -95,6 +95,7 @@
"留言訊息""Wi-Fi 通話""SIM 卡狀態"
+ "重要 SIM 卡狀態""對方曾要求 TTY 完整模式""對方曾要求 TTY 模式 (HCO)""對方曾要求 TTY 模式 (VCO)"
@@ -200,7 +201,7 @@
"開啟無線網絡""關閉無線網絡""螢幕鎖定"
- "關閉"
+ "關機""鈴聲關閉""鈴聲震動""鈴聲開啟"
@@ -224,7 +225,7 @@
"電視選項""手機選項""螢幕鎖定"
- "關閉"
+ "關機""緊急""錯誤報告""結束工作階段"
@@ -550,11 +551,11 @@
"指紋圖示"
- "管理臉孔驗證硬件"
+ "管理臉孔解鎖硬件""允許應用程式調用方法,以加入和刪除可用的臉孔範本。"
- "使用臉孔驗證硬件"
- "允許應用程式使用臉孔驗證硬件來驗證"
- "臉孔驗證"
+ "使用臉孔解鎖硬件"
+ "允許應用程式使用臉孔解鎖硬件來驗證"
+ "臉孔解鎖""重新註冊臉孔""如要提高識別能力,請重新註冊您的臉孔""無法擷取準確的臉容資料。請再試一次。"
@@ -567,7 +568,7 @@
"請將手機向左移。""請將手機向右移。""請以更直視的角度看著裝置。"
- "看不到您的臉。請看著手機。"
+ "將手機對準您的臉孔正面。""裝置不夠穩定。請拿穩手機。""請重新註冊臉孔。""無法再識別臉孔。請再試一次。"
@@ -576,19 +577,19 @@
"減少頭部上下轉動幅度。""減少頭部左右轉動幅度。""移除遮住您臉孔的任何東西。"
- "請清潔螢幕頂部邊緣的感應器。"
+ "請清理螢幕頂部,包括黑色列""無法驗證臉孔,硬件無法使用。"
- "請再次嘗試驗證臉孔。"
+ "請再次嘗試「臉孔解鎖」。""無法儲存新的臉容資料,請先刪除舊資料。"
- "臉孔操作已取消"
- "使用者已取消臉孔驗證"
+ "臉孔操作已取消。"
+ "使用者已取消「臉孔解鎖」。""嘗試次數過多,請稍後再試。"
- "嘗試次數過多,臉孔驗證已停用。"
+ "嘗試次數過多,「臉孔解鎖」已停用。""無法驗證臉孔。請再試一次。"
- "您尚未設定臉孔驗證"
- "此裝置不支援臉孔驗證"
+ "您尚未設定「臉孔解鎖」。"
+ "此裝置不支援「臉孔解鎖」。""臉孔 %d"
@@ -817,7 +818,7 @@
"再試一次""再試一次""解鎖即可使用所有功能和資料"
- "已超過臉容解鎖嘗試次數上限"
+ "已超過臉孔解鎖嘗試次數上限""找不到 SIM 卡""平板電腦中沒有 SIM 卡。""電視沒有 SIM 卡。"
@@ -887,7 +888,7 @@
"展開解鎖區域。""滑動解鎖。""圖案解鎖。"
- "臉容解鎖。"
+ "臉孔解鎖。""PIN 解鎖。""SIM 卡 PIN 碼解鎖。""SIM 卡 PUK 解鎖。"
@@ -1254,10 +1255,10 @@
"輕按即可查看所有網絡""連線""所有網絡"
- "要連線至 Wi-Fi 網絡嗎?"
- "由 %s 推薦"
- "是"
- "否"
+ "要允許連線至建議的 Wi-Fi 網絡嗎?"
+ "「%s」已建議網絡連線,裝置可能會自動連接網絡。"
+ "允許"
+ "不用了,謝謝""Wi-Fi 將會自動開啟""當您位於已儲存的高品質網絡信號範圍內時""不要重新開啟"
@@ -1887,8 +1888,8 @@
"未分類""您可以設定這些通知的重要性。""列為重要的原因:涉及的人。"
- "要允許 %1$s 使用 %2$s 建立新使用者嗎?"
- "要允許 %1$s 使用 %2$s 建立新使用者 (此帳戶目前已有此使用者) 嗎?"
+ "要允許 %1$s 使用 %2$s 建立新使用者 (此帳戶目前已有此使用者) 嗎?"
+ "要允許 %1$s 使用 %2$s 建立新使用者嗎?""新增語言""地區偏好設定""輸入語言名稱"
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index c50b10cec7459c51528d23549f3c89487aab5fab..cf86a1ce6a0b8586e9bb2b569f0f03f5a9d5f3e9 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -95,6 +95,7 @@
"語音留言""Wi-Fi 通話""SIM 卡狀態"
+ "高優先順序 SIM 卡狀態""通訊對象要求使用 TTY 的 FULL 模式""通訊對象要求使用 TTY 的 HCO 模式""通訊對象要求使用 TTY 的 VCO 模式"
@@ -550,11 +551,11 @@
"指紋圖示"
- "管理臉孔驗證硬體"
+ "管理人臉解鎖硬體""允許應用程式呼叫方法來新增及移除可用的臉孔範本。"
- "使用臉孔驗證硬體"
- "允許應用程式使用臉孔驗證硬體進行驗證"
- "臉孔驗證"
+ "使用人臉解鎖硬體"
+ "允許應用程式使用人臉解鎖硬體進行驗證"
+ "人臉解鎖""請重新註冊你的臉孔""為提升辨識精準度,請重新註冊你的臉孔""無法擷取精準臉孔資料,請再試一次。"
@@ -567,7 +568,7 @@
"請將手機向左移動。""請將手機向右移動。""請儘可能直視裝置正面。"
- "無法偵測你的臉孔,請直視手機。"
+ "將你的臉孔正對手機。""鏡頭過度晃動,請拿穩手機。""請重新註冊你的臉孔。""已無法辨識臉孔,請再試一次。"
@@ -576,19 +577,19 @@
"請將你的頭部稍微向上或向下傾斜。""請將你的頭部稍微向左或向右旋轉。""請移除任何會遮住臉孔的物體。"
- "請清除螢幕頂端感應器的髒汙。"
+ "請清理螢幕頂端,包括黑色橫列""相關硬體無法使用,因此無法驗證臉孔。"
- "請重新驗證臉孔。"
+ "請重新進行人臉解鎖。""無法儲存新的臉孔資料,請先刪除舊的資料。"
- "臉孔處理作業已取消"
- "使用者已取消臉孔驗證作業"
+ "臉孔處理作業已取消。"
+ "使用者已取消人臉解鎖作業。""嘗試次數過多,請稍後再試。"
- "嘗試次數過多,因此系統已停用臉孔驗證。"
+ "嘗試次數過多,因此系統已停用人臉解鎖功能。""無法驗證臉孔,請再試一次。"
- "你尚未設定臉孔驗證"
- "這個裝置不支援臉孔驗證"
+ "你尚未設定人臉解鎖功能。"
+ "這個裝置不支援人臉解鎖功能。""臉孔 %d"
@@ -624,7 +625,7 @@
"修改網路使用量計算方式""允許應用程式修改應用程式網路使用量的計算方式 (不建議一般應用程式使用)。""存取通知"
- "允許應用程式擷取、檢查及清除通知 (包括由其他應用程式發佈的通知)。"
+ "允許應用程式擷取、檢查及清除通知 (包括由其他應用程式發布的通知)。""繫結至通知接聽器服務""允許應用程式繫結至通知接聽器服務的頂層介面 (一般應用程式不需使用)。""繫結至條件提供者服務"
@@ -1254,10 +1255,10 @@
"輕觸即可查看所有網路""連線""所有網路"
- "要連線到 Wi-Fi 網路嗎?"
- "「%s」建議的無線網路"
- "是"
- "否"
+ "是否允許系統連線到建議的 Wi‑Fi 網路?"
+ "「%s」建議的網路。裝置可能會自動連線到這些網路。"
+ "允許"
+ "不用了,謝謝""Wi‑Fi 將自動開啟""當你位於已儲存的高品質網路範圍內時""不要重新開啟"
@@ -1361,7 +1362,7 @@
"USB 連接埠中有液體或灰塵""系統已自動停用 USB 連接埠。輕觸即可瞭解詳情。""現在可以使用 USB 連接埠"
- "手機目前無法偵測液體或灰塵。"
+ "手機目前沒有偵測到液體或灰塵。""正在接收錯誤報告…""要分享錯誤報告嗎?""正在分享錯誤報告…"
@@ -1566,13 +1567,13 @@
"「%s」的數據用量比平常多""安全性憑證""憑證有效。"
- "發佈至:"
+ "發布至:""常用名稱:""機構:""機構單位:"
- "發佈者:"
+ "發布者:""有效期間:"
- "發佈日期:"
+ "發布日期:""到期日:""序號:""指紋"
@@ -1887,8 +1888,8 @@
"未分類""這些通知的重要性由你決定。""這則通知涉及特定人士,因此被歸為重要通知。"
- "要允許 %1$s 為 %2$s 建立新使用者嗎?"
- "要允許 %1$s 為 %2$s 建立新使用者嗎 (這個帳戶目前已有使用者)?"
+ "要允許「%1$s」替 %2$s (這個帳戶目前已有使用者) 建立新使用者嗎?"
+ "要允許「%1$s」替 %2$s 建立新使用者嗎?""新增語言""地區偏好設定""請輸入語言名稱"
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 0c20cf4a10ebfc184ddbe454c156a05e4c9b7a82..aa6bdac3368745d4f26bd6827899a96a479ab3e8 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -95,6 +95,7 @@
"Imilayezo yevoyisimeyili""Ukushaya kwe-Wi-Fi""Isimo se-SIM"
+ "Isimo se-SIM esiphezulu kakhulu""Umngani ucele imodi ye-TTY ephelele""Umngani ucele imodi ye-TTY HCO""Umngani ucele imodi ye-TTY VCO"
@@ -550,11 +551,11 @@
"Isithonjana sezigxivizo zeminwe"
- "phatha izingxenyekazi zekhompuyutha zokufakazela ubuqiniso zobuso"
+ "phatha izingxenyekazi zekhompuyutha ze-face unlock""Ivumela uhlelo lokusebenza ukuthi luhoxise izindlela zokungeza nokususa amathempulethi obuso azosetshenziswa."
- "sebenzisa izingxenyekazi zekhompuyutha zokufakazela ubuqiniso kobuso"
- "Ivumela uhlelo lokusebenza ukuthi lusebenzise ukufakazela ubuqiniso bobuso bezingxenyekazi ukuze kufakazelwe ubuqiniso"
- "Ukufakazela ubuqiniso bobuso"
+ "sebenzisa izingxenyekazi zekhompuyutha ze-face unlock"
+ "Ivumela uhlelo lokusebenza ukuthi lusebenzise izingxenyekazi zekhompuyutha ze-face unlock ukuze kufakazelwe ubuqiniso"
+ "I-Face unlock""Phinda ubhalise ubuso bakho""Ukuze uthuthukise ukubonwa, sicela uphinde ubhalise ubuso bakho""Ayikwazanga ukuthwebula idatha enembile yobuso. Zama futhi."
@@ -567,7 +568,7 @@
"Hambisa ifoni ngakwesokunxele.""Hambisa ifoni ngakwesokudla.""Sicela ubheke ngokuqondile kakhulu kudivayisi yakho."
- "Ayikwazi ukubona ubuso bakho. Bheka ifoni"
+ "Beka ubuso bakho ngqo phambi kwefoni.""Ukunyakaza okuningi kakhulu. Bamba ifoni iqine.""Sicela uphinde ubhalise ubuso bakho.""Ayisakwazi ukubona ubuso. Zama futhi."
@@ -576,19 +577,19 @@
"Jikisa ikhanda lakho kancane.""Jikisa ikhanda lakho kancane.""Susa noma yini efihle ubuso bakho."
- "Hlanza inzwa kunqenqema oluphezulu lwesikrini."
+ "Hlanza okuphezulu kwesikrini sakho, kufaka phakathi ibha emnyama""Ayikwazi ukuqinisekisa ubuso. Izingxenyekazi zekhompyutha azitholakali."
- "Zama ukufakazela ubuqiniso bobuso futhi."
+ "Zama i-face unlock futhi.""Ayikwazi ukulondoloza idatha yobuso. Susa endala."
- "Umsebenzi wobuso ukhanselwe"
- "Ukufakazela ubuqiniso kobuso kukhanselwe umsebenzisi"
+ "Umsebenzi wobuso ukhanselwe."
+ "I-face unlock ikhanselwe umsebenzisi.""Imizamo eminingi kakhulu. Zama futhi emuva kwesikhathi."
- "Imizamo eminingi kakhulu. Ukugunyaza ubuso kukhutshaziwe."
+ "Imizamo eminingi kakhulu. I-Face unlock ikhutshaziwe.""Ayikwazi ukuqinisekisa ubuso. Zama futhi."
- "Awukakasethi ukufakazela ubuqiniso bobuso"
- "Ukufakazela ubuqiniso bobuso akusekelwe kule divayisi"
+ "Awukakasethi i-face unlock."
+ "I-face unlock ayisekelwe kule divayisi.""Ubuso be-%d"
@@ -1254,10 +1255,10 @@
"Thepha ukuze ubone onke amanethiwekhi""Xhuma""Onke amanethiwekhi"
- "Xhumeka kumanethiwekhi e-Wi-Fi?"
- "Kuphakanyiswe ngu-%s"
- "Yebo"
- "Cha"
+ "Vumela amanethiwekhi e-Wi-Fi aphakanyisiwe?"
+ "%s amanethiwekhi aphakanyisiwe. Idivayisi ingaxhumeka ngokuzenzakalela."
+ "Vumela"
+ "Cha ngiyabonga""I-Wi-Fi izovuleka ngokuzenzakalela""Uma useduze kwenethiwekhi yekhwalithi ephezulu elondoloziwe""Ungaphindi uvule"
@@ -1887,8 +1888,8 @@
"Akufakwanga esigabeni""Usethe ukubaluleka kwalezi zaziso.""Lokhu kubalulekile ngenxa yabantu ababandakanyekayo."
- "Vumela i-%1$s ukudala umsebenzisi omusha nge-%2$s ?"
- "Vumela i-%1$s ukudala umsebenzisi omusha nge-%2$s (umsebenzisi onale akhawunti usuvel ukhona) ?"
+ "Vumela i-%1$s ukuthi idale umsebenzisi omusha nge-%2$s (Umsebenzisi onale akhawunti usevele ukhona) ?"
+ "Vumela i-%1$s ukuthi idale umsebenzisi omusha nge-%2$s ?""Engeza ulwimi""Okuncamelayo kwesifunda""Thayipha igama lolimi"
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index 3aa5a96cf767a08ea3c5fa3558912f954b7e60cd..6920d8b03bc000152453bb3368f0f4d0e333c146 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -1127,6 +1127,22 @@
regularly selected color mode will be used if this value is negative. -->
-1
+
+
+
+
+
+
5
- 240000
+ 3300002000
@@ -2331,7 +2347,7 @@
false
- 1500
+ 300
- false
+
+
+ "DE"
+
@@ -4052,15 +4070,61 @@
- 10.0
+ A float array containing a list of ambient brightnesses, in Lux. This array,
+ together with config_displayWhiteBalanceLowLightAmbientBiases, is used to generate a
+ lookup table used in DisplayWhiteBalanceController. This lookup table is used to map
+ ambient brightness readings to a bias, where the bias is used to linearly interpolate
+ between ambient color temperature and
+ config_displayWhiteBalanceLowLightAmbientColorTemperature.
+ This table is optional. If used, this array must,
+ 1) Contain at least two entries
+ 2) Be the same length as config_displayWhiteBalanceLowLightAmbientBiases. -->
+
+ 10.0
+ 10.0
+
+ An array containing a list of biases. See
+ config_displayWhiteBalanceLowLightAmbientBrightnesses for additional details.
+ This array must be in the range of [0.0, 1.0]. -->
+
+ 0.0
+ 1.0
+
+
+
6500.0
+
+
+
+
+
+
+
+
+
+ 8000.0
+
+
+ M22,16.41L20.59,15l-2.09,2.09L16.41,15L15,16.41l2.09,2.09L15,20.59L16.41,22l2.09-2.08L20.59,22L22,20.59l-2.08-2.09 L22,16.41z
+
+
+ 11
+ 11
+
false
@@ -4103,6 +4176,32 @@
for higher refresh rates to be automatically used out of the box -->
60
+
+
+
+
+
+
+
+
+
+ 0
+
@@ -4165,6 +4264,9 @@
+
+ true
+
@@ -4181,6 +4283,15 @@
3
+
+
+
+
+ false
+
false
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index 5363ef9208868dd91cb488d27a021fdecd49e949..609659b62948d8538b3ea75e28c8d114fdf2c9c0 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -90,6 +90,24 @@
orientation. If zero, the value of rounded_corner_radius is used. -->
0dp
+
+ 0px
+
+ 0px
+
+ 0px
+
48dp
@@ -261,7 +279,7 @@
1dp
- 92dp
+ 106dp64dp
@@ -730,6 +748,8 @@
1.22
+ 48dp
+
8dp25dp
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 152b131af8f5f2746529fe8207c235f945ecef8d..71bd8022983092017d5f890ac199a5ced7435b42 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -187,6 +187,9 @@
Wi-Fi callingSIM status
+
+ High priority SIM status
+
Peer requested TTY Mode FULL
@@ -1502,16 +1505,16 @@
Fingerprint icon
- manage face authentication hardware
+ manage face unlock hardwareAllows the app to invoke methods to add and delete facial templates for use.
- use face authentication hardware
+ use face unlock hardware
- Allows the app to use face authentication hardware for authentication
+ Allows the app to use face unlock hardware for authentication
- Face Authentication
+ Face unlockRe-enroll your face
@@ -1538,7 +1541,7 @@
Please look more directly at your device.
- Can\u2019t see your face. Look at the phone.
+ Position your face directly in front of the phone.Too much motion. Hold phone steady.
@@ -1555,8 +1558,8 @@
Turn your head a little less.Remove anything hiding your face.
-
- Clean the sensor at the top edge of the screen.
+
+ Clean the top of your screen, including the black bar
@@ -1564,23 +1567,23 @@
Can\u2019t verify face. Hardware not available.
- Try face authentication again.
+ Try face unlock again.Can\u2019t store new face data. Delete an old one first.
- Face operation canceled
-
- Face authentication canceled by user
+ Face operation canceled.
+
+ Face unlock canceled by user.Too many attempts. Try again later.
- Too many attempts. Face authentication disabled.
+ Too many attempts. Face unlock disabled.Can\u2019t verify face. Try again.
- You haven\u2019t set up face authentication
-
- Face authentication is not supported on this device
+ You haven\u2019t set up face unlock.
+
+ Face unlock is not supported on this device.Face %d
@@ -3387,13 +3390,13 @@
All networks
- Connect to Wi\u2011Fi networks?
+ Allow suggested Wi\u2011Fi networks?
- Suggested by %s
+ %s suggested networks. Device may connect automatically.
- Yes
+ Allow
- No
+ No thanksWi\u2011Fi will turn on automatically
@@ -5006,9 +5009,9 @@
This is important because of the people involved.
- Allow %1$s to create a new User with %2$s ?
+ Allow %1$s to create a new User with %2$s (a User with this account already exists) ?
- Allow %1$s to create a new User with %2$s (a User with this account already exists) ?
+ Allow %1$s to create a new User with %2$s ?
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index b1ac7bd0d40b43fde32ec2099333f3d035b5084c..0a8c5d3f951209165f1c3ab77a576b888c453f42 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -650,6 +650,7 @@
+
@@ -2289,14 +2290,10 @@
+
-
-
-
-
-
@@ -2607,6 +2604,7 @@
+
@@ -3216,6 +3214,8 @@
+
+
@@ -3289,6 +3289,9 @@
+
+
+
@@ -3573,7 +3576,7 @@
-
+
@@ -3735,6 +3738,9 @@
+
+
+
@@ -3784,8 +3790,12 @@
-
+
+
+
+
+
@@ -3813,11 +3823,15 @@
+
+
+
+
@@ -3836,6 +3850,7 @@
+
@@ -3847,9 +3862,13 @@
+
+
+
+
diff --git a/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java b/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java
index 1b6560322a132acaff372614fd3a83b69cb492f9..707d7b30e09bcb4bc6bbb90ce67da9636df004c5 100644
--- a/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java
+++ b/core/tests/benchmarks/src/android/net/NetworkStatsBenchmark.java
@@ -19,13 +19,22 @@ package android.net;
import com.google.caliper.BeforeExperiment;
import com.google.caliper.Param;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
public class NetworkStatsBenchmark {
- private static final String UNDERLYING_IFACE = "wlan0";
+ private static final String[] UNDERLYING_IFACES = {"wlan0", "rmnet0"};
private static final String TUN_IFACE = "tun0";
private static final int TUN_UID = 999999999;
@Param({"100", "1000"})
private int mSize;
+ /**
+ * Should not be more than the length of {@link #UNDERLYING_IFACES}.
+ */
+ @Param({"1", "2"})
+ private int mNumUnderlyingIfaces;
private NetworkStats mNetworkStats;
@BeforeExperiment
@@ -33,8 +42,10 @@ public class NetworkStatsBenchmark {
mNetworkStats = new NetworkStats(0, mSize + 2);
int uid = 0;
NetworkStats.Entry recycle = new NetworkStats.Entry();
+ final List allIfaces = getAllIfacesForBenchmark(); // also contains TUN_IFACE.
+ final int totalIfaces = allIfaces.size();
for (int i = 0; i < mSize; i++) {
- recycle.iface = (i < mSize / 2) ? TUN_IFACE : UNDERLYING_IFACE;
+ recycle.iface = allIfaces.get(i % totalIfaces);
recycle.uid = uid;
recycle.set = i % 2;
recycle.tag = NetworkStats.TAG_NONE;
@@ -48,22 +59,39 @@ public class NetworkStatsBenchmark {
uid++;
}
}
- recycle.iface = UNDERLYING_IFACE;
- recycle.uid = TUN_UID;
- recycle.set = NetworkStats.SET_FOREGROUND;
- recycle.tag = NetworkStats.TAG_NONE;
- recycle.rxBytes = 90000 * mSize;
- recycle.rxPackets = 40 * mSize;
- recycle.txBytes = 180000 * mSize;
- recycle.txPackets = 1200 * mSize;
- recycle.operations = 0;
- mNetworkStats.addValues(recycle);
+
+ for (int i = 0; i < mNumUnderlyingIfaces; i++) {
+ recycle.iface = UNDERLYING_IFACES[i];
+ recycle.uid = TUN_UID;
+ recycle.set = NetworkStats.SET_FOREGROUND;
+ recycle.tag = NetworkStats.TAG_NONE;
+ recycle.rxBytes = 90000 * mSize;
+ recycle.rxPackets = 40 * mSize;
+ recycle.txBytes = 180000 * mSize;
+ recycle.txPackets = 1200 * mSize;
+ recycle.operations = 0;
+ mNetworkStats.addValues(recycle);
+ }
+ }
+
+ private String[] getVpnUnderlyingIfaces() {
+ return Arrays.copyOf(UNDERLYING_IFACES, mNumUnderlyingIfaces);
+ }
+
+ /**
+ * Same as {@link #getVpnUnderlyingIfaces}, but also contains {@link #TUN_IFACE}.
+ */
+ private List getAllIfacesForBenchmark() {
+ List ifaces = new ArrayList<>();
+ ifaces.add(TUN_IFACE);
+ ifaces.addAll(Arrays.asList(getVpnUnderlyingIfaces()));
+ return ifaces;
}
public void timeMigrateTun(int reps) {
for (int i = 0; i < reps; i++) {
NetworkStats stats = mNetworkStats.clone();
- stats.migrateTun(TUN_UID, TUN_IFACE, UNDERLYING_IFACE);
+ stats.migrateTun(TUN_UID, TUN_IFACE, getVpnUnderlyingIfaces());
}
}
diff --git a/core/tests/coretests/res/values/overlayable_icons_test.xml b/core/tests/coretests/res/values/overlayable_icons_test.xml
index 68de2c0caf1892dcfa690a5a4782820fbf30d568..6503f3ee6d577787f4344dd72e518b3d7fe91dce 100644
--- a/core/tests/coretests/res/values/overlayable_icons_test.xml
+++ b/core/tests/coretests/res/values/overlayable_icons_test.xml
@@ -20,15 +20,18 @@
@*android:drawable/ic_audio_alarm@*android:drawable/ic_audio_alarm_mute
+ @*android:drawable/ic_battery_80_24dp@*android:drawable/ic_bluetooth_share_icon@*android:drawable/ic_bt_headphones_a2dp@*android:drawable/ic_bt_headset_hfp@*android:drawable/ic_bt_hearing_aid@*android:drawable/ic_bt_laptop
+ @*android:drawable/ic_bt_misc_hid@*android:drawable/ic_bt_network_pan@*android:drawable/ic_bt_pointing_hid@*android:drawable/ic_corp_badge@*android:drawable/ic_expand_more
+ @*android:drawable/ic_faster_emergency@*android:drawable/ic_file_copy@*android:drawable/ic_lock@*android:drawable/ic_lock_bugreport
@@ -36,6 +39,7 @@
@*android:drawable/ic_lock_power_off@*android:drawable/ic_lockscreen_ime@*android:drawable/ic_mode_edit
+ @*android:drawable/ic_notifications_alerted@*android:drawable/ic_phone@*android:drawable/ic_qs_airplane@*android:drawable/ic_qs_auto_rotate
@@ -44,6 +48,7 @@
@*android:drawable/ic_qs_dnd@*android:drawable/ic_qs_flashlight@*android:drawable/ic_qs_night_display_on
+ @*android:drawable/ic_qs_ui_mode_night@*android:drawable/ic_restart@*android:drawable/ic_screenshot@*android:drawable/ic_settings_bluetooth
@@ -65,6 +70,7 @@
@*android:drawable/ic_wifi_signal_3@*android:drawable/ic_wifi_signal_4@*android:drawable/perm_group_activity_recognition
+ @*android:drawable/perm_group_aural@*android:drawable/perm_group_calendar@*android:drawable/perm_group_call_log@*android:drawable/perm_group_camera
diff --git a/core/tests/coretests/src/android/provider/SettingsBackupTest.java b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
index 2bc150a564b21e96b8bb443773b41ab88ef422c0..e60e5555cc9d9fbb88547915698641361dc184f2 100644
--- a/core/tests/coretests/src/android/provider/SettingsBackupTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsBackupTest.java
@@ -93,6 +93,7 @@ public class SettingsBackupTest {
Settings.System.VOLUME_VOICE, // deprecated since API 2?
Settings.System.WHEN_TO_MAKE_WIFI_CALLS, // bug?
Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, // used for debugging only
+ Settings.System.MIN_REFRESH_RATE, // depends on hardware capabilities
Settings.System.PEAK_REFRESH_RATE // depends on hardware capabilities
);
@@ -264,6 +265,7 @@ public class SettingsBackupTest {
Settings.Global.EUICC_PROVISIONED,
Settings.Global.EUICC_SUPPORTED_COUNTRIES,
Settings.Global.EUICC_FACTORY_RESET_TIMEOUT_MILLIS,
+ Settings.Global.EUICC_REMOVING_INVISIBLE_PROFILES_TIMEOUT_MILLIS,
Settings.Global.FANCY_IME_ANIMATIONS,
Settings.Global.FORCE_ALLOW_ON_EXTERNAL,
Settings.Global.FORCED_APP_STANDBY_ENABLED,
@@ -721,7 +723,7 @@ public class SettingsBackupTest {
Settings.Secure.BIOMETRIC_DEBUG_ENABLED,
Settings.Secure.FACE_UNLOCK_ATTENTION_REQUIRED,
Settings.Secure.FACE_UNLOCK_DIVERSITY_REQUIRED,
- Settings.Secure.FACE_UNLOCK_EDUCATION_INFO_DISPLAYED);
+ Settings.Secure.FACE_UNLOCK_RE_ENROLL);
@Test
public void systemSettingsBackedUpOrBlacklisted() {
diff --git a/core/tests/coretests/src/android/widget/AbsSeekBarTest.java b/core/tests/coretests/src/android/widget/AbsSeekBarTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..aec60963c389a9a287c793bb0f5b5b6a3d6e222e
--- /dev/null
+++ b/core/tests/coretests/src/android/widget/AbsSeekBarTest.java
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.widget;
+
+import static android.view.View.MeasureSpec.EXACTLY;
+import static android.view.View.MeasureSpec.makeMeasureSpec;
+
+import static org.hamcrest.Matchers.hasItem;
+import static org.hamcrest.Matchers.hasSize;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.graphics.drawable.ShapeDrawable;
+import android.graphics.drawable.shapes.RectShape;
+import android.platform.test.annotations.Presubmit;
+import android.view.View;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.Arrays;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class AbsSeekBarTest {
+
+ private Context mContext;
+ private AbsSeekBar mBar;
+
+ @Before
+ public void setUp() throws Exception {
+ mContext = InstrumentationRegistry.getInstrumentation().getContext();
+ mBar = new SeekBar(mContext);
+ }
+
+ @Test
+ public void testExclusionForThumb_limitedTo48dp() {
+ mBar.setPadding(10, 10, 10, 10);
+ mBar.setThumb(newThumb(dpToPx(20)));
+ mBar.setMin(0);
+ mBar.setMax(100);
+ mBar.setProgress(50);
+ measureAndLayout(dpToPx(200), dpToPx(100));
+ List exclusions = mBar.getSystemGestureExclusionRects();
+
+ assertEquals("exclusions should be size 1, but was " + exclusions, 1, exclusions.size());
+ assertEquals("exclusion should be centered on thumb",
+ center(mBar), center(exclusions.get(0)));
+ assertEquals("exclusion should be 48dp high", dpToPx(48), exclusions.get(0).height());
+ assertEquals("exclusion should be 48dp wide", dpToPx(48), exclusions.get(0).width());
+ }
+
+ @Test
+ public void testExclusionForThumb_limitedToHeight() {
+ mBar.setPadding(10, 10, 10, 10);
+ mBar.setThumb(newThumb(dpToPx(20)));
+ mBar.setMin(0);
+ mBar.setMax(100);
+ mBar.setProgress(50);
+ measureAndLayout(dpToPx(200), dpToPx(32));
+ List exclusions = mBar.getSystemGestureExclusionRects();
+
+ assertEquals("exclusions should be size 1, but was " + exclusions, 1, exclusions.size());
+ assertEquals("exclusion should be centered on thumb",
+ center(mBar), center(exclusions.get(0)));
+ assertEquals("exclusion should be 32dp high", dpToPx(32), exclusions.get(0).height());
+ assertEquals("exclusion should be 32dp wide", dpToPx(32), exclusions.get(0).width());
+ }
+
+ @Test
+ public void testExclusionForThumb_passesThroughUserExclusions() {
+ mBar.setSystemGestureExclusionRects(Arrays.asList(new Rect(1, 2, 3, 4)));
+
+ mBar.setPadding(10, 10, 10, 10);
+ mBar.setThumb(newThumb(dpToPx(20)));
+ mBar.setMin(0);
+ mBar.setMax(100);
+ mBar.setProgress(50);
+ measureAndLayout(dpToPx(200), dpToPx(32));
+
+ assertThat(mBar.getSystemGestureExclusionRects(), hasItem(new Rect(1, 2, 3, 4)));
+ assertThat(mBar.getSystemGestureExclusionRects(), hasSize(2));
+
+ mBar.setSystemGestureExclusionRects(Arrays.asList(new Rect(3, 4, 5, 6)));
+ assertThat(mBar.getSystemGestureExclusionRects(), hasItem(new Rect(3, 4, 5, 6)));
+ assertThat(mBar.getSystemGestureExclusionRects(), hasSize(2));
+ }
+
+ private Point center(Rect rect) {
+ return new Point(rect.centerX(), rect.centerY());
+ }
+
+ private Point center(View view) {
+ return center(new Rect(view.getLeft(), view.getTop(), view.getRight(), view.getBottom()));
+ }
+
+ private ShapeDrawable newThumb(int size) {
+ final ShapeDrawable thumb = new ShapeDrawable(new RectShape());
+ thumb.setIntrinsicWidth(size);
+ thumb.setIntrinsicHeight(size);
+ return thumb;
+ }
+
+ private void measureAndLayout(int wPx, int hPx) {
+ mBar.measure(makeMeasureSpec(wPx, EXACTLY), makeMeasureSpec(hPx, EXACTLY));
+ mBar.layout(0, 0, wPx, hPx);
+ }
+
+ private int dpToPx(int dp) {
+ return (int) (mContext.getResources().getDisplayMetrics().density * dp);
+ }
+}
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
index 767ec0e38a865c8987c47803aa73c2ea809c5c15..c44b7d81868d8e5baecd1f302f0291c2f7b7fec6 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
@@ -24,12 +24,19 @@ import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;
+import static com.android.internal.app.ChooserActivity.CALLER_TARGET_SCORE_BOOST;
+import static com.android.internal.app.ChooserActivity.SHORTCUT_TARGET_SCORE_BOOST;
+import static com.android.internal.app.ChooserActivity.TARGET_TYPE_CHOOSER_TARGET;
+import static com.android.internal.app.ChooserActivity.TARGET_TYPE_DEFAULT;
+import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE;
+import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER;
import static com.android.internal.app.ChooserWrapperActivity.sOverrides;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.not;
import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.atLeastOnce;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
@@ -45,6 +52,8 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager.ShareShortcutInfo;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.Canvas;
@@ -770,6 +779,139 @@ public class ChooserActivityTest {
onView(withId(R.id.content_preview_file_icon)).check(matches(isDisplayed()));
}
+ @Test
+ public void testGetBaseScore() {
+ final float testBaseScore = 0.89f;
+
+ Intent sendIntent = createSendTextIntent();
+ List resolvedComponentInfos = createResolvedComponentsForTest(2);
+
+ when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+ Mockito.anyBoolean(),
+ Mockito.isA(List.class))).thenReturn(resolvedComponentInfos);
+ when(sOverrides.resolverListController.getScore(Mockito.isA(
+ ResolverActivity.DisplayResolveInfo.class))).thenReturn(testBaseScore);
+
+ final ChooserWrapperActivity activity = mActivityRule
+ .launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+
+ final ResolverActivity.DisplayResolveInfo testDri =
+ activity.createTestDisplayResolveInfo(sendIntent,
+ ResolverDataProvider.createResolveInfo(3, 0), "testLabel", "testInfo", sendIntent);
+ final ChooserActivity.ChooserListAdapter adapter = activity.getAdapter();
+
+ assertThat(adapter.getBaseScore(null, 0), is(CALLER_TARGET_SCORE_BOOST));
+ assertThat(adapter.getBaseScore(testDri, TARGET_TYPE_DEFAULT), is(testBaseScore));
+ assertThat(adapter.getBaseScore(testDri, TARGET_TYPE_CHOOSER_TARGET), is(testBaseScore));
+ assertThat(adapter.getBaseScore(testDri, TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE),
+ is(SHORTCUT_TARGET_SCORE_BOOST));
+ assertThat(adapter.getBaseScore(testDri, TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER),
+ is(testBaseScore * SHORTCUT_TARGET_SCORE_BOOST));
+ }
+
+ /**
+ * The case when AppPrediction service is not defined in PackageManager is already covered
+ * as a test parameter {@link ChooserActivityTest#packageManagers}. This test is checking the
+ * case when the prediction service is defined but the component is not available on the device.
+ */
+ @Test
+ public void testIsAppPredictionServiceAvailable() {
+ Intent sendIntent = createSendTextIntent();
+ List resolvedComponentInfos = createResolvedComponentsForTest(2);
+ when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+ Mockito.anyBoolean(),
+ Mockito.isA(List.class))).thenReturn(resolvedComponentInfos);
+
+ final ChooserWrapperActivity activity = mActivityRule
+ .launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+
+ if (activity.getPackageManager().getAppPredictionServicePackageName() == null) {
+ assertThat(activity.isAppPredictionServiceAvailable(), is(false));
+ } else {
+ assertThat(activity.isAppPredictionServiceAvailable(), is(true));
+
+ sOverrides.resources = Mockito.spy(activity.getResources());
+ when(sOverrides.resources.getString(R.string.config_defaultAppPredictionService))
+ .thenReturn("ComponentNameThatDoesNotExist");
+
+ assertThat(activity.isAppPredictionServiceAvailable(), is(false));
+ }
+ }
+
+ @Test
+ public void testConvertToChooserTarget_predictionService() {
+ Intent sendIntent = createSendTextIntent();
+ List resolvedComponentInfos = createResolvedComponentsForTest(2);
+ when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+ Mockito.anyBoolean(),
+ Mockito.isA(List.class))).thenReturn(resolvedComponentInfos);
+
+ final ChooserWrapperActivity activity = mActivityRule
+ .launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+
+ List shortcuts = createShortcuts(activity);
+
+ int[] expectedOrderAllShortcuts = {0, 1, 2, 3};
+ float[] expectedScoreAllShortcuts = {1.0f, 0.99f, 0.98f, 0.97f};
+
+ List chooserTargets = activity.convertToChooserTarget(shortcuts, shortcuts,
+ null, TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE);
+ assertCorrectShortcutToChooserTargetConversion(shortcuts, chooserTargets,
+ expectedOrderAllShortcuts, expectedScoreAllShortcuts);
+
+ List subset = new ArrayList<>();
+ subset.add(shortcuts.get(1));
+ subset.add(shortcuts.get(2));
+ subset.add(shortcuts.get(3));
+
+ int[] expectedOrderSubset = {1, 2, 3};
+ float[] expectedScoreSubset = {0.99f, 0.98f, 0.97f};
+
+ chooserTargets = activity.convertToChooserTarget(subset, shortcuts, null,
+ TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE);
+ assertCorrectShortcutToChooserTargetConversion(shortcuts, chooserTargets,
+ expectedOrderSubset, expectedScoreSubset);
+ }
+
+ @Test
+ public void testConvertToChooserTarget_shortcutManager() {
+ Intent sendIntent = createSendTextIntent();
+ List resolvedComponentInfos = createResolvedComponentsForTest(2);
+ when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+ Mockito.anyBoolean(),
+ Mockito.isA(List.class))).thenReturn(resolvedComponentInfos);
+
+ final ChooserWrapperActivity activity = mActivityRule
+ .launchActivity(Intent.createChooser(sendIntent, null));
+ waitForIdle();
+
+ List shortcuts = createShortcuts(activity);
+
+ int[] expectedOrderAllShortcuts = {2, 0, 3, 1};
+ float[] expectedScoreAllShortcuts = {1.0f, 0.99f, 0.99f, 0.98f};
+
+ List chooserTargets = activity.convertToChooserTarget(shortcuts, shortcuts,
+ null, TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER);
+ assertCorrectShortcutToChooserTargetConversion(shortcuts, chooserTargets,
+ expectedOrderAllShortcuts, expectedScoreAllShortcuts);
+
+ List subset = new ArrayList<>();
+ subset.add(shortcuts.get(1));
+ subset.add(shortcuts.get(2));
+ subset.add(shortcuts.get(3));
+
+ int[] expectedOrderSubset = {2, 3, 1};
+ float[] expectedScoreSubset = {1.0f, 0.99f, 0.98f};
+
+ chooserTargets = activity.convertToChooserTarget(subset, shortcuts, null,
+ TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER);
+ assertCorrectShortcutToChooserTargetConversion(shortcuts, chooserTargets,
+ expectedOrderSubset, expectedScoreSubset);
+ }
+
// This test is too long and too slow and should not be taken as an example for future tests.
@Test
public void testDirectTargetSelectionLogging() throws InterruptedException {
@@ -800,7 +942,7 @@ public class ChooserActivityTest {
"testInfo",
sendIntent),
serviceTargets,
- false)
+ TARGET_TYPE_CHOOSER_TARGET)
);
// Thread.sleep shouldn't be a thing in an integration test but it's
// necessary here because of the way the code is structured
@@ -866,7 +1008,7 @@ public class ChooserActivityTest {
"testInfo",
sendIntent),
serviceTargets,
- false)
+ TARGET_TYPE_CHOOSER_TARGET)
);
// Thread.sleep shouldn't be a thing in an integration test but it's
// necessary here because of the way the code is structured
@@ -927,7 +1069,7 @@ public class ChooserActivityTest {
"testInfo",
sendIntent),
serviceTargets,
- false)
+ TARGET_TYPE_CHOOSER_TARGET)
);
// Thread.sleep shouldn't be a thing in an integration test but it's
// necessary here because of the way the code is structured
@@ -1066,4 +1208,43 @@ public class ChooserActivityTest {
return bitmap;
}
+
+ private List createShortcuts(Context context) {
+ Intent testIntent = new Intent("TestIntent");
+
+ List shortcuts = new ArrayList<>();
+ shortcuts.add(new ShareShortcutInfo(
+ new ShortcutInfo.Builder(context, "shortcut1")
+ .setIntent(testIntent).setShortLabel("label1").setRank(3).build(), // 0 2
+ new ComponentName("package1", "class1")));
+ shortcuts.add(new ShareShortcutInfo(
+ new ShortcutInfo.Builder(context, "shortcut2")
+ .setIntent(testIntent).setShortLabel("label2").setRank(7).build(), // 1 3
+ new ComponentName("package2", "class2")));
+ shortcuts.add(new ShareShortcutInfo(
+ new ShortcutInfo.Builder(context, "shortcut3")
+ .setIntent(testIntent).setShortLabel("label3").setRank(1).build(), // 2 0
+ new ComponentName("package3", "class3")));
+ shortcuts.add(new ShareShortcutInfo(
+ new ShortcutInfo.Builder(context, "shortcut4")
+ .setIntent(testIntent).setShortLabel("label4").setRank(3).build(), // 3 2
+ new ComponentName("package4", "class4")));
+
+ return shortcuts;
+ }
+
+ private void assertCorrectShortcutToChooserTargetConversion(List shortcuts,
+ List chooserTargets, int[] expectedOrder, float[] expectedScores) {
+ assertEquals(expectedOrder.length, chooserTargets.size());
+ for (int i = 0; i < chooserTargets.size(); i++) {
+ ChooserTarget ct = chooserTargets.get(i);
+ ShortcutInfo si = shortcuts.get(expectedOrder[i]).getShortcutInfo();
+ ComponentName cn = shortcuts.get(expectedOrder[i]).getTargetComponent();
+
+ assertEquals(si.getId(), ct.getIntentExtras().getString(Intent.EXTRA_SHORTCUT_ID));
+ assertEquals(si.getShortLabel(), ct.getTitle());
+ assertThat(Math.abs(expectedScores[i] - ct.getScore()) < 0.000001, is(true));
+ assertEquals(cn.flattenToString(), ct.getComponentName().flattenToString());
+ }
+ }
}
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
index 44e56eaf0593108e1fefdd68373e9cfd3d67ebe6..1d567c73f3761cab9ed61d1b2155df28808dcb65 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
@@ -24,6 +24,7 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
+import android.content.res.Resources;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.net.Uri;
@@ -84,6 +85,14 @@ public class ChooserWrapperActivity extends ChooserActivity {
return super.getPackageManager();
}
+ @Override
+ public Resources getResources() {
+ if (sOverrides.resources != null) {
+ return sOverrides.resources;
+ }
+ return super.getResources();
+ }
+
@Override
protected Bitmap loadThumbnail(Uri uri, Size size) {
if (sOverrides.previewThumbnail != null) {
@@ -145,6 +154,7 @@ public class ChooserWrapperActivity extends ChooserActivity {
public Bitmap previewThumbnail;
public MetricsLogger metricsLogger;
public int alternateProfileSetting;
+ public Resources resources;
public void reset() {
onSafelyStartCallback = null;
@@ -157,6 +167,7 @@ public class ChooserWrapperActivity extends ChooserActivity {
resolverListController = mock(ResolverListController.class);
metricsLogger = mock(MetricsLogger.class);
alternateProfileSetting = 0;
+ resources = null;
}
}
}
diff --git a/core/tests/screenshothelpertests/Android.bp b/core/tests/screenshothelpertests/Android.bp
new file mode 100644
index 0000000000000000000000000000000000000000..3d54b68b7ddc1d888c7aeaf28ea7114fbbb640fb
--- /dev/null
+++ b/core/tests/screenshothelpertests/Android.bp
@@ -0,0 +1,28 @@
+android_test {
+ name: "ScreenshotHelperTests",
+
+ srcs: [
+ "src/**/*.java",
+ ],
+
+ static_libs: [
+ "frameworks-base-testutils",
+ "androidx.test.runner",
+ "androidx.test.rules",
+ "androidx.test.ext.junit",
+ "mockito-target-minus-junit4",
+ "platform-test-annotations",
+ ],
+
+ libs: [
+ "android.test.runner",
+ "android.test.base",
+ "android.test.mock",
+ ],
+
+ platform_apis: true,
+ test_suites: ["device-tests"],
+
+ certificate: "platform",
+}
+
diff --git a/core/tests/screenshothelpertests/AndroidManifest.xml b/core/tests/screenshothelpertests/AndroidManifest.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2e12ef4db3581708d6c030c839ff0987d074d83a
--- /dev/null
+++ b/core/tests/screenshothelpertests/AndroidManifest.xml
@@ -0,0 +1,32 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java b/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..848364584ef3e5b4fbdf14d90ea5abacb7f114af
--- /dev/null
+++ b/core/tests/screenshothelpertests/src/com/android/internal/util/ScreenshotHelperTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.internal.util;
+
+import static android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN;
+import static android.view.WindowManager.TAKE_SCREENSHOT_SELECTED_REGION;
+
+import static junit.framework.Assert.assertFalse;
+import static junit.framework.Assert.fail;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mockito;
+
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+public final class ScreenshotHelperTest {
+ private Context mContext;
+ private ScreenshotHelper mScreenshotHelper;
+ private Handler mHandler;
+
+
+ @Before
+ public void setUp() {
+ // `ScreenshotHelper.notifyScreenshotError()` calls `Context.sendBroadcastAsUser()` and
+ // `Context.bindServiceAsUser`.
+ //
+ // This raises a `SecurityException` if the device is locked. Calling either `Context`
+ // method results in a broadcast of `android.intent.action. USER_PRESENT`. Only the system
+ // process is allowed to broadcast that `Intent`.
+ mContext = Mockito.spy(Context.class);
+ Mockito.doNothing().when(mContext).sendBroadcastAsUser(any(), any());
+ Mockito.doReturn(true).when(mContext).bindServiceAsUser(any(), any(), anyInt(), any());
+
+ mHandler = new Handler(Looper.getMainLooper());
+ mScreenshotHelper = new ScreenshotHelper(mContext);
+ }
+
+ @Test
+ public void testFullscreenScreenshot() {
+ mScreenshotHelper.takeScreenshot(TAKE_SCREENSHOT_FULLSCREEN, false, false, mHandler, null);
+ }
+
+ @Test
+ public void testSelectedRegionScreenshot() {
+ mScreenshotHelper.takeScreenshot(TAKE_SCREENSHOT_SELECTED_REGION, false, false, mHandler,
+ null);
+ }
+
+ @Test
+ public void testScreenshotTimesOut() {
+ long timeoutMs = 10;
+
+ CountDownLatch lock = new CountDownLatch(1);
+ mScreenshotHelper.takeScreenshot(TAKE_SCREENSHOT_FULLSCREEN, false, false, timeoutMs,
+ mHandler,
+ worked -> {
+ assertFalse(worked);
+ lock.countDown();
+ });
+
+ try {
+ // Add tolerance for delay to prevent flakes.
+ long awaitDurationMs = timeoutMs + 100;
+ if (!lock.await(awaitDurationMs, TimeUnit.MILLISECONDS)) {
+ fail("lock never freed");
+ }
+ } catch (InterruptedException e) {
+ fail("lock interrupted");
+ }
+ }
+}
diff --git a/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java b/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
index 2596ecefe53df246ea4456ac2ebb7a671557bf3c..27f3596f239ba0cb5d112da5716435f735c6c4ee 100644
--- a/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/XmlUtilsTest.java
@@ -16,13 +16,22 @@
package com.android.internal.util;
+import static org.junit.Assert.assertArrayEquals;
+
+import android.util.Xml;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
+
import junit.framework.TestCase;
+import org.xmlpull.v1.XmlPullParser;
+import org.xmlpull.v1.XmlSerializer;
+
public class XmlUtilsTest extends TestCase {
// https://code.google.com/p/android/issues/detail?id=63717
@@ -38,4 +47,23 @@ public class XmlUtilsTest extends TestCase {
assertEquals("nullValue", deserialized.get(null));
assertEquals("fooValue", deserialized.get("foo"));
}
+
+ public void testreadWriteXmlByteArrayValue() throws Exception {
+ byte[] testByteArray = {0x1 , 0xa, 0xb, 0x9, 0x34, (byte) 0xaa, (byte) 0xba, (byte) 0x99};
+
+ ByteArrayOutputStream baos = new ByteArrayOutputStream(1024);
+ XmlSerializer serializer = new FastXmlSerializer();
+ serializer.setOutput(baos, StandardCharsets.UTF_8.name());
+ serializer.startDocument(null, true);
+ XmlUtils.writeValueXml(testByteArray, "testByteArray", serializer);
+ serializer.endDocument();
+
+ InputStream bais = new ByteArrayInputStream(baos.toByteArray());
+ XmlPullParser pullParser = Xml.newPullParser();
+ pullParser.setInput(bais, StandardCharsets.UTF_8.name());
+ String[] name = new String[1];
+ byte[] testByteArrayDeserialized = (byte[]) XmlUtils.readValueXml(pullParser, name);
+ assertEquals("testByteArray", name[0]);
+ assertArrayEquals(testByteArray, testByteArrayDeserialized);
+ }
}
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index 233f82640a203370d516964a38e31f455eb12396..65f784dbee8324297b9ff58c0c4689fb0dcee054 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -205,6 +205,10 @@
targetSdk="29">
+
+
+
diff --git a/data/fonts/fonts.xml b/data/fonts/fonts.xml
index 072beae8baf7e12e0f910b8a7da83e2ae3095b5e..c6920977f6b9c8f0d7dfeeff2c2f70bf6f7fb933 100644
--- a/data/fonts/fonts.xml
+++ b/data/fonts/fonts.xml
@@ -323,14 +323,16 @@
NotoSansLaoUI-Bold.ttf
- NotoSansMyanmar-Regular-ZawDecode.ttf
- NotoSansMyanmar-Bold-ZawDecode.ttf
+ NotoSansMyanmar-Regular.otf
+ NotoSansMyanmar-Medium.otf
+ NotoSansMyanmar-Bold.otf
NotoSerifMyanmar-Regular.otf
NotoSerifMyanmar-Bold.otf
- NotoSansMyanmarUI-Regular-ZawDecode.ttf
- NotoSansMyanmarUI-Bold-ZawDecode.ttf
+ NotoSansMyanmarUI-Regular.otf
+ NotoSansMyanmarUI-Medium.otf
+ NotoSansMyanmarUI-Bold.otf
NotoSansThaana-Regular.ttf
diff --git a/graphics/java/android/graphics/RectF.java b/graphics/java/android/graphics/RectF.java
index 3361fa21e44b7f0ba498dfae69ef25a8db3be9e0..1d294d51a2357e43c59e5511b1d667a07819f456 100644
--- a/graphics/java/android/graphics/RectF.java
+++ b/graphics/java/android/graphics/RectF.java
@@ -27,7 +27,7 @@ import java.io.PrintWriter;
/**
* RectF holds four float coordinates for a rectangle. The rectangle is
- * represented by the coordinates of its 4 edges (left, top, right bottom).
+ * represented by the coordinates of its 4 edges (left, top, right, bottom).
* These fields can be accessed directly. Use width() and height() to retrieve
* the rectangle's width and height. Note: most methods do not check to see that
* the coordinates are sorted correctly (i.e. left <= right and top <= bottom).
diff --git a/libs/androidfw/DisplayEventDispatcher.cpp b/libs/androidfw/DisplayEventDispatcher.cpp
index 6606148956031bce27cbf6780258cc2095867cdb..d8a3f42690f4f0b76915290c0695da412f4b6ba1 100644
--- a/libs/androidfw/DisplayEventDispatcher.cpp
+++ b/libs/androidfw/DisplayEventDispatcher.cpp
@@ -34,8 +34,9 @@ namespace android {
static const size_t EVENT_BUFFER_SIZE = 100;
DisplayEventDispatcher::DisplayEventDispatcher(const sp& looper,
- ISurfaceComposer::VsyncSource vsyncSource) :
- mLooper(looper), mReceiver(vsyncSource), mWaitingForVsync(false) {
+ ISurfaceComposer::VsyncSource vsyncSource,
+ ISurfaceComposer::ConfigChanged configChanged) :
+ mLooper(looper), mReceiver(vsyncSource, configChanged), mWaitingForVsync(false) {
ALOGV("dispatcher %p ~ Initializing display event dispatcher.", this);
}
diff --git a/libs/androidfw/include/androidfw/DisplayEventDispatcher.h b/libs/androidfw/include/androidfw/DisplayEventDispatcher.h
index 5381c0174cb0b27915ce07582de32529ae71bf63..8bc25202b3ab1cf5fb4eb26d123073b5500111b7 100644
--- a/libs/androidfw/include/androidfw/DisplayEventDispatcher.h
+++ b/libs/androidfw/include/androidfw/DisplayEventDispatcher.h
@@ -23,7 +23,8 @@ namespace android {
class DisplayEventDispatcher : public LooperCallback {
public:
explicit DisplayEventDispatcher(const sp& looper,
- ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp);
+ ISurfaceComposer::VsyncSource vsyncSource = ISurfaceComposer::eVsyncSourceApp,
+ ISurfaceComposer::ConfigChanged configChanged = ISurfaceComposer::eConfigChangedSuppress);
status_t initialize();
void dispose();
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 0ec3554335fb0fb3c21778ec6db2a656ffb5831c..911b5453cd4474fcf6b660315934c8ee9b80ef8a 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -148,7 +148,8 @@ void CanvasContext::setSurface(sp&& surface) {
if (surface) {
mNativeSurface = new ReliableSurface{std::move(surface)};
- mNativeSurface->setDequeueTimeout(1000_ms);
+ // TODO: Fix error handling & re-shorten timeout
+ mNativeSurface->setDequeueTimeout(4000_ms);
} else {
mNativeSurface = nullptr;
}
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index 41cb8fdc66bd59f4d26d794472a92205a6f0c002..71c5b53f727a451b882d5e8631a2960054770e93 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -156,7 +156,9 @@ void RenderThread::initializeDisplayEventReceiver() {
LOG_ALWAYS_FATAL_IF(mVsyncSource, "Initializing a second DisplayEventReceiver?");
if (!Properties::isolatedProcess) {
- auto receiver = std::make_unique();
+ auto receiver = std::make_unique(
+ ISurfaceComposer::eVsyncSourceApp,
+ ISurfaceComposer::eConfigChangedDispatch);
status_t status = receiver->initCheck();
LOG_ALWAYS_FATAL_IF(status != NO_ERROR,
"Initialization of DisplayEventReceiver "
diff --git a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
index 78239714ca3ba9f31a5dcd1cc8e9719a63b4702b..b6a24e41d95837c68c5113cf5a7c50585de9aac5 100644
--- a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
+++ b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
@@ -31,7 +31,9 @@ import com.android.internal.app.IBatteryStats;
import com.android.internal.location.nano.GnssLogsProto.GnssLog;
import com.android.internal.location.nano.GnssLogsProto.PowerMetrics;
+import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Collections;
/**
* GnssMetrics: Is used for logging GNSS metrics
@@ -60,13 +62,20 @@ public class GnssMetrics {
/** Default time between location fixes (in millisecs) */
private static final int DEFAULT_TIME_BETWEEN_FIXES_MILLISECS = 1000;
+ /** The number of hertz in one MHz */
+ private static final double HZ_PER_MHZ = 1e6;
+
/* The time since boot when logging started */
private String logStartInElapsedRealTime;
/* GNSS power metrics */
private GnssPowerMetrics mGnssPowerMetrics;
- /**
+ /** Frequency range of GPS L5, Galileo E5a, QZSS J5 frequency band */
+ private static final double L5_CARRIER_FREQ_RANGE_LOW_HZ = 1164 * HZ_PER_MHZ;
+ private static final double L5_CARRIER_FREQ_RANGE_HIGH_HZ = 1189 * HZ_PER_MHZ;
+
+ /**
* A boolean array indicating whether the constellation types have been used in fix.
*/
private boolean[] mConstellationTypes;
@@ -78,6 +87,11 @@ public class GnssMetrics {
timeToFirstFixSecStatistics = new Statistics();
positionAccuracyMeterStatistics = new Statistics();
topFourAverageCn0Statistics = new Statistics();
+ mTopFourAverageCn0StatisticsL5 = new Statistics();
+ mNumSvStatus = 0;
+ mNumL5SvStatus = 0;
+ mNumSvStatusUsedInFix = 0;
+ mNumL5SvStatusUsedInFix = 0;
reset();
}
@@ -133,11 +147,16 @@ public class GnssMetrics {
return;
}
- /*
+ /**
* Logs CN0 when at least 4 SVs are available
*
+ * @param cn0s
+ * @param numSv
+ * @param svCarrierFreqs
*/
- public void logCn0(float[] cn0s, int numSv) {
+ public void logCn0(float[] cn0s, int numSv, float[] svCarrierFreqs) {
+ // Calculate L5 Cn0
+ logCn0L5(numSv, cn0s, svCarrierFreqs);
if (numSv == 0 || cn0s == null || cn0s.length == 0 || cn0s.length < numSv) {
if (numSv == 0) {
mGnssPowerMetrics.reportSignalQuality(null, 0);
@@ -161,6 +180,76 @@ public class GnssMetrics {
return;
}
+ /* Helper function to check if a SV is L5 */
+ private static boolean isL5Sv(float carrierFreq) {
+ return (carrierFreq >= L5_CARRIER_FREQ_RANGE_LOW_HZ
+ && carrierFreq <= L5_CARRIER_FREQ_RANGE_HIGH_HZ);
+ }
+
+ /**
+ * Logs sv status data
+ *
+ * @param svCount
+ * @param svidWithFlags
+ * @param svCarrierFreqs
+ */
+ public void logSvStatus(int svCount, int[] svidWithFlags, float[] svCarrierFreqs) {
+ boolean isL5 = false;
+ // Calculate SvStatus Information
+ for (int i = 0; i < svCount; i++) {
+ if ((svidWithFlags[i] & GnssStatus.GNSS_SV_FLAGS_HAS_CARRIER_FREQUENCY) != 0) {
+ mNumSvStatus++;
+ isL5 = isL5Sv(svCarrierFreqs[i]);
+ if (isL5) {
+ mNumL5SvStatus++;
+ }
+ if ((svidWithFlags[i] & GnssStatus.GNSS_SV_FLAGS_USED_IN_FIX) != 0) {
+ mNumSvStatusUsedInFix++;
+ if (isL5) {
+ mNumL5SvStatusUsedInFix++;
+ }
+ }
+ }
+ }
+ return;
+ }
+
+ /**
+ * Logs CN0 when at least 4 SVs are available L5 Only
+ *
+ * @param svCount
+ * @param cn0s
+ * @param svCarrierFreqs
+ */
+ private void logCn0L5(int svCount, float[] cn0s, float[] svCarrierFreqs) {
+ if (svCount == 0 || cn0s == null || cn0s.length == 0 || cn0s.length < svCount
+ || svCarrierFreqs == null || svCarrierFreqs.length == 0
+ || svCarrierFreqs.length < svCount) {
+ return;
+ }
+ // Create array list of all L5 satellites in report.
+ ArrayList CnoL5Array = new ArrayList();
+ for (int i = 0; i < svCount; i++) {
+ if (isL5Sv(svCarrierFreqs[i])) {
+ CnoL5Array.add(cn0s[i]);
+ }
+ }
+ if (CnoL5Array.size() == 0 || CnoL5Array.size() < 4) {
+ return;
+ }
+ int numSvL5 = CnoL5Array.size();
+ Collections.sort(CnoL5Array);
+ if (CnoL5Array.get(numSvL5 - 4) > 0.0) {
+ double top4AvgCn0 = 0.0;
+ for (int i = numSvL5 - 4; i < numSvL5; i++) {
+ top4AvgCn0 += (double) CnoL5Array.get(i);
+ }
+ top4AvgCn0 /= 4;
+ mTopFourAverageCn0StatisticsL5.addItem(top4AvgCn0);
+ }
+ return;
+ }
+
/**
* Logs that a constellation type has been observed.
@@ -201,6 +290,24 @@ public class GnssMetrics {
msg.standardDeviationTopFourAverageCn0DbHz
= topFourAverageCn0Statistics.getStandardDeviation();
}
+ if (mNumSvStatus > 0) {
+ msg.numSvStatusProcessed = mNumSvStatus;
+ }
+ if (mNumL5SvStatus > 0) {
+ msg.numL5SvStatusProcessed = mNumL5SvStatus;
+ }
+ if (mNumSvStatusUsedInFix > 0) {
+ msg.numSvStatusUsedInFix = mNumSvStatusUsedInFix;
+ }
+ if (mNumL5SvStatusUsedInFix > 0) {
+ msg.numL5SvStatusUsedInFix = mNumL5SvStatusUsedInFix;
+ }
+ if (mTopFourAverageCn0StatisticsL5.getCount() > 0) {
+ msg.numL5TopFourAverageCn0Processed = mTopFourAverageCn0StatisticsL5.getCount();
+ msg.meanL5TopFourAverageCn0DbHz = mTopFourAverageCn0StatisticsL5.getMean();
+ msg.standardDeviationL5TopFourAverageCn0DbHz =
+ mTopFourAverageCn0StatisticsL5.getStandardDeviation();
+ }
msg.powerMetrics = mGnssPowerMetrics.buildProto();
msg.hardwareRevision = SystemProperties.get("ro.boot.revision", "");
String s = Base64.encodeToString(GnssLog.toByteArray(msg), Base64.DEFAULT);
@@ -248,6 +355,22 @@ public class GnssMetrics {
topFourAverageCn0Statistics.getMean()).append("\n");
s.append(" Top 4 Avg CN0 standard deviation (dB-Hz): ").append(
topFourAverageCn0Statistics.getStandardDeviation()).append("\n");
+ }
+ s.append(" Total number of sv status messages processed: ").append(
+ mNumSvStatus).append("\n");
+ s.append(" Total number of L5 sv status messages processed: ").append(
+ mNumL5SvStatus).append("\n");
+ s.append(" Total number of sv status messages processed, where sv is used in fix: ").append(
+ mNumSvStatusUsedInFix).append("\n");
+ s.append(" Total number of L5 sv status messages processed, where sv is used in fix: ").append(
+ mNumL5SvStatusUsedInFix).append("\n");
+ s.append(" Number of L5 CN0 reports: ").append(
+ mTopFourAverageCn0StatisticsL5.getCount()).append("\n");
+ if (mTopFourAverageCn0StatisticsL5.getCount() > 0) {
+ s.append(" L5 Top 4 Avg CN0 mean (dB-Hz): ").append(
+ mTopFourAverageCn0StatisticsL5.getMean()).append("\n");
+ s.append(" L5 Top 4 Avg CN0 standard deviation (dB-Hz): ").append(
+ mTopFourAverageCn0StatisticsL5.getStandardDeviation()).append("\n");
}
s.append(" Used-in-fix constellation types: ");
for (int i = 0; i < mConstellationTypes.length; i++) {
@@ -333,6 +456,21 @@ public class GnssMetrics {
/** Top 4 average CN0 statistics */
private Statistics topFourAverageCn0Statistics;
+ /** Top 4 average CN0 statistics L5 */
+ private Statistics mTopFourAverageCn0StatisticsL5;
+
+ /** Total number of sv status messages processed */
+ private int mNumSvStatus;
+
+ /** Total number of L5 sv status messages processed */
+ private int mNumL5SvStatus;
+
+ /** Total number of sv status messages processed, where sv is used in fix */
+ private int mNumSvStatusUsedInFix;
+
+ /** Total number of L5 sv status messages processed, where sv is used in fix */
+ private int mNumL5SvStatusUsedInFix;
+
/**
* Resets GNSS metrics
*/
@@ -344,6 +482,11 @@ public class GnssMetrics {
timeToFirstFixSecStatistics.reset();
positionAccuracyMeterStatistics.reset();
topFourAverageCn0Statistics.reset();
+ mTopFourAverageCn0StatisticsL5.reset();
+ mNumSvStatus = 0;
+ mNumL5SvStatus = 0;
+ mNumSvStatusUsedInFix = 0;
+ mNumL5SvStatusUsedInFix = 0;
resetConstellationTypes();
return;
}
diff --git a/media/java/android/media/AudioTrack.java b/media/java/android/media/AudioTrack.java
index e29e5698439df8982a9629c4a4983e5a305ff6b9..7cd09de413464955c41cd5dfd983ea24947c4ade 100644
--- a/media/java/android/media/AudioTrack.java
+++ b/media/java/android/media/AudioTrack.java
@@ -1184,8 +1184,15 @@ public class AudioTrack extends PlayerBase
int bufferSizeInBytes, int mode) {
// If no attributes, OK
// otherwise check attributes for USAGE_MEDIA and CONTENT_UNKNOWN, MUSIC, or MOVIE.
+ // Only consider flags that are not compatible with FLAG_DEEP_BUFFER. We include
+ // FLAG_DEEP_BUFFER because if set the request is explicit and
+ // shouldEnablePowerSaving() should return false.
+ final int flags = attributes.getAllFlags()
+ & (AudioAttributes.FLAG_DEEP_BUFFER | AudioAttributes.FLAG_LOW_LATENCY
+ | AudioAttributes.FLAG_HW_AV_SYNC | AudioAttributes.FLAG_BEACON);
+
if (attributes != null &&
- (attributes.getAllFlags() != 0 // cannot have any special flags
+ (flags != 0 // cannot have any special flags
|| attributes.getUsage() != AudioAttributes.USAGE_MEDIA
|| (attributes.getContentType() != AudioAttributes.CONTENT_TYPE_UNKNOWN
&& attributes.getContentType() != AudioAttributes.CONTENT_TYPE_MUSIC
diff --git a/media/jni/android_media_ImageWriter.cpp b/media/jni/android_media_ImageWriter.cpp
index cfcba76d3af298ae80b98573517f133fc6c1376d..7a0eeee17b0d286ec23bfd0c321f6e74ffb51903 100644
--- a/media/jni/android_media_ImageWriter.cpp
+++ b/media/jni/android_media_ImageWriter.cpp
@@ -26,6 +26,7 @@
#include
#include
+#include
#include
#include
#include
@@ -126,7 +127,7 @@ private:
Condition mCondition;
std::deque> mQueue;
- static const nsecs_t kWaitDuration = 20000000; // 20 ms
+ static const nsecs_t kWaitDuration = 500000000; // 500 ms
};
sp mThread;
@@ -401,8 +402,28 @@ static jlong ImageWriter_init(JNIEnv* env, jobject thiz, jobject weakThiz, jobje
return 0;
}
} else {
+ // Set consumer buffer format to user specified format
+ PublicFormat publicFormat = static_cast(userFormat);
+ int nativeFormat = mapPublicFormatToHalFormat(publicFormat);
+ android_dataspace nativeDataspace = mapPublicFormatToHalDataspace(publicFormat);
+ res = native_window_set_buffers_format(anw.get(), nativeFormat);
+ if (res != OK) {
+ ALOGE("%s: Unable to configure consumer native buffer format to %#x",
+ __FUNCTION__, nativeFormat);
+ jniThrowRuntimeException(env, "Failed to set Surface format");
+ return 0;
+ }
+
+ res = native_window_set_buffers_data_space(anw.get(), nativeDataspace);
+ if (res != OK) {
+ ALOGE("%s: Unable to configure consumer dataspace %#x",
+ __FUNCTION__, nativeDataspace);
+ jniThrowRuntimeException(env, "Failed to set Surface dataspace");
+ return 0;
+ }
surfaceFormat = userFormat;
}
+
ctx->setBufferFormat(surfaceFormat);
env->SetIntField(thiz,
gImageWriterClassInfo.mWriterFormat, reinterpret_cast(surfaceFormat));
diff --git a/media/jni/soundpool/SoundPool.cpp b/media/jni/soundpool/SoundPool.cpp
index e08dab48ce3938799dcaa7721d943de1f5facc05..2a4a68dd4c674c0892a1eb6279f43c5ceb2fdfc9 100644
--- a/media/jni/soundpool/SoundPool.cpp
+++ b/media/jni/soundpool/SoundPool.cpp
@@ -17,7 +17,9 @@
//#define LOG_NDEBUG 0
#define LOG_TAG "SoundPool"
+#include
#include
+#include
#include
@@ -950,6 +952,8 @@ void SoundChannel::process(int event, void *info, unsigned long toggle)
ALOGV("process %p channel %d event %s",
this, mChannelID, (event == AudioTrack::EVENT_UNDERRUN) ? "UNDERRUN" :
"BUFFER_END");
+ // Only BUFFER_END should happen as we use static tracks.
+ setVolume_l(0.f, 0.f); // set volume to 0 to indicate no need to ramp volume down.
mSoundPool->addToStopList(this);
} else if (event == AudioTrack::EVENT_LOOP_END) {
ALOGV("End loop %p channel %d", this, mChannelID);
@@ -965,8 +969,18 @@ void SoundChannel::process(int event, void *info, unsigned long toggle)
bool SoundChannel::doStop_l()
{
if (mState != IDLE) {
- setVolume_l(0, 0);
ALOGV("stop");
+ if (mLeftVolume != 0.f || mRightVolume != 0.f) {
+ setVolume_l(0.f, 0.f);
+ if (mSoundPool->attributes()->usage != AUDIO_USAGE_GAME) {
+ // Since we're forcibly halting the previously playing content,
+ // we sleep here to ensure the volume is ramped down before we stop the track.
+ // Ideally the sleep time is the mixer period, or an approximation thereof
+ // (Fast vs Normal tracks are different).
+ ALOGV("sleeping: ChannelID:%d SampleID:%d", mChannelID, mSample->sampleID());
+ std::this_thread::sleep_for(std::chrono::milliseconds(20));
+ }
+ }
mAudioTrack->stop();
mPrevSampleID = mSample->sampleID();
mSample.clear();
diff --git a/packages/BackupRestoreConfirmation/res/values-in/strings.xml b/packages/BackupRestoreConfirmation/res/values-in/strings.xml
index 63a3772d863d25c11a212f801c93db20095ce555..5c82adff83faf24e1c878371cfa831357e042556 100644
--- a/packages/BackupRestoreConfirmation/res/values-in/strings.xml
+++ b/packages/BackupRestoreConfirmation/res/values-in/strings.xml
@@ -16,9 +16,9 @@
- "Backup sepenuhnya"
+ "Pencadangan lengkap""Pemulihan sepenuhnya"
- "Backup lengkap semua data ke komputer yang tersambung telah diminta. Apakah Anda ingin mengizinkan hal ini dilakukan?\n\nJika Anda tidak meminta backup ini, jangan izinkan operasi dilanjutkan."
+ "Pencadangan semua data ke komputer yang tersambung telah diminta. Apakah Anda ingin mengizinkan hal ini dilakukan?\n\nJika Anda tidak meminta pencadangan ini, jangan izinkan operasi dilanjutkan.""Cadangkan data saya""Jangan mencadangkan""Pemulihan lengkap semua data dari komputer desktop yang tersambung telah diminta. Apakah Anda ingin mengizinkan hal ini?\n\nJika Anda tidak meminta pemulihan ini, jangan izinkan operasi dilanjutkan. Operasi ini akan mengganti data apa pun yang saat ini ada dalam perangkat!"
@@ -31,8 +31,8 @@
"Jika Anda ingin mengenkripsi data cadangan lengkap, masukkan sandi di bawah:""Karena perangkat Anda dienkripsi, Anda perlu mengenkripsi cadangan. Masukkan sandi di bawah:""Jika data pemulihan dienkripsi, masukkan sandi di bawah:"
- "Backup dimulai..."
- "Backup selesai"
+ "Pencadangan dimulai..."
+ "Pencadangan selesai""Pemulihan dimulai...""Pemulihan berakhir""Waktu tunggu operasi habis"
diff --git a/packages/CaptivePortalLogin/res/values-bs/strings.xml b/packages/CaptivePortalLogin/res/values-bs/strings.xml
new file mode 100644
index 0000000000000000000000000000000000000000..60c153a06471b6ee20675781c0ae9bf75e86bebb
--- /dev/null
+++ b/packages/CaptivePortalLogin/res/values-bs/strings.xml
@@ -0,0 +1,24 @@
+
+
+ "Prijava na zaštitnom portalu"
+ "Koristi ovu mrežu kakva jeste"
+ "Ne koristi ovu mrežu"
+ "Prijava na mrežu"
+ "Prijava na %1$s"
+ "Mreža kojoj pokušavate pristupiti ima sigurnosnih problema."
+ "Naprimjer, stranica za prijavu možda ne pripada prikazanoj organizaciji."
+ "Ipak nastavi preko preglednika"
+ "Ova potvrda ne potiče iz pouzdanog izvora."
+ "Naziv web lokacije se ne podudara s nazivom na potvrdi."
+ "Ova potvrda je istekla."
+ "Ova potvrda još uvijek nije važeća."
+ "Ova potvrda sadrži nevažeći datum."
+ "Ova potvrda je nevažeća."
+ "Nepoznata greška potvrde."
+ "Sigurnosno upozorenje"
+ "Prikaži potvrdu"
+ "UREDU"
+ "Adresa:"
+ "Informacije o stranici"
+
diff --git a/packages/CarSystemUI/Android.bp b/packages/CarSystemUI/Android.bp
index 589623b0d6cd89381986f350b7520c81f9e500d0..672879ae6e9d492c688ab69e467ca848cd436271 100644
--- a/packages/CarSystemUI/Android.bp
+++ b/packages/CarSystemUI/Android.bp
@@ -13,21 +13,22 @@
// See the License for the specific language governing permissions and
// limitations under the License.
//
-android_app {
- name: "CarSystemUI",
-
- overrides: [
- "SystemUI",
- ],
+android_library {
+ name: "CarSystemUI-core",
srcs: [
"src/**/*.java",
"src/**/I*.aidl",
],
+ resource_dirs: [
+ "res-keyguard",
+ "res",
+ ],
+
static_libs: [
- "CarNotificationLib",
"SystemUI-core",
+ "CarNotificationLib",
"SystemUIPluginLib",
"SystemUISharedLib",
"SettingsLib",
@@ -47,6 +48,8 @@ android_app {
"androidx.lifecycle_lifecycle-extensions",
"SystemUI-tags",
"SystemUI-proto",
+ "dagger2-2.19",
+ "//external/kotlinc:kotlin-annotations",
],
libs: [
@@ -56,6 +59,28 @@ android_app {
manifest: "AndroidManifest.xml",
+ plugins: ["dagger2-compiler-2.19"],
+
+}
+
+android_app {
+ name: "CarSystemUI",
+
+ static_libs: [
+ "CarSystemUI-core",
+ ],
+
+ libs: [
+ "telephony-common",
+ "android.car",
+ ],
+
+ resource_dirs: [],
+
+ overrides: [
+ "SystemUI",
+ ],
+
platform_apis: true,
product_specific: true,
certificate: "platform",
@@ -66,12 +91,6 @@ android_app {
"proguard.flags",
],
},
- resource_dirs: [
- "res-keyguard",
- "res",
- ],
-
-
dxflags: ["--multi-dex"],
aaptflags: [
@@ -79,6 +98,8 @@ android_app {
"com.android.keyguard",
],
+ kotlincflags: ["-Xjvm-default=enable"],
+
plugins: ["dagger2-compiler-2.19"],
required: ["privapp_whitelist_com.android.systemui"],
diff --git a/packages/CarSystemUI/AndroidManifest.xml b/packages/CarSystemUI/AndroidManifest.xml
index 195d4fee5162713e4884436185ad2d0a67f428b2..261b9f508ccd665a2dde2bd3f3ab09f927a02bb4 100644
--- a/packages/CarSystemUI/AndroidManifest.xml
+++ b/packages/CarSystemUI/AndroidManifest.xml
@@ -21,4 +21,8 @@
coreApp="true">
+
+
+
+
diff --git a/packages/SystemUI/res/layout/left_docked_overlay.xml b/packages/CarSystemUI/res/drawable/unlock_dialog_background.xml
similarity index 58%
rename from packages/SystemUI/res/layout/left_docked_overlay.xml
rename to packages/CarSystemUI/res/drawable/unlock_dialog_background.xml
index 430143ca3bc285ccd2d622dc3426dddfc6c604ad..bec6ba7b7c4fcf39cda5232e89278f1d66ef84ff 100644
--- a/packages/SystemUI/res/layout/left_docked_overlay.xml
+++ b/packages/CarSystemUI/res/drawable/unlock_dialog_background.xml
@@ -12,8 +12,15 @@
~ distributed under the License is distributed on an "AS IS" BASIS,
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
~ See the License for the specific language governing permissions and
- ~ limitations under the License.
+ ~ limitations under the License
-->
-
-
-
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/CarSystemUI/res/layout/super_status_bar.xml b/packages/CarSystemUI/res/layout/super_status_bar.xml
index 728a239a4ca940a073e1ad286e416ca5431b770f..e1bcc2e5f86c28ff5d19d873b289991c05cd9a8d 100644
--- a/packages/CarSystemUI/res/layout/super_status_bar.xml
+++ b/packages/CarSystemUI/res/layout/super_status_bar.xml
@@ -41,6 +41,14 @@
android:visibility="invisible"/>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/CarSystemUI/res/values/colors.xml b/packages/CarSystemUI/res/values/colors.xml
index e13c94052281d2c74012bc79fa5b96fdd42f5a29..b818962835708acd8dab8fc34b5871e9f1e47c79 100644
--- a/packages/CarSystemUI/res/values/colors.xml
+++ b/packages/CarSystemUI/res/values/colors.xml
@@ -32,7 +32,7 @@
#ff172026#33000000
- @android:color/transparent
+ @color/status_bar_background_color#DD000000
diff --git a/packages/CarSystemUI/res/values/colors_car.xml b/packages/CarSystemUI/res/values/colors_car.xml
index 69ab3f3cf957d972886daeba7ac1403402d0c594..0a3f7aa92d8460e9bae208f4d069e0426a2ee5fb 100644
--- a/packages/CarSystemUI/res/values/colors_car.xml
+++ b/packages/CarSystemUI/res/values/colors_car.xml
@@ -26,4 +26,9 @@
@*android:color/car_dark_blue_grey_600@*android:color/car_body1_light
+
+ #ff282a2d
+ @*android:color/car_grey_400
+ #ff66b5ff
+
diff --git a/packages/CarSystemUI/res/values/dimens_car.xml b/packages/CarSystemUI/res/values/dimens_car.xml
index 42a764959545a3d019b975b70b26ad0ffec4a8e9..9cb09c942781ff775627a14581b9b463545b3ab2 100644
--- a/packages/CarSystemUI/res/values/dimens_car.xml
+++ b/packages/CarSystemUI/res/values/dimens_car.xml
@@ -43,4 +43,10 @@
-420dp
+
+ 500dp
+ 16dp
+ 100dp
+ 140dp
+
diff --git a/packages/CarSystemUI/res/values/integers_car.xml b/packages/CarSystemUI/res/values/integers_car.xml
index be2cb0d8d90069bcf026d3bc21777d1a0afd46b0..fb67b302a4ae326be4b793dbb2e7949e0cbf0187 100644
--- a/packages/CarSystemUI/res/values/integers_car.xml
+++ b/packages/CarSystemUI/res/values/integers_car.xml
@@ -31,5 +31,7 @@
80
+
+ 0
diff --git a/packages/CarSystemUI/res/values/strings_car.xml b/packages/CarSystemUI/res/values/strings_car.xml
index 83e91c57ccc372cadfebfcee02e9e5e694abc6f7..717692e2f02f46b9341248b8fbed82de07838e89 100644
--- a/packages/CarSystemUI/res/values/strings_car.xml
+++ b/packages/CarSystemUI/res/values/strings_car.xml
@@ -29,4 +29,19 @@
When you add a new user, that person needs to set up their space.Any user can update apps for all other users.
+
+ Waiting\u2026
+
+ Looking for trusted device\u2026
+
+
+ Enter PIN instead
+
+ Enter Pattern instead
+
+ Enter Password instead
+
+ Default Name
+
+ Unlock Dialogue
diff --git a/packages/CarSystemUI/res/values/styles.xml b/packages/CarSystemUI/res/values/styles.xml
index 371bebdebc86a35da022bc1e2e04258dfa7c7682..a9423bf6f2602f2d1c0549fde462e8b723c55a73 100644
--- a/packages/CarSystemUI/res/values/styles.xml
+++ b/packages/CarSystemUI/res/values/styles.xml
@@ -46,4 +46,12 @@
96dp@drawable/nav_button_background
+
+
\ No newline at end of file
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
index 3b278b40acea3a9ffadc1f6914b317caf9c38ad5..c7654e81e0b17ed2f7138974ec12a650a38db2d7 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIFactory.java
@@ -20,12 +20,8 @@ import android.content.Context;
import com.android.internal.widget.LockPatternUtils;
import com.android.keyguard.ViewMediatorCallback;
-import com.android.systemui.car.CarNotificationEntryManager;
-import com.android.systemui.car.CarNotificationInterruptionStateProvider;
import com.android.systemui.statusbar.car.CarFacetButtonController;
import com.android.systemui.statusbar.car.CarStatusBarKeyguardViewManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
-import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager;
import com.android.systemui.volume.CarVolumeDialogComponent;
import com.android.systemui.volume.VolumeDialogComponent;
@@ -33,8 +29,6 @@ import com.android.systemui.volume.VolumeDialogComponent;
import javax.inject.Singleton;
import dagger.Component;
-import dagger.Module;
-import dagger.Provides;
/**
* Class factory to provide car specific SystemUI components.
@@ -44,11 +38,14 @@ public class CarSystemUIFactory extends SystemUIFactory {
private CarDependencyComponent mCarDependencyComponent;
@Override
- protected void init(Context context) {
- super.init(context);
+ protected SystemUIRootComponent buildSystemUIRootComponent(Context context) {
mCarDependencyComponent = DaggerCarSystemUIFactory_CarDependencyComponent.builder()
.contextHolder(new ContextHolder(context))
.build();
+ return DaggerCarSystemUIRootComponent.builder()
+ .dependencyProvider(new com.android.systemui.DependencyProvider())
+ .contextHolder(new ContextHolder(context))
+ .build();
}
public CarDependencyComponent getCarDependencyComponent() {
@@ -64,42 +61,9 @@ public class CarSystemUIFactory extends SystemUIFactory {
return new CarVolumeDialogComponent(systemUi, context);
}
- @Override
- public NotificationInterruptionStateProvider provideNotificationInterruptionStateProvider(
- Context context) {
- return new CarNotificationInterruptionStateProvider(context);
- }
-
- @Override
- public boolean provideAllowNotificationLongPress() {
- return false;
- }
-
- @Module
- protected static class ContextHolder {
- private Context mContext;
-
- public ContextHolder(Context context) {
- mContext = context;
- }
-
- @Provides
- public Context provideContext() {
- return mContext;
- }
- }
-
@Singleton
@Component(modules = ContextHolder.class)
public interface CarDependencyComponent {
CarFacetButtonController getCarFacetButtonController();
}
-
- /**
- * Use {@link CarNotificationEntryManager}, which does nothing when adding a notification.
- */
- @Singleton
- public NotificationEntryManager provideNotificationEntryManager(Context context) {
- return new CarNotificationEntryManager(context);
- }
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
new file mode 100644
index 0000000000000000000000000000000000000000..9a063aa7b791e3b44c52a1a6bdfd4befa52188de
--- /dev/null
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui;
+
+import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
+import static com.android.systemui.Dependency.LEAK_REPORT_EMAIL_NAME;
+
+import android.content.Context;
+
+import com.android.systemui.car.CarNotificationEntryManager;
+import com.android.systemui.car.CarNotificationInterruptionStateProvider;
+import com.android.systemui.dock.DockManager;
+import com.android.systemui.dock.DockManagerImpl;
+import com.android.systemui.power.EnhancedEstimates;
+import com.android.systemui.power.EnhancedEstimatesImpl;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationLockscreenUserManagerImpl;
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotificationData;
+import com.android.systemui.statusbar.phone.KeyguardEnvironmentImpl;
+import com.android.systemui.statusbar.phone.ShadeController;
+import com.android.systemui.statusbar.phone.StatusBar;
+
+import javax.inject.Named;
+import javax.inject.Singleton;
+
+import dagger.Binds;
+import dagger.Module;
+import dagger.Provides;
+
+@Module
+abstract class CarSystemUIModule {
+
+ @Binds
+ abstract NotificationInterruptionStateProvider bindNotificationInterruptionStateProvider(
+ CarNotificationInterruptionStateProvider notificationInterruptionStateProvider);
+
+ @Singleton
+ @Provides
+ @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME)
+ static boolean provideAllowNotificationLongPress() {
+ return false;
+ }
+
+ /**
+ * Use {@link CarNotificationEntryManager}, which does nothing when adding a notification.
+ */
+ @Binds
+ abstract NotificationEntryManager bindNotificationEntryManager(
+ CarNotificationEntryManager notificationEntryManager);
+
+ @Singleton
+ @Provides
+ @Named(LEAK_REPORT_EMAIL_NAME)
+ static String provideLeakReportEmail() {
+ return "buganizer-system+181579@google.com";
+ }
+
+ @Binds
+ abstract EnhancedEstimates bindEnhancedEstimates(EnhancedEstimatesImpl enhancedEstimates);
+
+ @Binds
+ abstract NotificationLockscreenUserManager bindNotificationLockscreenUserManager(
+ NotificationLockscreenUserManagerImpl notificationLockscreenUserManager);
+
+ @Binds
+ abstract DockManager bindDockManager(DockManagerImpl dockManager);
+
+ @Binds
+ abstract NotificationData.KeyguardEnvironment bindKeyguardEnvironment(
+ KeyguardEnvironmentImpl keyguardEnvironment);
+
+ @Singleton
+ @Provides
+ static ShadeController provideShadeController(Context context) {
+ return SysUiServiceProvider.getComponent(context, StatusBar.class);
+ }
+
+ @Binds
+ abstract SystemUIRootComponent bindSystemUIRootComponent(
+ CarSystemUIRootComponent systemUIRootComponent);
+}
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java
new file mode 100644
index 0000000000000000000000000000000000000000..d6b766b809395e50c5dc040f877a531bd5439586
--- /dev/null
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIRootComponent.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui;
+
+import javax.inject.Singleton;
+
+import dagger.Component;
+
+@Singleton
+@Component(
+ modules = {
+ DependencyProvider.class,
+ DependencyBinder.class,
+ ServiceBinder.class,
+ SystemUIFactory.ContextHolder.class,
+ SystemUIModule.class,
+ CarSystemUIModule.class
+ })
+interface CarSystemUIRootComponent extends SystemUIRootComponent {
+
+}
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java
index 6d9c7bafb2b2529611adafe12d5e9850bbd43d5c..a107dd7935510545c46db9ddaa6a81c6456b8dd7 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java
@@ -21,13 +21,19 @@ import android.service.notification.StatusBarNotification;
import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/**
* Car specific notification entry manager that does nothing when adding a notification.
*
*
This is because system UI notifications are disabled and we have a different implementation.
* Please see {@link com.android.car.notification}.
*/
+@Singleton
public class CarNotificationEntryManager extends NotificationEntryManager {
+
+ @Inject
public CarNotificationEntryManager(Context context) {
super(context);
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java
index 6d960d7b9e218603b62139c5fa4aca45b5b815c5..afd722ba00914701960eb80691593c24f3a86252 100644
--- a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java
+++ b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationInterruptionStateProvider.java
@@ -18,14 +18,24 @@ package com.android.systemui.car;
import android.content.Context;
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.notification.NotificationFilter;
import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
/** Auto-specific implementation of {@link NotificationInterruptionStateProvider}. */
+@Singleton
public class CarNotificationInterruptionStateProvider extends
NotificationInterruptionStateProvider {
- public CarNotificationInterruptionStateProvider(Context context) {
- super(context);
+
+ @Inject
+ public CarNotificationInterruptionStateProvider(Context context,
+ NotificationFilter filter,
+ StatusBarStateController stateController) {
+ super(context, filter, stateController);
}
@Override
diff --git a/packages/CarSystemUI/src/com/android/systemui/qs/car/CarQSFragment.java b/packages/CarSystemUI/src/com/android/systemui/qs/car/CarQSFragment.java
index 769fc52a574cff17c6fcb7e96fcec50688e01584..f9cfafa5c47129d8c6cf4654633756702f1c3b70 100644
--- a/packages/CarSystemUI/src/com/android/systemui/qs/car/CarQSFragment.java
+++ b/packages/CarSystemUI/src/com/android/systemui/qs/car/CarQSFragment.java
@@ -170,11 +170,6 @@ public class CarQSFragment extends Fragment implements QS {
// No detail panel to close.
}
- @Override
- public void setKeyguardShowing(boolean keyguardShowing) {
- // No keyguard to show.
- }
-
@Override
public void animateHeaderSlidingIn(long delay) {
// No header to animate.
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index 2874ce60bf16890e1e362019706198e97d2e24df..25191f6a9617d52bdfafe3fa8ed281610045198b 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -26,11 +26,15 @@ import android.car.Car;
import android.car.drivingstate.CarDrivingStateEvent;
import android.car.drivingstate.CarUxRestrictionsManager;
import android.car.hardware.power.CarPowerManager.CarPowerStateListener;
+import android.car.trust.CarTrustAgentEnrollmentManager;
import android.content.Context;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.inputmethodservice.InputMethodService;
+import android.os.IBinder;
import android.util.Log;
+import android.view.Display;
import android.view.GestureDetector;
import android.view.Gravity;
import android.view.MotionEvent;
@@ -61,9 +65,9 @@ import com.android.systemui.Prefs;
import com.android.systemui.R;
import com.android.systemui.SystemUIFactory;
import com.android.systemui.classifier.FalsingLog;
-import com.android.systemui.classifier.FalsingManagerFactory;
import com.android.systemui.fragments.FragmentHostManager;
import com.android.systemui.keyguard.ScreenLifecycle;
+import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.plugins.qs.QS;
import com.android.systemui.qs.car.CarQSFragment;
import com.android.systemui.shared.system.ActivityManagerWrapper;
@@ -85,8 +89,7 @@ import java.util.Map;
/**
* A status bar (and navigation bar) tailored for the automotive use case.
*/
-public class CarStatusBar extends StatusBar implements
- CarBatteryController.BatteryViewHandler {
+public class CarStatusBar extends StatusBar implements CarBatteryController.BatteryViewHandler {
private static final String TAG = "CarStatusBar";
// used to calculate how fast to open or close the window
private static final float DEFAULT_FLING_VELOCITY = 0;
@@ -167,6 +170,9 @@ public class CarStatusBar extends StatusBar implements
private boolean mIsSwipingVerticallyToClose;
// Whether heads-up notifications should be shown when shade is open.
private boolean mEnableHeadsUpNotificationWhenNotificationShadeOpen;
+ // If the nav bar should be hidden when the soft keyboard is visible.
+ private boolean mHideNavBarForKeyboard;
+ private boolean mBottomNavBarVisible;
private final CarPowerStateListener mCarPowerStateListener =
(int state) -> {
@@ -188,6 +194,17 @@ public class CarStatusBar extends StatusBar implements
// builds the nav bar
mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
mDeviceIsProvisioned = mDeviceProvisionedController.isDeviceProvisioned();
+
+ // Keyboard related setup, before nav bars are created.
+ mHideNavBarForKeyboard = mContext.getResources().getBoolean(
+ com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard);
+ mBottomNavBarVisible = false;
+
+ // Need to initialize screen lifecycle before calling super.start - before switcher is
+ // created.
+ mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
+ mScreenLifecycle.addObserver(mScreenObserver);
+
super.start();
mTaskStackListener = new TaskStackListenerImpl();
mActivityManagerWrapper = ActivityManagerWrapper.getInstance();
@@ -234,9 +251,6 @@ public class CarStatusBar extends StatusBar implements
mPowerManagerHelper.connectToCarService();
mSwitchToGuestTimer = new SwitchToGuestTimer(mContext);
-
- mScreenLifecycle = Dependency.get(ScreenLifecycle.class);
- mScreenLifecycle.addObserver(mScreenObserver);
}
/**
@@ -718,6 +732,13 @@ public class CarStatusBar extends StatusBar implements
buildNavBarContent();
attachNavBarWindows();
+ // Try setting up the initial state of the nav bar if applicable.
+ if (result != null) {
+ setImeWindowStatus(Display.DEFAULT_DISPLAY, result.mImeToken,
+ result.mImeWindowVis, result.mImeBackDisposition,
+ result.mShowImeSwitcher);
+ }
+
// There has been a car customized nav bar on the default display, so just create nav bars
// on external displays.
mNavigationBarController.createNavigationBars(false /* includeDefaultDisplay */, result);
@@ -756,22 +777,33 @@ public class CarStatusBar extends StatusBar implements
}
- private void attachNavBarWindows() {
+ /**
+ * We register for soft keyboard visibility events such that we can hide the navigation bar
+ * giving more screen space to the IME. Note: this is optional and controlled by
+ * {@code com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard}.
+ */
+ @Override
+ public void setImeWindowStatus(int displayId, IBinder token, int vis, int backDisposition,
+ boolean showImeSwitcher) {
+ if (!mHideNavBarForKeyboard) {
+ return;
+ }
- if (mShowBottom) {
- WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
- LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
- WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
- | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
- | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
- | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
- PixelFormat.TRANSLUCENT);
- lp.setTitle("CarNavigationBar");
- lp.windowAnimations = 0;
- mWindowManager.addView(mNavigationBarWindow, lp);
+ if (mContext.getDisplay().getDisplayId() != displayId) {
+ return;
}
+ boolean isKeyboardVisible = (vis & InputMethodService.IME_VISIBLE) != 0;
+ if (!isKeyboardVisible) {
+ attachBottomNavBarWindow();
+ } else {
+ detachBottomNavBarWindow();
+ }
+ }
+
+ private void attachNavBarWindows() {
+ attachBottomNavBarWindow();
+
if (mShowLeft) {
int width = mContext.getResources().getDimensionPixelSize(
R.dimen.car_left_navigation_bar_width);
@@ -806,7 +838,49 @@ public class CarStatusBar extends StatusBar implements
rightlp.gravity = Gravity.RIGHT;
mWindowManager.addView(mRightNavigationBarWindow, rightlp);
}
+ }
+
+ /**
+ * Attaches the bottom nav bar window. Can be extended to modify the specific behavior of
+ * attaching the bottom nav bar.
+ */
+ protected void attachBottomNavBarWindow() {
+ if (!mShowBottom) {
+ return;
+ }
+ if (mBottomNavBarVisible) {
+ return;
+ }
+ mBottomNavBarVisible = true;
+
+ WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
+ LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.TYPE_NAVIGATION_BAR,
+ WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+ | WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
+ | WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH
+ | WindowManager.LayoutParams.FLAG_SPLIT_TOUCH,
+ PixelFormat.TRANSLUCENT);
+ lp.setTitle("CarNavigationBar");
+ lp.windowAnimations = 0;
+ mWindowManager.addView(mNavigationBarWindow, lp);
+ }
+
+ /**
+ * Detaches the bottom nav bar window. Can be extended to modify the specific behavior of
+ * detaching the bottom nav bar.
+ */
+ protected void detachBottomNavBarWindow() {
+ if (!mShowBottom) {
+ return;
+ }
+
+ if (!mBottomNavBarVisible) {
+ return;
+ }
+ mBottomNavBarVisible = false;
+ mWindowManager.removeView(mNavigationBarWindow);
}
private void buildBottomBar(int layout) {
@@ -877,7 +951,7 @@ public class CarStatusBar extends StatusBar implements
KeyguardUpdateMonitor.getInstance(mContext).dump(fd, pw, args);
}
- FalsingManagerFactory.getInstance(mContext).dump(pw);
+ Dependency.get(FalsingManager.class).dump(pw);
FalsingLog.dump(pw);
pw.println("SharedPreferences:");
@@ -956,8 +1030,12 @@ public class CarStatusBar extends StatusBar implements
UserSwitcherController userSwitcherController =
Dependency.get(UserSwitcherController.class);
if (userSwitcherController.useFullscreenUserSwitcher()) {
+ Car car = Car.createCar(mContext);
+ CarTrustAgentEnrollmentManager enrollmentManager = (CarTrustAgentEnrollmentManager) car
+ .getCarManager(Car.CAR_TRUST_AGENT_ENROLLMENT_SERVICE);
mFullscreenUserSwitcher = new FullscreenUserSwitcher(this,
- mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub), mContext);
+ mStatusBarWindow.findViewById(R.id.fullscreen_user_switcher_stub),
+ enrollmentManager, mContext);
} else {
super.createUserSwitcher();
}
@@ -1072,9 +1150,10 @@ public class CarStatusBar extends StatusBar implements
// shade is visible to the user. When the notification shade is completely open then
// alpha value will be 1.
float alpha = (float) height / mNotificationView.getHeight();
- Drawable background = mNotificationView.getBackground();
+ Drawable background = mNotificationView.getBackground().mutate();
background.setAlpha((int) (alpha * 255));
+ mNotificationView.setBackground(background);
}
}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarTrustAgentUnlockDialogHelper.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarTrustAgentUnlockDialogHelper.java
new file mode 100644
index 0000000000000000000000000000000000000000..ec72ee74f59afcbe8fafc6a7596319c07bb778fb
--- /dev/null
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarTrustAgentUnlockDialogHelper.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.statusbar.car;
+
+import android.app.admin.DevicePolicyManager;
+import android.bluetooth.BluetoothAdapter;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.graphics.PixelFormat;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+
+import com.android.internal.widget.LockPatternUtils;
+import com.android.systemui.R;
+
+/**
+ * A helper class displays an unlock dialog and receives broadcast about detecting trusted device
+ * & unlocking state to show the appropriate message on the dialog.
+ */
+class CarTrustAgentUnlockDialogHelper extends BroadcastReceiver{
+ private static final String TAG = CarTrustAgentUnlockDialogHelper.class.getSimpleName();
+
+ private final Context mContext;
+ private final WindowManager mWindowManager;
+ private final UserManager mUserManager;
+ private final WindowManager.LayoutParams mParams;
+ /**
+ * Not using Dialog because context passed from {@link FullscreenUserSwitcher} is not an
+ * activity.
+ */
+ private final View mUnlockDialogLayout;
+ private final TextView mUnlockingText;
+ private final Button mButton;
+ private final IntentFilter mFilter;
+ private int mUid;
+ private boolean mIsDialogShowing;
+ private OnHideListener mOnHideListener;
+
+ CarTrustAgentUnlockDialogHelper(Context context) {
+ mContext = context;
+ mUserManager = mContext.getSystemService(UserManager.class);
+ mWindowManager = mContext.getSystemService(WindowManager.class);
+ mParams = createLayoutParams();
+ mFilter = getIntentFilter();
+
+ mParams.packageName = mContext.getPackageName();
+ mParams.setTitle(mContext.getString(R.string.unlock_dialog_title));
+
+ mUnlockDialogLayout = LayoutInflater.from(mContext).inflate(
+ R.layout.trust_agent_unlock_dialog, null);
+ mUnlockDialogLayout.setLayoutParams(mParams);
+
+ View dialogParent = mUnlockDialogLayout.findViewById(R.id.unlock_dialog_parent);
+ dialogParent.setOnTouchListener((v, event)-> {
+ hideUnlockDialog(/* dismissUserSwitcher= */ false);
+ return true;
+ });
+ View unlockDialog = mUnlockDialogLayout.findViewById(R.id.unlock_dialog);
+ unlockDialog.setOnTouchListener((v, event) -> {
+ // If the person taps inside the unlock dialog, the touch event will be intercepted here
+ // and the dialog will not exit
+ return true;
+ });
+ mUnlockingText = mUnlockDialogLayout.findViewById(R.id.unlocking_text);
+ mButton = mUnlockDialogLayout.findViewById(R.id.enter_pin_button);
+ mButton.setOnClickListener(v -> {
+ hideUnlockDialog(/* dismissUserSwitcher= */true);
+ // TODO(b/138250105) Stop unlock advertising
+ });
+
+ BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+ if (bluetoothAdapter != null
+ && bluetoothAdapter.getLeState() == BluetoothAdapter.STATE_BLE_ON) {
+ mUnlockingText.setText(R.string.unlock_dialog_message_start);
+ }
+ }
+
+ /**
+ * This filter is listening on:
+ * {@link BluetoothAdapter#ACTION_BLE_STATE_CHANGED} for starting unlock advertising;
+ * {@link Intent#ACTION_USER_UNLOCKED} for IHU unlocked
+ */
+ private IntentFilter getIntentFilter() {
+ IntentFilter filter = new IntentFilter();
+ filter.addAction(BluetoothAdapter.ACTION_BLE_STATE_CHANGED);
+ filter.addAction(Intent.ACTION_USER_UNLOCKED);
+ return filter;
+ }
+
+ /**
+ * Show dialog for the given user
+ */
+ void showUnlockDialog(int uid, OnHideListener listener) {
+ showUnlockDialogAfterDelay(uid, 0, listener);
+ }
+
+ /**
+ * Show dialog for the given user after the certain time of delay has elapsed
+ *
+ * @param uid the user to unlock
+ * @param listener listener that listens to dialog hide
+ */
+ void showUnlockDialogAfterDelay(int uid, OnHideListener listener) {
+ long delayMillis = mContext.getResources().getInteger(R.integer.unlock_dialog_delay_ms);
+ showUnlockDialogAfterDelay(uid, delayMillis, listener);
+ }
+
+ /**
+ * Show dialog for the given user after the supplied delay has elapsed
+ */
+ private void showUnlockDialogAfterDelay(int uid, long delayMillis, OnHideListener listener) {
+ setUid(uid);
+ mOnHideListener = listener;
+ if (!mIsDialogShowing) {
+ logd("Receiver registered");
+ mContext.registerReceiverAsUser(this, UserHandle.ALL, mFilter,
+ /* broadcastPermission= */ null,
+ /* scheduler= */ null);
+ new Handler().postDelayed(() -> {
+ if (!mUserManager.isUserUnlocked(uid)) {
+ logd("Showed unlock dialog for user: " + uid + " after " + delayMillis
+ + " delay.");
+ mWindowManager.addView(mUnlockDialogLayout, mParams);
+ }
+ }, delayMillis);
+ }
+ mIsDialogShowing = true;
+ }
+
+ private void setUid(int uid) {
+ mUid = uid;
+ TextView userName = mUnlockDialogLayout.findViewById(R.id.user_name);
+ userName.setText(mUserManager.getUserInfo(mUid).name);
+ ImageView avatar = mUnlockDialogLayout.findViewById(R.id.avatar);
+ avatar.setImageBitmap(mUserManager.getUserIcon(mUid));
+ setButtonText();
+ }
+
+ private void hideUnlockDialog(boolean dismissUserSwitcher) {
+ if (!mIsDialogShowing) {
+ return;
+ }
+ mWindowManager.removeView(mUnlockDialogLayout);
+ logd("Receiver unregistered");
+ mContext.unregisterReceiver(this);
+ if (mOnHideListener != null) {
+ mOnHideListener.onHide(dismissUserSwitcher);
+ }
+ mIsDialogShowing = false;
+ }
+
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ String action = intent.getAction();
+ if (action == null) {
+ return;
+ }
+ switch (action) {
+ case BluetoothAdapter.ACTION_BLE_STATE_CHANGED:
+ logd("Received ACTION_BLE_STATE_CHANGED");
+ int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, -1);
+ if (state == BluetoothAdapter.STATE_BLE_ON) {
+ logd("Received BLE_ON");
+ mUnlockingText.setText(R.string.unlock_dialog_message_start);
+ }
+ break;
+ case Intent.ACTION_USER_UNLOCKED:
+ int uid = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
+ if (uid == mUid) {
+ logd("IHU unlocked");
+ hideUnlockDialog(/* notifyOnHideListener= */false);
+ } else {
+ Log.e(TAG, "Received ACTION_USER_UNLOCKED for unexpected uid: " + uid);
+ }
+ break;
+ default:
+ Log.e(TAG, "Encountered unexpected action when attempting to set "
+ + "unlock state message: " + action);
+ }
+ }
+
+ // Set button text based on screen lock type
+ private void setButtonText() {
+ LockPatternUtils lockPatternUtils = new LockPatternUtils(mContext);
+ int passwordQuality = lockPatternUtils.getActivePasswordQuality(mUid);
+ switch (passwordQuality) {
+ // PIN
+ case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC:
+ case DevicePolicyManager.PASSWORD_QUALITY_NUMERIC_COMPLEX:
+ mButton.setText(R.string.unlock_dialog_button_text_pin);
+ break;
+ // Pattern
+ case DevicePolicyManager.PASSWORD_QUALITY_SOMETHING:
+ mButton.setText(R.string.unlock_dialog_button_text_pattern);
+ break;
+ // Password
+ case DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC:
+ case DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC:
+ case DevicePolicyManager.PASSWORD_QUALITY_COMPLEX:
+ mButton.setText(R.string.unlock_dialog_button_text_password);
+ break;
+ default:
+ Log.e(TAG, "Encountered unexpected screen lock type when attempting to set "
+ + "button text:" + passwordQuality);
+ }
+ }
+
+ private WindowManager.LayoutParams createLayoutParams() {
+ return new WindowManager.LayoutParams(
+ WindowManager.LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.MATCH_PARENT,
+ WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG,
+ WindowManager.LayoutParams.FLAG_FULLSCREEN
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS
+ | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION,
+ PixelFormat.TRANSLUCENT
+ );
+ }
+
+ private void logd(String message) {
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, message);
+ }
+ }
+
+ /**
+ * Listener used to notify when the dialog is hidden
+ */
+ interface OnHideListener {
+ void onHide(boolean dismissUserSwitcher);
+ }
+}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
index 0a167d9acf982fe040a568baece3b890b6678589..0f7c1ee8ea7e1e82375f88fc06b5186c5b469dcd 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/FullscreenUserSwitcher.java
@@ -18,29 +18,61 @@ package com.android.systemui.statusbar.car;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
+import android.car.trust.CarTrustAgentEnrollmentManager;
+import android.car.userlib.CarUserManagerHelper;
+import android.content.BroadcastReceiver;
import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.util.Log;
import android.view.View;
import android.view.ViewStub;
import androidx.recyclerview.widget.GridLayoutManager;
import com.android.systemui.R;
+import com.android.systemui.statusbar.car.CarTrustAgentUnlockDialogHelper.OnHideListener;
+import com.android.systemui.statusbar.car.UserGridRecyclerView.UserRecord;
/**
* Manages the fullscreen user switcher.
*/
public class FullscreenUserSwitcher {
+ private static final String TAG = FullscreenUserSwitcher.class.getSimpleName();
+ // Because user 0 is headless, user count for single user is 2
+ private static final int NUMBER_OF_BACKGROUND_USERS = 1;
private final UserGridRecyclerView mUserGridView;
private final View mParent;
private final int mShortAnimDuration;
private final CarStatusBar mStatusBar;
+ private final Context mContext;
+ private final UserManager mUserManager;
+ private final CarTrustAgentEnrollmentManager mEnrollmentManager;
+ private CarTrustAgentUnlockDialogHelper mUnlockDialogHelper;
+ private UserGridRecyclerView.UserRecord mSelectedUser;
+ private CarUserManagerHelper mCarUserManagerHelper;
+ private final BroadcastReceiver mUserUnlockReceiver = new BroadcastReceiver() {
+ @Override
+ public void onReceive(Context context, Intent intent) {
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "user 0 is unlocked, SharedPreference is accessible.");
+ }
+ showDialogForInitialUser();
+ mContext.unregisterReceiver(mUserUnlockReceiver);
+ }
+ };
+
- public FullscreenUserSwitcher(CarStatusBar statusBar, ViewStub containerStub, Context context) {
+ public FullscreenUserSwitcher(CarStatusBar statusBar, ViewStub containerStub,
+ CarTrustAgentEnrollmentManager enrollmentManager, Context context) {
mStatusBar = statusBar;
mParent = containerStub.inflate();
- // Hide the user grid by default. It will only be made visible by clicking on a cancel
- // button in a bouncer.
- hide();
+ mEnrollmentManager = enrollmentManager;
+ mContext = context;
+
View container = mParent.findViewById(R.id.container);
// Initialize user grid.
@@ -50,9 +82,51 @@ public class FullscreenUserSwitcher {
mUserGridView.setLayoutManager(layoutManager);
mUserGridView.buildAdapter();
mUserGridView.setUserSelectionListener(this::onUserSelected);
+ mCarUserManagerHelper = new CarUserManagerHelper(context);
+ mUnlockDialogHelper = new CarTrustAgentUnlockDialogHelper(mContext);
+ mUserManager = mContext.getSystemService(UserManager.class);
mShortAnimDuration = container.getResources()
.getInteger(android.R.integer.config_shortAnimTime);
+ IntentFilter filter = new IntentFilter(Intent.ACTION_USER_UNLOCKED);
+ if (mUserManager.isUserUnlocked(UserHandle.USER_SYSTEM)) {
+ // User0 is unlocked, switched to the initial user
+ showDialogForInitialUser();
+ } else {
+ // listen to USER_UNLOCKED
+ mContext.registerReceiverAsUser(mUserUnlockReceiver,
+ UserHandle.getUserHandleForUid(UserHandle.USER_SYSTEM),
+ filter,
+ /* broadcastPermission= */ null,
+ /* scheduler */ null);
+ }
+ }
+
+ private void showDialogForInitialUser() {
+ int initialUser = mCarUserManagerHelper.getInitialUser();
+ UserInfo initialUserInfo = mUserManager.getUserInfo(initialUser);
+ mSelectedUser = new UserRecord(initialUserInfo,
+ /* isStartGuestSession= */ false,
+ /* isAddUser= */ false,
+ /* isForeground= */ true);
+ // For single user without trusted device, hide the user switcher.
+ if (!hasMultipleUsers() && !hasTrustedDevice(initialUser)) {
+ dismissUserSwitcher();
+ return;
+ }
+ // Show unlock dialog for initial user
+ if (hasTrustedDevice(initialUser)) {
+ mUnlockDialogHelper.showUnlockDialogAfterDelay(initialUser,
+ mOnHideListener);
+ }
+ }
+
+ /**
+ * Check if there is only one possible user to login in.
+ * In a Multi-User system there is always one background user (user 0)
+ */
+ private boolean hasMultipleUsers() {
+ return mUserManager.getUserCount() > NUMBER_OF_BACKGROUND_USERS + 1;
}
/**
@@ -77,14 +151,33 @@ public class FullscreenUserSwitcher {
}
/**
- * Every time user clicks on an item in the switcher, we hide the switcher, either
- * gradually or immediately.
+ * Every time user clicks on an item in the switcher, if the clicked user has no trusted device,
+ * we hide the switcher, either gradually or immediately.
*
- * We dismiss the entire keyguard if user clicked on the foreground user (user we're already
- * logged in as).
+ * If the user has trusted device, we show an unlock dialog to notify user the unlock state.
+ * When the unlock dialog is dismissed by user, we hide the unlock dialog and the switcher.
+ *
+ * We dismiss the entire keyguard when we hide the switcher if user clicked on the foreground
+ * user (user we're already logged in as).
*/
private void onUserSelected(UserGridRecyclerView.UserRecord record) {
- if (record.mIsForeground) {
+ mSelectedUser = record;
+ if (hasTrustedDevice(record.mInfo.id)) {
+ mUnlockDialogHelper.showUnlockDialog(record.mInfo.id, mOnHideListener);
+ return;
+ }
+ if (Log.isLoggable(TAG, Log.DEBUG)) {
+ Log.d(TAG, "no trusted device enrolled for uid: " + record.mInfo.id);
+ }
+ dismissUserSwitcher();
+ }
+
+ private void dismissUserSwitcher() {
+ if (mSelectedUser == null) {
+ Log.e(TAG, "Request to dismiss user switcher, but no user selected");
+ return;
+ }
+ if (mSelectedUser.mIsForeground) {
hide();
mStatusBar.dismissKeyguard();
return;
@@ -106,4 +199,22 @@ public class FullscreenUserSwitcher {
});
}
+
+ private boolean hasTrustedDevice(int uid) {
+ return !mEnrollmentManager.getEnrolledDeviceInfoForUser(uid).isEmpty();
+ }
+
+ private OnHideListener mOnHideListener = new OnHideListener() {
+ @Override
+ public void onHide(boolean dismissUserSwitcher) {
+ if (dismissUserSwitcher) {
+ dismissUserSwitcher();
+ } else {
+ // Re-draw the parent view, otherwise the unlock dialog will not be removed from
+ // the screen immediately.
+ mParent.invalidate();
+ }
+
+ }
+ };
}
diff --git a/packages/CarrierDefaultApp/res/values-in/strings.xml b/packages/CarrierDefaultApp/res/values-in/strings.xml
index 01a9c6041ed5f51749e4601683a74e8a7705b26e..f48d31f56586bbf8191ad2f5b9272e7337e8617d 100644
--- a/packages/CarrierDefaultApp/res/values-in/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-in/strings.xml
@@ -5,7 +5,7 @@
"Operator Seluler""Data seluler telah habis""Data seluler telah dinonaktifkan"
- "Tap untuk membuka situs web %s"
+ "Ketuk untuk membuka situs web %s""Hubungi penyedia layanan %s""Tidak ada sambungan data seluler""Tambahkan paket data atau roaming melalui %s"
diff --git a/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml b/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml
index 96046ad5f3df38381a717c1e7e188c8647d109ee..35de8ef46508967cba6371a5c1a89bfebdf11a37 100644
--- a/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml
+++ b/packages/ExternalStorageProvider/res/values-pt-rPT/strings.xml
@@ -19,5 +19,5 @@
"Armazenamento externo""Armazenamento local""Armazenamento interno"
- "Documentos"
+ "Docs"
diff --git a/packages/MtpDocumentsProvider/res/values-hi/strings.xml b/packages/MtpDocumentsProvider/res/values-hi/strings.xml
index bbd0ae711faf6cc4b828b2f6991a107290b2f3bb..e469fc0ee1a6993b53563c9241de3925cad3edec 100644
--- a/packages/MtpDocumentsProvider/res/values-hi/strings.xml
+++ b/packages/MtpDocumentsProvider/res/values-hi/strings.xml
@@ -19,7 +19,7 @@
"MTP होस्ट""डाउनलोड""%1$s%2$s"
- "%1$s से फ़ाइलें एक्सेस कर रहा है"
+ "%1$s से फ़ाइलें ऐक्सेस कर रहा है""दूसरा डिवाइस व्यस्त है. आप उसके उपलब्ध हो जाने तक फ़ाइलें ट्रांसफ़र नहीं कर सकते.""कोई फ़ाइल नहीं मिली. हो सकता है कि दूसरा डिवाइस लॉक हो. अगर ऐसा है, तो उसे अनलॉक करें और दोबारा कोशिश करें."
diff --git a/packages/PrintSpooler/res/values-or/strings.xml b/packages/PrintSpooler/res/values-or/strings.xml
index 7eeac87710321a3cf2eafc92cbb581616432d045..f385391c8d788576e2f03ca2fdb75712e654fdee 100644
--- a/packages/PrintSpooler/res/values-or/strings.xml
+++ b/packages/PrintSpooler/res/values-or/strings.xml
@@ -72,7 +72,7 @@
"ପ୍ରିଣ୍ଟର ଯୋଡ଼ିବାକୁ ଚୟନ କରନ୍ତୁ""ସକ୍ଷମ କରିବା ପାଇଁ ଚୟନ କରନ୍ତୁ""ସକ୍ଷମ କରାଯାଇଥିବା ସର୍ଭିସ୍"
- "ସୁପାରିସ କରାଯାଇଥିବା ସର୍ଭିସ୍"
+ "ସୁପାରିଶ କରାଯାଇଥିବା ସର୍ଭିସ୍""ଅକ୍ଷମ କରାଯାଇଥିବା ସର୍ଭିସ୍""ସମସ୍ତ ସର୍ଭିସ୍"
diff --git a/packages/SettingsLib/HelpUtils/AndroidManifest.xml b/packages/SettingsLib/HelpUtils/AndroidManifest.xml
index 5240ce44c9d92144080fdc946adf194fbca0b4a7..ccad6e49ff8cb86257a610c429ce97162a6d1e1b 100644
--- a/packages/SettingsLib/HelpUtils/AndroidManifest.xml
+++ b/packages/SettingsLib/HelpUtils/AndroidManifest.xml
@@ -16,6 +16,6 @@
-->
+ package="com.android.settingslib.widget">
diff --git a/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java b/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
index e407d7239546f490e27976ad0bf840bd6617c459..2d13b73d3d1f25d79b8edc114f69076d5d217504 100644
--- a/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
+++ b/packages/SettingsLib/HelpUtils/src/com/android/settingslib/HelpUtils.java
@@ -33,11 +33,11 @@ import android.view.Menu;
import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
+import com.android.settingslib.widget.R;
+
import java.net.URISyntaxException;
import java.util.Locale;
-import com.android.settingslib.helputils.R;
-
/**
* Functions to easily prepare contextual help menu option items with an intent that opens up the
* browser to a particular URL, while taking into account the preferred language and app version.
diff --git a/packages/SettingsLib/RestrictedLockUtils/AndroidManifest.xml b/packages/SettingsLib/RestrictedLockUtils/AndroidManifest.xml
index d19a02238628d8ad0af753f7250acd3b4e981fcb..09756400b736c3c390a3f01de204b097629803f4 100644
--- a/packages/SettingsLib/RestrictedLockUtils/AndroidManifest.xml
+++ b/packages/SettingsLib/RestrictedLockUtils/AndroidManifest.xml
@@ -16,6 +16,6 @@
-->
+ package="com.android.settingslib.widget">
\ No newline at end of file
diff --git a/packages/SettingsLib/SearchWidget/res/values-km/strings.xml b/packages/SettingsLib/SearchWidget/res/values-km/strings.xml
index f012e3ab3e83facae68b59787008fa217fdcb997..7ac9cb1b72ce624f3aad53b71d127e5bcfdd7107 100644
--- a/packages/SettingsLib/SearchWidget/res/values-km/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-km/strings.xml
@@ -17,5 +17,5 @@
- "ការកំណត់ការស្វែងរក"
+ "ស្វែងរកការកំណត់"
diff --git a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
index 7846be161c0fa656ccb91cea0240a7acd00b1b56..363d88544a03fba850da72e96df6059ed76fe840 100644
--- a/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/SearchWidget/res/values-pt-rPT/strings.xml
@@ -17,5 +17,5 @@
- "Definições de pesquisa"
+ "Pesquisar definições"
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 13890e02927425cab510245f95a07a921ce86804..f1fc9f9e3d4ed855d40725e2d87de8a5542ac27b 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -452,7 +452,7 @@
"বাতিল""ঠিক আছে""চালু করুন"
- "\'বিরক্ত করবেন না\' মোড চালু করুন"
+ "\'বিরক্ত করবে না\' মোড চালু করুন""কখনও নয়""শুধুমাত্র অগ্রাধিকার""%1$s. %2$s"
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index afdb105ca560f1959ce8da75479063f0ee0cab48..264954465981283b3e0f1f1ba1bae16012c69dd8 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -385,10 +385,10 @@
"Temps restant aproximat segons l\'ús que en fas: %1$s (%2$s)"
- "La bateria hauria de durar aproximadament fins a les %1$s segons l\'ús que en fas (%2$s)"
- "La bateria hauria de durar aproximadament fins a les %1$s segons l\'ús que en fas"
- "La bateria hauria de durar aproximadament fins a les %1$s (%2$s)"
- "La bateria hauria de durar aproximadament fins a les %1$s"
+ "Hauria de durar aproximadament fins a les %1$s segons l\'ús que en facis (%2$s)"
+ "Hauria de durar aproximadament fins a les %1$s segons l\'ús que en facis"
+ "Hauria de durar aproximadament fins a les %1$s (%2$s)"
+ "Hauria de durar aproximadament fins a les %1$s""Fins a les %1$s""Allarga la durada de la bateria després de les %1$s""Temps restant inferior a %1$s"
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index beb1ac5469497aecbc96383251199b3022d29634..7874aeb02996d4d96729ee31984ca0c9a30a2bec 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -141,7 +141,7 @@
"Aplicaciones eliminadas""Aplicaciones y usuarios eliminados""Actualizaciones del sistema"
- "Conexión USB"
+ "Conexión a red por USB""Hotspot portátil""Conexión Bluetooth""Compartir conexión"
@@ -286,7 +286,7 @@
"Esperar que se conecte el depurador para iniciar la aplicación""Entrada""Dibujo"
- "Representación acelerada mediante hardware"
+ "Procesamiento acelerado mediante hardware""Multimedia""Supervisión""Modo estricto"
diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml
index 5ad9b0191c77debcb1827f370dcf2d521e3ce825..3d9a78e99204fb96ae1f599037bb9f3443948342 100644
--- a/packages/SettingsLib/res/values-hi/arrays.xml
+++ b/packages/SettingsLib/res/values-hi/arrays.xml
@@ -76,7 +76,7 @@
"avrcp16"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""SBC""AAC""Qualcomm®aptX™ ऑडियो"
@@ -86,7 +86,7 @@
"वैकल्पिक कोडेक अक्षम करें"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""SBC""AAC""Qualcomm®aptX™ ऑडियो"
@@ -96,38 +96,38 @@
"वैकल्पिक कोडेक अक्षम करें"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""44.1 kHz""48.0 kHz""88.2 kHz""96.0 kHz"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""44.1 kHz""48.0 kHz""88.2 kHz""96.0 kHz"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""16 बिट/नमूना""24 बिट/नमूना""32 बिट/नमूना"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""16 बिट/नमूना""24 बिट/नमूना""32 बिट/नमूना"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम से चुने जाने का उपयोग करें (डिफ़ॉल्ट)""मोनो""स्टीरियो"
- "सिस्टम चयन का उपयोग करें (डिफ़ॉल्ट)"
+ "सिस्टम चुनाव का उपयोग करें (डिफ़ॉल्ट)""मोनो""स्टीरियो"
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 5d512a84ef996f5147d9dd552df8f8fada156321..3a20d04d7ab2e2664b936de15f255ec313e9a7f2 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -46,7 +46,7 @@
"सीमित कनेक्शन""इंटरनेट कनेक्शन नहीं है""साइन इन करना ज़रूरी है"
- "एक्सेस पॉइंट फ़िलहाल भरा हुआ है"
+ "ऐक्सेस पॉइंट फ़िलहाल भरा हुआ है""%1$s के ज़रिए कनेक्ट""%1$s के ज़रिए उपलब्ध""%1$s खोला जा रहा है"
@@ -68,7 +68,7 @@
"युग्मित कर रहा है…""जुड़ गया (फ़ोन के ऑडियो को छोड़कर)%1$s""जुड़ गया (मीडिया ऑडियो को छोड़कर)%1$s"
- "जुड़ गया (मैसेज का एक्सेस नहीं)%1$s"
+ "जुड़ गया (मैसेज का ऐक्सेस नहीं)%1$s""जुड़ गया (फ़ोन या मीडिया ऑडियो को छोड़कर)%1$s""जुड़ गया, बैटरी का लेवल %1$s%2$s""जुड़ गया (फ़ोन के ऑडियो को छोड़कर), बैटरी का लेवल %1$s%2$s"
@@ -88,7 +88,7 @@
"संपर्क साझाकरण के लिए उपयोग करें""इंटरनेट कनेक्शन साझाकरण""लेख संदेश"
- "सिम एक्सेस"
+ "सिम ऐक्सेस""HD ऑडियो: %1$s""HD ऑडियो""सुनने में मदद करने वाले डिवाइस"
@@ -200,7 +200,7 @@
"यह उपयोगकर्ता, डेवलपर के लिए सेटिंग और टूल का इस्तेमाल नहीं कर सकता""VPN सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं""टेदरिंग सेटिंग इस उपयोगकर्ता के लिए उपलब्ध नहीं हैं"
- "एक्सेस पॉइंट के नाम की सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं"
+ "ऐक्सेस पॉइंट के नाम की सेटिंग इस उपयोगकर्ता के लिए मौजूद नहीं हैं""USB डीबग करना""डीबग मोड जब USB कनेक्ट किया गया हो""USB डीबग करने की मंज़ूरी रद्द करें"
@@ -361,7 +361,7 @@
"इस समय चल रही सेवाओं को देखें और नियंत्रित करें""वेबव्यू लागू करें""वेबव्यू सेट करें"
- "यह चयन अब मान्य नहीं है. पुनः प्रयास करें."
+ "यह चुनाव अब मान्य नहीं है. दोबारा कोशिश करें.""फ़ाइल आधारित सुरक्षित करने के तरीके में बदलें""रूपांतरित करें...""फ़ाइल पहले से एन्क्रिप्ट की हुई है"
@@ -414,7 +414,7 @@
"बंद किया गया""अनुमति है""अनुमति नहीं है"
- "अनजान ऐप्लिकेशन इंस्टॉल करने का एक्सेस"
+ "अनजान ऐप्लिकेशन इंस्टॉल करने का ऐक्सेस""सेटिंग का होम पेज""0%"
diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml
index 5cffafed6689c8eb5f12e611cbef0f38b5ef4b35..7368f1d105f26c5bb67e17db3c355ce6aeaceada 100644
--- a/packages/SettingsLib/res/values-hy/arrays.xml
+++ b/packages/SettingsLib/res/values-hy/arrays.xml
@@ -43,7 +43,7 @@
"Միացված է %1$s-ին""Անջատված""Անջատվում է %1$s-ից…"
- "Անջատած է"
+ "Անջատված է""Անհաջող""Արգելափակված""Վատ ցանցից ժամանակավոր խուսափում"
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index bf587405c66892df501684b6ba7bc1fa8812c97d..16d7ea4352cfa5c9b16eb8463c317e055e98f0bc 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -169,7 +169,7 @@
"Այս խոսքային սինթեզի գործիքը կարող է հավաքել այն ամենը, ինչ արտասանված է, այդ թվում` անձնական տվյալներ, ինչպիսիք են գաղտնաբառն ու բանկային քարտի համարները: Սկզբնաբյուրը %s շարժիչն է: Միացնե՞լ խոսքի սինթեզի շարժիչի օգտագործումը:""Այս լեզուն պահանջում է աշխատող ցանցային կապ գրվածքից խոսք ելքի համար:""Սա խոսքային սինթեզի մի նմուշ է:"
- "Լռելյայն լեզվի կարգավիճակը"
+ "Կանխադրված լեզվի կարգավիճակը""%1$s-ը լիովին աջակցվում է""%1$s-ը պահանջում է ցանցային կապ""%1$s-ը չի աջակցվում"
@@ -201,9 +201,9 @@
"VPN-ի կարգավորումները հասանելի չեն այս օգտատիրոջը""Այս օգտատերը չի կարող փոխել մոդեմի ռեժիմի կարգավորումները""Մուտքի կետի անվան կարգավորումները հասանելի չեն այս օգտատիրոջը"
- "USB վրիպազերծում"
+ "USB-ով վրիպազերծում""Միացնել վրիպազերծման ռեժիմը, երբ USB-ն միացված է"
- "Չեղարկել USB վրիպազերծման լիազորումները"
+ "Չեղարկել USB-ով վրիպազերծման թույլտվությունները""Սխալի հաղորդման դյուրանցում""Գործարկման ցանկում ցույց տալ կոճակը՝ վրիպակների հաղորդման համար""Մնալ արթուն"
@@ -263,9 +263,9 @@
"Միացնել ցուցադրման հատկանիշների ստուգումը""Միշտ ակտիվացրած պահել բջջային տվյալները, նույնիսկ Wi‑Fi-ը միացրած ժամանակ (ցանցերի միջև արագ փոխարկման համար):""Օգտագործել սարքակազմի արագացման միացումը, եթե հասանելի է"
- "Թույլատրե՞լ USB-ի վրիպազերծումը:"
- "USB վրիպազերծումը միայն ծրագրավորման նպատակների համար է: Օգտագործեք այն ձեր համակարգչից տվյալները ձեր սարք պատճենելու համար, առանց ծանուցման ձեր սարքի վրա ծրագրեր տեղադրելու և տվյալների մատյանը ընթերցելու համար:"
- "Փակե՞լ USB-ի վրիպազերծման մուտքը` անջատելով այն բոլոր համակարգիչներից, որտեղ նախկինում թույլատրել էիք:"
+ "Թույլատրե՞լ USB-ով վրիպազերծումը:"
+ "USB-ով վրիպազերծումը միայն ծրագրավորման նպատակների համար է: Օգտագործեք այն ձեր համակարգչից տվյալները ձեր սարք պատճենելու համար, առանց ծանուցման ձեր սարքի վրա ծրագրեր տեղադրելու և տվյալների մատյանը ընթերցելու համար:"
+ "Չեղարկե՞լ USB-ով վրիպազերծման հասանելիությունը` անջատելով այն բոլոր համակարգիչներից, որտեղ նախկինում թույլատրել էիք:""Ընդունե՞լ ծրագրավորման կարգավորումներ:""Այս կարգավորումները միայն ծրագրավորման նպատակների համար են նախատեսված: Դրանք կարող են խանգարել ձեր սարքի կամ ծրագրի աշխատանքին:""Ստուգել հավելվածները USB-ի նկատմամբ"
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 7fe1ef9213edbcd80197d2fa5c8dfd0fbf6d9384..02c4c8c6f44dce3f8a51425f99ac0652a33fe72a 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -336,8 +336,8 @@
"Buat semua aktivitas dapat diubah ukurannya untuk banyak jendela, terlepas dari nilai manifes.""Aktifkan jendela berformat bebas""Aktifkan dukungan untuk jendela eksperimental berformat bebas."
- "Sandi backup desktop"
- "Saat ini backup desktop sepenuhnya tidak dilindungi"
+ "Sandi cadangan desktop"
+ "Saat ini cadangan desktop penuh tidak dilindungi""Ketuk guna mengubah atau menghapus sandi untuk cadangan lengkap desktop""Sandi cadangan baru telah disetel""Sandi baru dan konfirmasinya tidak cocok."
@@ -387,8 +387,8 @@
"Akan bertahan kira-kira sampai %1$s berdasarkan penggunaan Anda (%2$s)""Akan bertahan kira-kira sampai %1$s berdasarkan penggunaan Anda"
- "Akan bertahan kira-kira sampai %1$s (%2$s)"
- "Akan bertahan kira-kira sampai %1$s"
+ "Akan bertahan kira-kira sampai pukul %1$s (%2$s)"
+ "Akan bertahan kira-kira sampai pukul %1$s""Hingga %1$s""Perpanjang masa pakai baterai hingga %1$s""Tersisa kurang dari %1$s"
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 68c0f17a3b41387124f7863409985e8294275148..a43e8d6aa4e488dd8e9b9296985c6e8b53c6deda 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -240,7 +240,7 @@
"Streaming: %1$s""DNS privato""Seleziona modalità DNS privato"
- "Non attivo"
+ "Off""Automatico""Nome host del provider DNS privato""Inserisci il nome host del provider DNS"
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index ead0bfb3fe7bb991a5eb3ffc4aa8f5b014fb8b09..a3e049c8b144d769e3e9db717274cfad84e5a27d 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -342,7 +342,7 @@
"הוגדרה סיסמת גיבוי חדשה""הסיסמה החדשה והאישור אינם תואמים""הגדרת סיסמת גיבוי נכשלה"
- "טוען…"
+ "בטעינה…""דינמי (ברירת מחדל)""טבעי"
@@ -405,7 +405,7 @@
"%1$s עד לטעינה מלאה""%1$s - %2$s עד לטעינה מלאה""לא ידוע"
- "טוען"
+ "בטעינה""בטעינה""לא בטעינה""המכשיר מחובר, אבל לא ניתן לטעון עכשיו"
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index e5d29bff8b65018b8fdaa0c552325965bb000001..50543d8bfbeee16773b58476d0a6266b581183f6 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -385,10 +385,10 @@
"残り時間: 約 %1$s(使用状況に基づく)(%2$s)"
- "電池切れの推定時間: %1$s(使用状況に基づく)(%2$s)"
- "電池切れの推定時間: %1$s(使用状況に基づく)"
- "電池切れの推定時間: %1$s(%2$s)"
- "電池切れの推定時間: %1$s"
+ "電池切れの推定時刻: %1$s(使用状況に基づく)(%2$s)"
+ "電池切れの推定時刻: %1$s(使用状況に基づく)"
+ "電池切れの推定時刻: %1$s(%2$s)"
+ "電池切れの推定時刻: %1$s""%1$s まで""%1$sまで電池消費量を抑える""残り時間: %1$s未満"
diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml
index b3bd38e797ca94374ab299470d4905f14dd331c8..ec9cb57a1c1304bd98872b039b350d2d64781cbf 100644
--- a/packages/SettingsLib/res/values-ko/arrays.xml
+++ b/packages/SettingsLib/res/values-ko/arrays.xml
@@ -228,7 +228,7 @@
"없음"
- "로그캣"
+ "Logcat""Systrace(그래픽)""glGetError의 스택 호출"
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index ed88bc53890bbf655187a8f563e71de0ad819c31..1cee8fbe5a04abd18480a2c686c505a0ec00eff6 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -385,10 +385,10 @@
"ເຫຼືອອີກປະມານ %1$s ອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ (%2$s)"
- "Should last until about %1$s based on your usage (%2$s)"
- "Should last until about %1$s based on your usage"
- "Should last until about %1$s (%2$s)"
- "Should last until about %1$s"
+ "ໜ້າຈະໃຊ້ໄດ້ຈົນຮອດປະມານ %1$s ໂດຍອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ (%2$s)"
+ "ໜ້າຈະໃຊ້ໄດ້ຈົນຮອດປະມານ %1$s ໂດຍອ້າງອີງຈາກການນຳໃຊ້ຂອງທ່ານ"
+ "ໜ້າຈະໃຊ້ໄດ້ຈົນຮອດປະມານ %1$s (%2$s)"
+ "ໜ້າຈະໃຊ້ໄດ້ຈົນຮອດປະມານ %1$s""ຈົນກວ່າຈະຮອດ %1$s""ຂະຫຍາຍອາຍຸແບັດເຕີຣີກາຍ %1$s""ຍັງເຫຼືອໜ້ອຍກວ່າ %1$s"
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 8feb5ab43ee4bc850017cfed0e4151838e5088b2..96aebc59c5568163deb887d48c16a59c43f16c71 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -403,7 +403,7 @@
"Iespējams, ierīce drīz izslēgsies (%1$s)""%1$s — %2$s""Atlikušais laiks līdz pilnai uzlādei: %1$s"
- "%1$s - %2$s, kamēr pilnībā uzlādēts"
+ "%1$s - %2$s līdz pilnīgai uzlādei""Nezināms""Uzlāde""notiek uzlāde"
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index dda34624261682e39525206fa26cdf851c442d30..d93304fc3bf627ee58194be2834ad086cdc4161a 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -153,7 +153,7 @@
"Поставени се некои стандардни вредности""Нема поставено стандардни вредности""Поставки на текст-во-говор"
- "Излез текст-во-говор"
+ "Претворање текст во говор""Брзина на говор""Брзина со која се кажува текстот""Интензитет"
@@ -167,7 +167,7 @@
"Инсталирај гласовни податоци""Инсталирај ги гласовните податоци потребни за синтеза на говор""Овој софтвер за синтеза на говор може да го собере сиот текст што ќе се говори, вклучувајќи и лични податоци како што се лозинки и броеви на кредитни картички. Тоа го прави апликацијата %s. Употреби го овој софтвер за синтеза на говор?"
- "За овој јазик е потребно поврување со мрежа што функционира на излез за текст-во-говор."
+ "За претворање текст во говор на овој јазик, потребна е активна мрежна врска.""Ова е пример на синтеза на говор""Статус на стандарден јазик""%1$s е целосно поддржан"
@@ -375,7 +375,7 @@
"Девтераномалија (слепило за црвена и зелена)""Протаномалија (слепило за црвена и зелена)""Тританомалија (слепило за сина и жолта)"
- "Корекција на боја"
+ "Корекција на бои""Функцијата е експериментална и може да влијае на изведбата.""Прескокнато според %1$s""%1$s - %2$s"
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index fd45cb0a1f3cd8977a26658587671f6e9519ae3c..b2e1cd62b9631d6df9bee0cbc4c31bb5ec93c36b 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -153,7 +153,7 @@
"केही पूर्वनिर्धारितहरू सेट गरिएका छन्""कुनै पूर्वनिर्धारित सेट गरिएको छैन""पाठ-वाचन सेटिङहरू"
- "पाठवाचकको उत्पादन"
+ "पाठवाचकको आउटपुट""वाणी दर""पाठ वाचन हुने गति""पिच"
@@ -248,7 +248,7 @@
"ताररहित प्रदर्शन प्रमाणीकरणका लागि विकल्पहरू देखाउनुहोस्""Wi-Fi लग स्तर बढाउनुहोस्, Wi-Fi चयनकर्तामा प्रति SSID RSSI देखाइन्छ""ब्याट्रीको खपत कम गरी नेटवर्कको कार्यसम्पादनमा सुधार गर्दछ"
- "मिटर गरिएको जडान भनी चिन्ह लगाइएको"
+ "सशुल्क वाइफाइ""मिटर नगरिएको""लगर बफर आकारहरू""लग बफर प्रति लगर आकार चयन गर्नुहोस्"
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 5725c22a5456390e943aa858677d9e9889b62e90..f9e0d39f60c18634f6ac31ff1d325c9472ec4c23 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -402,7 +402,7 @@
"ଖୁବ୍ ଶୀଘ୍ର ଟାବଲେଟ୍ଟି ବନ୍ଦ ହୋଇଯାଇପାରେ (%1$s)""ଖୁବ୍ ଶୀଘ୍ର ଡିଭାଇସ୍ଟି ବନ୍ଦ ହୋଇଯାଇପାରେ(%1$s)""%1$s - %2$s"
- "ସମ୍ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବାପାଇଁ %1$s ଅବଶିଷ୍ଟ ଅଛି"
+ "ସମ୍ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବାପାଇଁ %1$s ବାକି ଅଛି""%1$s - %2$s ପୂର୍ଣ୍ଣ ଚାର୍ଜ ହେବା ପର୍ଯ୍ୟନ୍ତ""ଅଜ୍ଞାତ""ଚାର୍ଜ ହେଉଛି"
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index faccda7e93958b1e81452e922caba2568a278e3e..b5acd8e15acdcb20853d974bc203d20825b6da56 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -388,7 +388,7 @@
"ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ ਲਗਭਗ %1$s ਚੱਲੇਗਾ (%2$s)""ਤੁਹਾਡੀ ਵਰਤੋਂ ਦੇ ਆਧਾਰ \'ਤੇ ਲਗਭਗ %1$s ਚੱਲੇਗਾ""ਲਗਭਗ %1$s ਚੱਲੇਗਾ (%2$s)"
- "ਲਗਭਗ %1$s ਚੱਲੇਗਾ"
+ "ਲਗਭਗ %1$s ਤੱਕ ਚੱਲੇਗੀ""%1$s ਤੱਕ""ਬੈਟਰੀ ਲਾਈਫ਼ %1$s ਤੋਂ ਬਾਅਦ ਤੱਕ ਵਧਾਓ""%1$s ਤੋਂ ਘੱਟ ਸਮਾਂ ਬਾਕੀ"
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 501cf5049f093f0b2046c5598d3a69f0abe806fb..c076d328155b7d4b89c5bfa340ee97256a9fdf40 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -387,8 +387,8 @@
"Deve durar até cerca da(s) %1$s com base na sua utilização (%2$s).""Deve durar até cerca da(s) %1$s com base na sua utilização."
- "Deve durar até cerca da(s) %1$s (%2$s)."
- "Deve durar até cerca da(s) %1$s."
+ "Deve durar até cerca da(s) %1$s (%2$s)"
+ "Deve durar até cerca da(s) %1$s""Até à(s) %1$s""Prolongar a autonomia da bateria após %1$s""Resta(m) menos de %1$s."
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index e28825c052e74596c3f80635c5ca67529ecca0ef..d77e1eb2a7133edf2ee358872c052c4264c18107 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -385,10 +385,10 @@
"Zostáva približne %1$s – závisí to od intenzity využitia (%2$s)"
- "Mal by vydržať približne do %1$s v závislosti od využitia (%2$s)"
- "Mal by vydržať približne do %1$s v závislosti od využitia"
- "Mal by vydržať približne %1$s (%2$s)"
- "Mal by vydržať približne do %1$s"
+ "Podľa vášho využitia (%2$s) vydrží asi do %1$s"
+ "Podľa vášho využitia vydrží asi do %1$s"
+ "Vydrží asi do %1$s (%2$s)"
+ "Vydrží asi do %1$s""Do %1$s""Predĺžiť výdrž batérie minimálne do %1$s""Zostáva menej ako %1$s"
@@ -402,8 +402,8 @@
"Tablet sa môže čoskoro vypnúť (%1$s)""Zariadenie sa môže čoskoro vypnúť (%1$s)""%1$s – %2$s"
- "Zostávajúci čas do úplného nabitia: %1$s"
- "%1$s – %2$s do úplného nabitia"
+ "%1$s do úplného nabitia"
+ "%1$s, %2$s do úplného nabitia""Neznáme""Nabíja sa""nabíja sa"
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index b16d5d91f7eba1410a8bfbbbf6b8a5a2a9b70cd8..263b4d0e2eef8e3c937be578c9ed9cfb2bb58b02 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -388,7 +388,7 @@
"Naprava bi morala glede na način uporabe (%2$s) delovati do približno %1$s""Naprava bi morala glede na način uporabe delovati do približno %1$s""Naprava bi morala delovati do približno %1$s (%2$s)"
- "Naprava bi morala delovati do približno %1$s"
+ "Moralo bi zadostovati do približno %1$s""Do %1$s""Podaljšanje časa delovanja akumulatorja za dlje kot %1$s""Preostalo manj kot %1$s"
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index cf442b73e7216d04be8ba11e272d92911cc97e3a..a0f2ede633ce9bc59ea580b069b6c0abbd150405 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -138,8 +138,8 @@
"கடவுச்சொல் தேவைப்படாத திறந்த நெட்வொர்க்""கடவுச்சொல் தேவைப்படும் பாதுகாப்பான நெட்வொர்க்""Android OS"
- "அகற்றப்பட்ட பயன்பாடுகள்"
- "அகற்றப்பட்ட பயன்பாடுகள் மற்றும் பயனர்கள்"
+ "அகற்றப்பட்ட ஆப்ஸ்"
+ "அகற்றப்பட்ட ஆப்ஸ் மற்றும் பயனர்கள்""சிஸ்டம் புதுப்பிப்புகள்""USB டெதெரிங்""போர்ட்டபிள் ஹாட்ஸ்பாட்"
@@ -159,7 +159,7 @@
"ஒலித்திறன்""உருவாக்கப்படும் பேச்சின் டோன் பாதிக்கப்படும்""மொழி"
- "அமைப்பின் மொழியில்"
+ "அமைப்பின் மொழியைப் பயன்படுத்தவும்""மொழி தேர்ந்தெடுக்கப்படவில்லை""பேசப்படும் உரைக்கு மொழி சார்ந்த குரலை அமைக்கிறது""எடுத்துக்காட்டைக் கவனிக்கவும்"
@@ -264,7 +264,7 @@
"வைஃபை இயங்கும் போதும் (வேகமான நெட்வொர்க் மாற்றத்திற்கு), மொபைல் டேட்டாவை எப்போதும் இயக்கத்தில் வைக்கும்.""வன்பொருள் விரைவுப்படுத்துதல் இணைப்பு முறை கிடைக்கும் போது, அதைப் பயன்படுத்தும்""USB பிழைதிருத்தத்தை அனுமதிக்கவா?"
- "USB பிழைதிருத்தம் மேம்படுத்தல் நோக்கங்களுக்காக மட்டுமே. அதை உங்கள் கணினி மற்றும் சாதனத்திற்கு இடையில் தரவை நகலெடுக்கவும், அறிவிப்பு இல்லாமல் உங்கள் சாதனத்தில் பயன்பாடுகளை நிறுவவும், பதிவு தரவைப் படிக்கவும் பயன்படுத்தவும்."
+ "USB பிழைதிருத்தம் மேம்படுத்தல் நோக்கங்களுக்காக மட்டுமே. அதை உங்கள் கணினி மற்றும் சாதனத்திற்கு இடையில் தரவை நகலெடுக்கவும், அறிவிப்பு இல்லாமல் உங்கள் சாதனத்தில் ஆப்ஸை நிறுவவும், பதிவு தரவைப் படிக்கவும் பயன்படுத்தவும்.""நீங்கள் ஏற்கனவே அனுமதித்த எல்லா கணினிகளிலிருந்தும் USB பிழைத்திருத்தத்திற்கான அணுகலைத் திரும்பப்பெற வேண்டுமா?""மேம்பட்ட அமைப்புகளை அனுமதிக்கவா?""இந்த அமைப்பு மேம்பட்டப் பயன்பாட்டிற்காக மட்டுமே. உங்கள் சாதனம் மற்றும் அதில் உள்ள பயன்பாடுகளைச் சிதைக்கும் அல்லது தவறாகச் செயல்படும் வகையில் பாதிப்பை ஏற்படுத்தும்."
@@ -402,7 +402,7 @@
"டேப்லெட் விரைவில் ஆஃப் ஆகக்கூடும் (%1$s)""சாதனம் விரைவில் ஆஃப் ஆகக்கூடும் (%1$s)""%1$s - %2$s"
- "முழு சார்ஜாக %1$s ஆகும்"
+ "முழு சார்ஜாக %1$sம் ஆகும்""%1$s - முழு சார்ஜாக %2$s ஆகும்""அறியப்படாத""சார்ஜ் ஆகிறது"
@@ -437,7 +437,7 @@
"சாதன மொழிகளைப் பயன்படுத்து""%1$s க்கான அமைப்புகளைத் திறப்பதில் தோல்வி""இந்த உள்ளீட்டு முறையானது, கடவுச்சொற்கள் மற்றும் கிரெடிட் கார்டு எண்கள் போன்ற தனிப்பட்ட தகவல் உள்பட நீங்கள் உள்ளிடும் எல்லா உரையையும் சேகரிக்கக்கூடும். இது %1$s பயன்பாட்டிலிருந்து வந்துள்ளது. இந்த உள்ளீட்டு முறையைப் பயன்படுத்தவா?"
- "குறிப்பு: மறுதொடக்கம் செய்த பிறகு, மொபைலைத் திறக்கும் வரை இந்தப் பயன்பாட்டால் தொடங்க முடியாது"
+ "குறிப்பு: மறுதொடக்கம் செய்த பிறகு, மொபைலைத் திறக்கும் வரை இந்த ஆப்ஸால் தொடங்க முடியாது""IMS பதிவின் நிலை""பதிவு செய்யப்பட்டது""பதிவு செய்யப்படவில்லை"
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 83636dc19beb9b5bc5647cabe897db167a76c1bc..e591121d4b59224aa8668d71aff5c6e7231e5bfd 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -143,7 +143,7 @@
"సిస్టమ్ అప్డేట్లు""USB టీథరింగ్""పోర్టబుల్ హాట్స్పాట్"
- "బ్లూటూత్ టీథరింగ్"
+ "బ్లూటూత్ టెథెరింగ్""టీథరింగ్""టీథరింగ్ & పోర్టబుల్ హాట్స్పాట్""అన్ని కార్యాలయ అనువర్తనాలు"
@@ -376,7 +376,7 @@
"ప్రొటానోమలీ (ఎరుపు-ఆకుపచ్చ రంగు)""ట్రైటనోమలీ (నీలం-పసుపు రంగు)""రంగు సవరణ"
- "ఈ లక్షణం ప్రయోగాత్మకమైనది మరియు పనితీరుపై ప్రభావం చూపవచ్చు."
+ "ఈ ఫీచర్ ప్రయోగాత్మకమైనది, పనితీరుపై ప్రభావం చూపవచ్చు.""%1$s ద్వారా భర్తీ చేయబడింది""%1$s - %2$s""%1$s సమయం మిగిలి ఉంది"
@@ -414,7 +414,7 @@
"నిలిపివేయబడింది""అనుమతించినవి""అనుమతించబడలేదు"
- "తెలియని యాప్లను ఇన్స్టాల్ చేయండి"
+ "తెలియని యాప్లను ఇన్స్టాల్ చేయడం""సెట్టింగ్ల హోమ్""0%"
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 0b184d241b55f4bdda26f0ca64f4ac8a8eb56373..b3bef9de2dccb7a864716c50bfd82274e11aeaa1 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -403,7 +403,7 @@
"อุปกรณ์อาจปิดเครื่องในไม่ช้า (%1$s)""%1$s - %2$s""อีก %1$s จึงจะชาร์จเต็ม"
- "%1$s - %2$s จนกว่าจะชาร์จเต็ม"
+ "%1$s - %2$sจนกว่าจะชาร์จเต็ม""ไม่ทราบ""กำลังชาร์จ""กำลังชาร์จ"
diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml
index 164aa93b19f8552e2b22429ee3f2bef45ff260f3..4bc995f1601bab67f2f399d426fc6eaa5ef32a1b 100644
--- a/packages/SettingsLib/res/values-uz/arrays.xml
+++ b/packages/SettingsLib/res/values-uz/arrays.xml
@@ -241,7 +241,7 @@
"“adb shell dumpsys gfxinfo” buyrug‘ida"
- "YOQILMAGAN"
+ "Yoqilmagan""Ortiqcha chizilgan joylarni ko‘rsatish""Muayyan rangdagi hududlarni ajratib belgilash"
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index 5dca4759a6290a2fea015ef7dd7da4930b9b31f0..0d3e8de0559d6599d800ea8b4f140ca8e440c0ff 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -201,7 +201,7 @@
"Ushbu foydalanuvchi uchun VPN sozlamalari mavjud emas""Ushbu foydalanuvchi uchun Modem rejimi sozlamalari mavjud emas""Ushbu foydalanuvchi uchun Internetga kirish nuqtasi (APN) sozlamalari mavjud emas"
- "USB orqali nosozliklarni tuzatish"
+ "USB orqali nosozliklarni aniqlash""USB orqali kompyuterga ulanganda tuzatish rejimi yoqilsin""USB orqali nosozliklarni tuzatishni taqiqlash""Xatoliklar hisoboti"
@@ -264,7 +264,7 @@
"Mobil internet har doim yoniq tursin, hatto Wi-Fi yoniq bo‘lsa ham (bir tarmoqdan ikkinchisiga tezroq o‘tish uchun).""Modem rejimida apparatli tezlashtirishdan foydalanish (agar mavjud bo‘lsa)""USB orqali nosozliklarni tuzatishga ruxsat berilsinmi?"
- "USB orqali nosozliklarni tuzatish faqat dasturlash maqsadlarida yoqiladi. Undan ma‘lumotlarni qurilmangiz va kompyuter o‘rtasida ko‘chirish, ilovalarni xabarnomasiz o‘rnatish va jurnal ma‘lumotlarini o‘qish uchun foydalaniladi."
+ "USB orqali nosozliklarni aniqlash faqat dasturlash maqsadlarida yoqiladi. Undan maʼlumotlarni qurilmangiz va kompyuter o‘rtasida ko‘chirish, ilovalarni xabarnomasiz o‘rnatish va jurnal maʼlumotlarini o‘qish uchun foydalaniladi.""USB orqali nosozliklarni tuzatishga berilgan ruxsat siz hisobingizga kirgan barcha kompyuterlar uchun bekor qilinsinmi?""Dasturlash sozlamalariga ruxsat berilsinmi?""Bu sozlamalar faqat dasturlash maqsadlariga mo‘ljallangan. Shuning uchun, ular qurilmangizga va undagi ilovalariga shikast yetkazib, noto‘g‘ri ishlashiga sabab bo‘lishi mumkin."
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 4e2d6fa76ad0eff34411043ded51cd93cac4b653..003c45751ecc9f775ac0e55ea782ba4970e2a03c 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -201,7 +201,7 @@
"Cài đặt VPN không khả dụng cho người dùng này""Cài đặt chia sẻ kết nối không khả dụng cho người dùng này""Cài đặt tên điểm truy cập không khả dụng cho người dùng này"
- "Gỡ lỗi USB"
+ "Gỡ lỗi qua USB""Bật chế độ gỡ lỗi khi kết nối USB""Thu hồi ủy quyền gỡ lỗi USB""Phím tắt báo cáo lỗi"
@@ -263,7 +263,7 @@
"Cho phép kiểm tra thuộc tính của chế độ xem""Luôn bật dữ liệu di động ngay cả khi Wi-Fi đang hoạt động (để chuyển đổi mạng nhanh).""Sử dụng tính năng tăng tốc phần cứng khi chia sẻ kết nối nếu có"
- "Cho phép gỡ lỗi USB?"
+ "Cho phép gỡ lỗi qua USB?""Gỡ lỗi USB chỉ dành cho mục đích phát triển. Hãy sử dụng tính năng này để sao chép dữ liệu giữa máy tính và thiết bị của bạn, cài đặt ứng dụng trên thiết bị của bạn mà không thông báo và đọc dữ liệu nhật ký.""Thu hồi quyền truy cập gỡ lỗi USB từ tất cả máy tính mà bạn đã ủy quyền trước đó?""Cho phép cài đặt phát triển?"
@@ -402,8 +402,8 @@
"Máy tính bảng có thể sắp tắt (%1$s)""Thiết bị có thể sắp tắt (%1$s)""%1$s - %2$s"
- "Còn %1$s cho tới khi được sạc đầy"
- "%1$s - %2$s cho tới khi được sạc đầy"
+ "%1$s nữa sẽ được sạc đầy"
+ "%1$s - %2$s nữa sẽ được sạc đầy""Không xác định""Đang sạc""đang sạc"
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 460142c6d73860ad4424f607d60573f5a00aacf6..bcf1f2df28494c8d0f71d3d64f3256ede1114556 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -60,7 +60,7 @@
"适中""快""很快"
- "%1$s/%2$s"
+ "%1$s / %2$s""已断开连接""正在断开连接...""正在连接..."
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index e85199f9ca0de227b92ad99fd1c7c5a7130dbde6..c64130210d37088d6723f80d092c86f96b7361c1 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -329,7 +329,7 @@
"顯示背景 ANR""為背景應用程式顯示「應用程式無回應」對話方塊""顯示通知管道警告"
- "當應用程式未經有效管道發佈通知時,在畫面上顯示警告"
+ "當應用程式未經有效管道發布通知時,在畫面上顯示警告""強制允許將應用程式寫入外部儲存空間""允許將任何應用程式寫入外部儲存空間 (無論資訊清單值為何)""將活動強制設為可調整大小"
diff --git a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java
index 320380fc0ed9d39deb92f198f503ba4f83526d56..869de0debd374a5d83dacd8a3ac9009f10465cf6 100644
--- a/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java
+++ b/packages/SettingsLib/src/com/android/settingslib/core/instrumentation/SharedPreferencesLogger.java
@@ -102,7 +102,8 @@ public class SharedPreferencesLogger implements SharedPreferences {
OnSharedPreferenceChangeListener listener) {
}
- private void logValue(String key, Object value) {
+ @VisibleForTesting
+ protected void logValue(String key, Object value) {
logValue(key, value, false /* forceLog */);
}
@@ -138,11 +139,18 @@ public class SharedPreferencesLogger implements SharedPreferences {
} else {
intVal = (int) floatValue;
}
+ } else if (value instanceof String) {
+ try {
+ intVal = Integer.parseInt((String) value);
+ } catch (NumberFormatException e) {
+ Log.w(LOG_TAG, "Tried to log unloggable object=" + value);
+ return;
+ }
} else {
- Log.w(LOG_TAG, "Tried to log unloggable object" + value);
+ Log.w(LOG_TAG, "Tried to log unloggable object=" + value);
return;
}
- // Pref key exists in set, log it's change in metrics.
+ // Pref key exists in set, log its change in metrics.
mMetricsFeature.action(SettingsEnums.PAGE_UNKNOWN,
SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE,
SettingsEnums.PAGE_UNKNOWN,
diff --git a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
index c7380c580e2f5fe79df8e9892d69a694e26d54d8..5ac788e1b374c2fd5f96b3c9893392bc06b2ee7b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
+++ b/packages/SettingsLib/src/com/android/settingslib/graph/SignalDrawable.java
@@ -22,6 +22,7 @@ import android.content.Context;
import android.content.res.ColorStateList;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
+import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.Path.Direction;
@@ -33,6 +34,7 @@ import android.graphics.drawable.DrawableWrapper;
import android.os.Handler;
import android.telephony.SignalStrength;
import android.util.LayoutDirection;
+import android.util.PathParser;
import com.android.settingslib.R;
import com.android.settingslib.Utils;
@@ -48,7 +50,6 @@ public class SignalDrawable extends DrawableWrapper {
private static final float VIEWPORT = 24f;
private static final float PAD = 2f / VIEWPORT;
- private static final float CUT_OUT = 7.9f / VIEWPORT;
private static final float DOT_SIZE = 3f / VIEWPORT;
private static final float DOT_PADDING = 1.5f / VIEWPORT;
@@ -65,21 +66,6 @@ public class SignalDrawable extends DrawableWrapper {
private static final long DOT_DELAY = 1000;
- private static float[][] X_PATH = new float[][]{
- {21.9f / VIEWPORT, 17.0f / VIEWPORT},
- {-1.1f / VIEWPORT, -1.1f / VIEWPORT},
- {-1.9f / VIEWPORT, 1.9f / VIEWPORT},
- {-1.9f / VIEWPORT, -1.9f / VIEWPORT},
- {-1.1f / VIEWPORT, 1.1f / VIEWPORT},
- {1.9f / VIEWPORT, 1.9f / VIEWPORT},
- {-1.9f / VIEWPORT, 1.9f / VIEWPORT},
- {1.1f / VIEWPORT, 1.1f / VIEWPORT},
- {1.9f / VIEWPORT, -1.9f / VIEWPORT},
- {1.9f / VIEWPORT, 1.9f / VIEWPORT},
- {1.1f / VIEWPORT, -1.1f / VIEWPORT},
- {-1.9f / VIEWPORT, -1.9f / VIEWPORT},
- };
-
private final Paint mForegroundPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final Paint mTransparentPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
private final int mDarkModeFillColor;
@@ -87,7 +73,11 @@ public class SignalDrawable extends DrawableWrapper {
private final Path mCutoutPath = new Path();
private final Path mForegroundPath = new Path();
private final Path mXPath = new Path();
+ private final Matrix mXScaleMatrix = new Matrix();
+ private final Path mScaledXPath = new Path();
private final Handler mHandler;
+ private final float mCutoutWidthFraction;
+ private final float mCutoutHeightFraction;
private float mDarkIntensity = -1;
private final int mIntrinsicSize;
private boolean mAnimating;
@@ -95,6 +85,14 @@ public class SignalDrawable extends DrawableWrapper {
public SignalDrawable(Context context) {
super(context.getDrawable(com.android.internal.R.drawable.ic_signal_cellular));
+ final String xPathString = context.getString(
+ com.android.internal.R.string.config_signalXPath);
+ mXPath.set(PathParser.createPathFromPathData(xPathString));
+ updateScaledXPath();
+ mCutoutWidthFraction = context.getResources().getFloat(
+ com.android.internal.R.dimen.config_signalCutoutWidthFraction);
+ mCutoutHeightFraction = context.getResources().getFloat(
+ com.android.internal.R.dimen.config_signalCutoutHeightFraction);
mDarkModeFillColor = Utils.getColorStateListDefaultColor(context,
R.color.dark_mode_icon_color_single_tone);
mLightModeFillColor = Utils.getColorStateListDefaultColor(context,
@@ -106,6 +104,15 @@ public class SignalDrawable extends DrawableWrapper {
setDarkIntensity(0);
}
+ private void updateScaledXPath() {
+ if (getBounds().isEmpty()) {
+ mXScaleMatrix.setScale(1f, 1f);
+ } else {
+ mXScaleMatrix.setScale(getBounds().width() / VIEWPORT, getBounds().height() / VIEWPORT);
+ }
+ mXPath.transform(mXScaleMatrix, mScaledXPath);
+ }
+
@Override
public int getIntrinsicWidth() {
return mIntrinsicSize;
@@ -170,6 +177,7 @@ public class SignalDrawable extends DrawableWrapper {
@Override
protected void onBoundsChange(Rect bounds) {
super.onBoundsChange(bounds);
+ updateScaledXPath();
invalidateSelf();
}
@@ -205,19 +213,15 @@ public class SignalDrawable extends DrawableWrapper {
canvas.drawPath(mCutoutPath, mTransparentPaint);
canvas.drawPath(mForegroundPath, mForegroundPaint);
} else if (isInState(STATE_CUT)) {
- float cut = (CUT_OUT * width);
- mCutoutPath.moveTo(width - padding, height - padding);
- mCutoutPath.rLineTo(-cut, 0);
- mCutoutPath.rLineTo(0, -cut);
- mCutoutPath.rLineTo(cut, 0);
- mCutoutPath.rLineTo(0, cut);
+ float cutX = (mCutoutWidthFraction * width / VIEWPORT);
+ float cutY = (mCutoutHeightFraction * height / VIEWPORT);
+ mCutoutPath.moveTo(width, height);
+ mCutoutPath.rLineTo(-cutX, 0);
+ mCutoutPath.rLineTo(0, -cutY);
+ mCutoutPath.rLineTo(cutX, 0);
+ mCutoutPath.rLineTo(0, cutY);
canvas.drawPath(mCutoutPath, mTransparentPaint);
- mXPath.reset();
- mXPath.moveTo(X_PATH[0][0] * width, X_PATH[0][1] * height);
- for (int i = 1; i < X_PATH.length; i++) {
- mXPath.rLineTo(X_PATH[i][0] * width, X_PATH[i][1] * height);
- }
- canvas.drawPath(mXPath, mForegroundPaint);
+ canvas.drawPath(mScaledXPath, mForegroundPaint);
}
if (isRtl) {
canvas.restore();
diff --git a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationAccesses.java b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationAccesses.java
index ea39317fb045b86e32cecec736e9f1be763e8362..81ca9eaf8e36b850362544f8a77509da0eb6f580 100644
--- a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationAccesses.java
+++ b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationAccesses.java
@@ -111,8 +111,9 @@ public class RecentLocationAccesses {
for (int op : LOCATION_OPS) {
final String permission = AppOpsManager.opToPermission(op);
final int permissionFlags = pm.getPermissionFlags(permission, packageName, user);
- if (PermissionChecker.checkPermission(mContext, permission, -1, uid, packageName)
- == PermissionChecker.PERMISSION_GRANTED) {
+ if (PermissionChecker.checkPermissionForPreflight(mContext, permission,
+ PermissionChecker.PID_UNKNOWN, uid, packageName)
+ == PermissionChecker.PERMISSION_GRANTED) {
if ((permissionFlags
& PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED) == 0) {
showApp = false;
diff --git a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java
index 6fd874989c3584246b0c9ebb5b4acd5d6b44bec5..104cc8f9841c267ba11d777a105c37877a8a5d09 100644
--- a/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java
+++ b/packages/SettingsLib/src/com/android/settingslib/location/RecentLocationApps.java
@@ -90,12 +90,16 @@ public class RecentLocationApps {
for (int i = 0; i < appOpsCount; ++i) {
AppOpsManager.PackageOps ops = appOps.get(i);
+ // Don't show the Android System in the list - it's not actionable for the user.
+ // Also don't show apps belonging to background users except managed users.
String packageName = ops.getPackageName();
int uid = ops.getUid();
final UserHandle user = UserHandle.getUserHandleForUid(uid);
- // Don't show apps belonging to background users except managed users.
- if (!profiles.contains(user)) {
+ boolean isAndroidOs =
+ (uid == android.os.Process.SYSTEM_UID) && ANDROID_SYSTEM_PACKAGE_NAME.equals(
+ packageName);
+ if (isAndroidOs || !profiles.contains(user)) {
continue;
}
@@ -106,9 +110,9 @@ public class RecentLocationApps {
final String permission = AppOpsManager.opToPermission(op);
final int permissionFlags = pm.getPermissionFlags(permission, packageName,
user);
- if (PermissionChecker.checkPermission(mContext, permission, -1, uid,
- packageName)
- == PermissionChecker.PERMISSION_GRANTED) {
+ if (PermissionChecker.checkPermissionForPreflight(mContext, permission,
+ PermissionChecker.PID_UNKNOWN, uid, packageName)
+ == PermissionChecker.PERMISSION_GRANTED) {
if ((permissionFlags
& PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED)
== 0) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
index b15ea980ae15d441eb6ee67f7859408d0bf767d0..23e2949372aac300f518e865c65b4e979a118ec9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/net/DataUsageUtils.java
@@ -18,11 +18,11 @@ package com.android.settingslib.net;
import android.content.Context;
import android.net.NetworkTemplate;
-import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.util.Log;
+import com.android.internal.util.ArrayUtils;
/**
* Utils class for data usage
*/
@@ -34,19 +34,25 @@ public class DataUsageUtils {
*/
public static NetworkTemplate getMobileTemplate(Context context, int subId) {
final TelephonyManager telephonyManager = context.getSystemService(
- TelephonyManager.class).createForSubscriptionId(subId);
+ TelephonyManager.class);
final SubscriptionManager subscriptionManager = context.getSystemService(
SubscriptionManager.class);
- final SubscriptionInfo info = subscriptionManager.getActiveSubscriptionInfo(subId);
final NetworkTemplate mobileAll = NetworkTemplate.buildTemplateMobileAll(
telephonyManager.getSubscriberId(subId));
- if (info == null) {
+ if (!subscriptionManager.isActiveSubId(subId)) {
Log.i(TAG, "Subscription is not active: " + subId);
return mobileAll;
}
- // Use old API to build networkTemplate
- return NetworkTemplate.normalize(mobileAll, telephonyManager.getMergedSubscriberIds());
+ final String[] mergedSubscriberIds = telephonyManager.createForSubscriptionId(subId)
+ .getMergedSubscriberIdsFromGroup();
+
+ if (ArrayUtils.isEmpty(mergedSubscriberIds)) {
+ Log.i(TAG, "mergedSubscriberIds is null.");
+ return mobileAll;
+ }
+
+ return NetworkTemplate.normalize(mobileAll, mergedSubscriberIds);
}
}
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 0a3f2b5c23139f7c3cfd30e9317286944a9098dd..52214904a783b769e03d94a434db4ab59193c436 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -1658,7 +1658,7 @@ public class AccessPoint implements Comparable {
void update(@Nullable WifiConfiguration config) {
mConfig = config;
- if (mConfig != null) {
+ if (mConfig != null && !isPasspoint()) {
ssid = removeDoubleQuotes(mConfig.SSID);
}
networkId = config != null ? config.networkId : WifiConfiguration.INVALID_NETWORK_ID;
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java
index 8f51dece64e551017db6e5678f79c12cf3811a79..89de81fde889edbeb60b400ef78cdc8245cb75fc 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/core/instrumentation/SharedPreferenceLoggerTest.java
@@ -162,4 +162,33 @@ public class SharedPreferenceLoggerTest {
"tag/key:com.android.settings",
0);
}
+
+ @Test
+ public void putString_shouldNotLogInitialPut() {
+ mSharedPrefLogger.logValue(TEST_KEY, "1");
+ mSharedPrefLogger.logValue(TEST_KEY, "2");
+ mSharedPrefLogger.logValue(TEST_KEY, "62");
+ mSharedPrefLogger.logValue(TEST_KEY, "0");
+
+ verify(mMetricsFeature, times(3)).action(eq(SettingsEnums.PAGE_UNKNOWN),
+ eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
+ eq(SettingsEnums.PAGE_UNKNOWN),
+ eq(TEST_TAGGED_KEY),
+ anyInt());
+ }
+
+ @Test
+ public void putString_shouldNotLogAnyNonIntegers() {
+ mSharedPrefLogger.logValue(TEST_KEY, "string");
+ mSharedPrefLogger.logValue(TEST_KEY, "not an int");
+ mSharedPrefLogger.logValue(TEST_KEY, "1.234f");
+ mSharedPrefLogger.logValue(TEST_KEY, "4.2");
+ mSharedPrefLogger.logValue(TEST_KEY, "3.0");
+
+ verify(mMetricsFeature, times(0)).action(eq(SettingsEnums.PAGE_UNKNOWN),
+ eq(SettingsEnums.ACTION_SETTINGS_PREFERENCE_CHANGE),
+ eq(SettingsEnums.PAGE_UNKNOWN),
+ eq(TEST_TAGGED_KEY),
+ anyInt());
+ }
}
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageUtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageUtilsTest.java
index 821c0b3a23f71021e30960d45dd84ae91a33f244..5cae6116a59c9cb9997492781c6f00c6ed2fd5ff 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageUtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/net/DataUsageUtilsTest.java
@@ -18,6 +18,7 @@ package com.android.settingslib.net;
import static com.google.common.truth.Truth.assertThat;
+import static org.mockito.Matchers.anyInt;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.when;
@@ -37,13 +38,13 @@ import org.mockito.MockitoAnnotations;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.RuntimeEnvironment;
-import java.util.ArrayList;
import java.util.List;
@RunWith(RobolectricTestRunner.class)
public class DataUsageUtilsTest {
private static final int SUB_ID = 1;
+ private static final int SUB_ID_2 = 2;
private static final String SUBSCRIBER_ID = "Test Subscriber";
private static final String SUBSCRIBER_ID_2 = "Test Subscriber 2";
@@ -66,21 +67,28 @@ public class DataUsageUtilsTest {
mContext = spy(RuntimeEnvironment.application);
when(mContext.getSystemService(TelephonyManager.class)).thenReturn(mTelephonyManager);
- when(mTelephonyManager.createForSubscriptionId(SUB_ID)).thenReturn(mTelephonyManager);
when(mContext.getSystemService(SubscriptionManager.class)).thenReturn(mSubscriptionManager);
when(mTelephonyManager.getSubscriberId(SUB_ID)).thenReturn(SUBSCRIBER_ID);
- when(mTelephonyManager.getMergedSubscriberIds()).thenReturn(
- new String[]{SUBSCRIBER_ID, SUBSCRIBER_ID_2});
-
- mInfos = new ArrayList<>();
- mInfos.add(mInfo1);
- mInfos.add(mInfo2);
- when(mSubscriptionManager.getSubscriptionsInGroup(mParcelUuid)).thenReturn(mInfos);
+ when(mTelephonyManager.getSubscriberId(SUB_ID_2)).thenReturn(SUBSCRIBER_ID_2);
+ when(mTelephonyManager.createForSubscriptionId(anyInt())).thenReturn(mTelephonyManager);
+ when(mSubscriptionManager.isActiveSubId(anyInt())).thenReturn(true);
}
@Test
public void getMobileTemplate_infoNull_returnMobileAll() {
- when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(null);
+ when(mSubscriptionManager.isActiveSubId(SUB_ID)).thenReturn(false);
+
+ final NetworkTemplate networkTemplate = DataUsageUtils.getMobileTemplate(mContext, SUB_ID);
+ assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue();
+ assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID_2)).isFalse();
+ }
+
+ @Test
+ public void getMobileTemplate_groupUuidNull_returnMobileAll() {
+ when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(mInfo1);
+ when(mInfo1.getGroupUuid()).thenReturn(null);
+ when(mTelephonyManager.getMergedSubscriberIdsFromGroup())
+ .thenReturn(new String[] {SUBSCRIBER_ID});
final NetworkTemplate networkTemplate = DataUsageUtils.getMobileTemplate(mContext, SUB_ID);
assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue();
@@ -88,9 +96,11 @@ public class DataUsageUtilsTest {
}
@Test
- public void getMobileTemplate_infoExisted_returnMobileMerged() {
+ public void getMobileTemplate_groupUuidExist_returnMobileMerged() {
when(mSubscriptionManager.getActiveSubscriptionInfo(SUB_ID)).thenReturn(mInfo1);
when(mInfo1.getGroupUuid()).thenReturn(mParcelUuid);
+ when(mTelephonyManager.getMergedSubscriberIdsFromGroup())
+ .thenReturn(new String[] {SUBSCRIBER_ID, SUBSCRIBER_ID_2});
final NetworkTemplate networkTemplate = DataUsageUtils.getMobileTemplate(mContext, SUB_ID);
assertThat(networkTemplate.matchesSubscriberId(SUBSCRIBER_ID)).isTrue();
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index 9d398b5b69a1dfc5ae240e31e46da1164253ec8b..d884fab518ced25814c45b588e748c43a134205f 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -56,6 +56,7 @@ import java.time.DateTimeException;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Map;
+import java.util.Set;
import java.util.zip.CRC32;
/**
@@ -241,6 +242,8 @@ public class SettingsBackupAgent extends BackupAgentHelper {
HashSet movedToGlobal = new HashSet();
Settings.System.getMovedToGlobalSettings(movedToGlobal);
Settings.Secure.getMovedToGlobalSettings(movedToGlobal);
+ Set movedToSecure = getMovedToSecureSettings();
+
byte[] restoredWifiSupplicantData = null;
byte[] restoredWifiIpConfigData = null;
@@ -259,16 +262,17 @@ public class SettingsBackupAgent extends BackupAgentHelper {
switch (key) {
case KEY_SYSTEM :
- restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal);
+ restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal,
+ movedToSecure);
mSettingsHelper.applyAudioSettings();
break;
case KEY_SECURE :
- restoreSettings(data, Settings.Secure.CONTENT_URI, movedToGlobal);
+ restoreSettings(data, Settings.Secure.CONTENT_URI, movedToGlobal, null);
break;
case KEY_GLOBAL :
- restoreSettings(data, Settings.Global.CONTENT_URI, null);
+ restoreSettings(data, Settings.Global.CONTENT_URI, null, movedToSecure);
break;
case KEY_WIFI_SUPPLICANT :
@@ -347,20 +351,22 @@ public class SettingsBackupAgent extends BackupAgentHelper {
HashSet movedToGlobal = new HashSet();
Settings.System.getMovedToGlobalSettings(movedToGlobal);
Settings.Secure.getMovedToGlobalSettings(movedToGlobal);
+ Set movedToSecure = getMovedToSecureSettings();
// system settings data first
int nBytes = in.readInt();
if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of settings data");
byte[] buffer = new byte[nBytes];
in.readFully(buffer, 0, nBytes);
- restoreSettings(buffer, nBytes, Settings.System.CONTENT_URI, movedToGlobal);
+ restoreSettings(buffer, nBytes, Settings.System.CONTENT_URI, movedToGlobal,
+ movedToSecure);
// secure settings
nBytes = in.readInt();
if (DEBUG_BACKUP) Log.d(TAG, nBytes + " bytes of secure settings data");
if (nBytes > buffer.length) buffer = new byte[nBytes];
in.readFully(buffer, 0, nBytes);
- restoreSettings(buffer, nBytes, Settings.Secure.CONTENT_URI, movedToGlobal);
+ restoreSettings(buffer, nBytes, Settings.Secure.CONTENT_URI, movedToGlobal, null);
// Global only if sufficiently new
if (version >= FULL_BACKUP_ADDED_GLOBAL) {
@@ -369,7 +375,8 @@ public class SettingsBackupAgent extends BackupAgentHelper {
if (nBytes > buffer.length) buffer = new byte[nBytes];
in.readFully(buffer, 0, nBytes);
movedToGlobal.clear(); // no redirection; this *is* the global namespace
- restoreSettings(buffer, nBytes, Settings.Global.CONTENT_URI, movedToGlobal);
+ restoreSettings(buffer, nBytes, Settings.Global.CONTENT_URI, movedToGlobal,
+ movedToSecure);
}
// locale
@@ -440,6 +447,13 @@ public class SettingsBackupAgent extends BackupAgentHelper {
}
}
+ private Set getMovedToSecureSettings() {
+ Set movedToSecureSettings = new HashSet<>();
+ Settings.Global.getMovedToSecureSettings(movedToSecureSettings);
+ Settings.System.getMovedToSecureSettings(movedToSecureSettings);
+ return movedToSecureSettings;
+ }
+
private long[] readOldChecksums(ParcelFileDescriptor oldState) throws IOException {
long[] stateChecksums = new long[STATE_SIZE];
@@ -564,7 +578,7 @@ public class SettingsBackupAgent extends BackupAgentHelper {
}
private void restoreSettings(BackupDataInput data, Uri contentUri,
- HashSet movedToGlobal) {
+ HashSet movedToGlobal, Set movedToSecure) {
byte[] settings = new byte[data.getDataSize()];
try {
data.readEntityData(settings, 0, settings.length);
@@ -572,11 +586,11 @@ public class SettingsBackupAgent extends BackupAgentHelper {
Log.e(TAG, "Couldn't read entity data");
return;
}
- restoreSettings(settings, settings.length, contentUri, movedToGlobal);
+ restoreSettings(settings, settings.length, contentUri, movedToGlobal, movedToSecure);
}
private void restoreSettings(byte[] settings, int bytes, Uri contentUri,
- HashSet movedToGlobal) {
+ HashSet movedToGlobal, Set movedToSecure) {
if (DEBUG) {
Log.i(TAG, "restoreSettings: " + contentUri);
}
@@ -651,9 +665,14 @@ public class SettingsBackupAgent extends BackupAgentHelper {
continue;
}
- final Uri destination = (movedToGlobal != null && movedToGlobal.contains(key))
- ? Settings.Global.CONTENT_URI
- : contentUri;
+ final Uri destination;
+ if (movedToGlobal != null && movedToGlobal.contains(key)) {
+ destination = Settings.Global.CONTENT_URI;
+ } else if (movedToSecure != null && movedToSecure.contains(key)) {
+ destination = Settings.Secure.CONTENT_URI;
+ } else {
+ destination = contentUri;
+ }
settingsHelper.restoreValue(this, cr, contentValues, destination, key, value,
mRestoredFromSdkInt);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index 4309765089f1545beb9a3b75147ee5eea122387c..e18a3ca45ca0cd7c09c6fee7d822da4530d6ff22 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1056,6 +1056,9 @@ class SettingsProtoDumpUtil {
dumpSetting(s, p,
Settings.Global.NOTIFICATION_SNOOZE_OPTIONS,
GlobalSettingsProto.Notification.SNOOZE_OPTIONS);
+ dumpSetting(s, p,
+ Settings.Global.NOTIFICATION_BUBBLES,
+ GlobalSettingsProto.Notification.BUBBLES);
dumpSetting(s, p,
Settings.Global.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS,
GlobalSettingsProto.Notification.SMART_REPLIES_IN_NOTIFICATIONS_FLAGS);
@@ -1946,9 +1949,6 @@ class SettingsProtoDumpUtil {
dumpSetting(s, p,
Settings.Secure.SILENCE_GESTURE,
SecureSettingsProto.Gesture.SILENCE_ENABLED);
- dumpSetting(s, p,
- Settings.Secure.SILENCE_NOTIFICATION_GESTURE_COUNT,
- SecureSettingsProto.Gesture.SILENCE_NOTIFICATION_COUNT);
dumpSetting(s, p,
Settings.Secure.SILENCE_TIMER_GESTURE_COUNT,
SecureSettingsProto.Gesture.SILENCE_TIMER_COUNT);
@@ -1959,6 +1959,19 @@ class SettingsProtoDumpUtil {
dumpSetting(s, p,
Settings.Secure.SKIP_GESTURE,
SecureSettingsProto.Gesture.SKIP_ENABLED);
+
+ dumpSetting(s, p,
+ Settings.Secure.SILENCE_ALARMS_TOUCH_COUNT,
+ SecureSettingsProto.Gesture.SILENCE_ALARMS_TOUCH_COUNT);
+ dumpSetting(s, p,
+ Settings.Secure.SILENCE_CALL_TOUCH_COUNT,
+ SecureSettingsProto.Gesture.SILENCE_CALLS_TOUCH_COUNT);
+ dumpSetting(s, p,
+ Settings.Secure.SILENCE_TIMER_TOUCH_COUNT,
+ SecureSettingsProto.Gesture.SILENCE_TIMER_TOUCH_COUNT);
+ dumpSetting(s, p,
+ Settings.Secure.SKIP_TOUCH_COUNT,
+ SecureSettingsProto.Gesture.SKIP_TOUCH_COUNT);
p.end(gestureToken);
dumpSetting(s, p,
@@ -2143,7 +2156,7 @@ class SettingsProtoDumpUtil {
Settings.Secure.NOTIFICATION_BADGING,
SecureSettingsProto.Notification.BADGING);
dumpSetting(s, p,
- Settings.Secure.NOTIFICATION_BUBBLES,
+ Settings.Global.NOTIFICATION_BUBBLES,
SecureSettingsProto.Notification.BUBBLES);
dumpSetting(s, p,
Settings.Secure.SHOW_NOTE_ABOUT_NOTIFICATION_HIDING,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 8371cb34d682e78dd45d69029494f99cedc042a7..417475376e389a414384441100f4c62106f52dcb 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -3238,7 +3238,7 @@ public class SettingsProvider extends ContentProvider {
}
private final class UpgradeController {
- private static final int SETTINGS_VERSION = 182;
+ private static final int SETTINGS_VERSION = 183;
private final int mUserId;
@@ -4265,19 +4265,7 @@ public class SettingsProvider extends ContentProvider {
if (currentVersion == 173) {
// Version 173: Set the default value for Secure Settings: NOTIFICATION_BUBBLES
-
- final SettingsState secureSettings = getSecureSettingsLocked(userId);
-
- final Setting bubblesSetting = secureSettings.getSettingLocked(
- Secure.NOTIFICATION_BUBBLES);
-
- if (bubblesSetting.isNull()) {
- secureSettings.insertSettingLocked(Secure.NOTIFICATION_BUBBLES,
- getContext().getResources().getBoolean(
- R.bool.def_notification_bubbles) ? "1" : "0", null,
- true, SettingsState.SYSTEM_PACKAGE_NAME);
- }
-
+ // Removed. Moved NOTIFICATION_BUBBLES to Global Settings.
currentVersion = 174;
}
@@ -4401,14 +4389,9 @@ public class SettingsProvider extends ContentProvider {
if (currentVersion == 179) {
// Version 178: Reset the default for Secure Settings: NOTIFICATION_BUBBLES
// This is originally set in version 173, however, the default value changed
- // so this step is to ensure the value is updated to the correct defaulte
- final SettingsState secureSettings = getSecureSettingsLocked(userId);
-
- secureSettings.insertSettingLocked(Secure.NOTIFICATION_BUBBLES,
- getContext().getResources().getBoolean(
- R.bool.def_notification_bubbles) ? "1" : "0", null,
- true, SettingsState.SYSTEM_PACKAGE_NAME);
+ // so this step is to ensure the value is updated to the correct default.
+ // Removed. Moved NOTIFICATION_BUBBLES to Global Settings.
currentVersion = 180;
}
@@ -4462,6 +4445,20 @@ public class SettingsProvider extends ContentProvider {
currentVersion = 182;
}
+ if (currentVersion == 182) {
+ // Remove secure bubble settings.
+ getSecureSettingsLocked(userId).deleteSettingLocked(
+ Secure.NOTIFICATION_BUBBLES);
+
+ // Add global bubble settings.
+ getGlobalSettingsLocked().insertSettingLocked(Global.NOTIFICATION_BUBBLES,
+ getContext().getResources().getBoolean(
+ R.bool.def_notification_bubbles) ? "1" : "0", null /* tag */,
+ true /* makeDefault */, SettingsState.SYSTEM_PACKAGE_NAME);
+
+ currentVersion = 183;
+ }
+
// vXXX: Add new settings above this point.
if (currentVersion != newVersion) {
diff --git a/packages/Shell/res/values-in/strings.xml b/packages/Shell/res/values-in/strings.xml
index cf2ebe504c0fb152090fe63962d55a5774e3248d..5c5ba816e5d7ff6c8392cdef32dde74005fa7bcd 100644
--- a/packages/Shell/res/values-in/strings.xml
+++ b/packages/Shell/res/values-in/strings.xml
@@ -24,10 +24,10 @@
"Harap tunggu...""Laporan bug akan segera muncul di ponsel""Pilih untuk membagikan laporan bug Anda"
- "Tap untuk membagikan laporan bug"
+ "Ketuk untuk membagikan laporan bug""Pilih untuk membagikan laporan bug tanpa screenshot atau menunggu screenshot selesai"
- "Tap untuk membagikan laporan bug tanpa screenshot atau menunggu screenshot selesai"
- "Tap untuk membagikan laporan bug tanpa screenshot atau menunggu screenshot selesai"
+ "Ketuk untuk membagikan laporan bug tanpa screenshot atau menunggu screenshot selesai"
+ "Ketuk untuk membagikan laporan bug tanpa screenshot atau menunggu screenshot selesai""Laporan bug berisi data dari berbagai file log sistem, yang mungkin mencakup data yang dianggap sensitif (seperti data penggunaan aplikasi dan lokasi). Hanya bagikan laporan bug dengan aplikasi dan orang yang Anda percaya.""Jangan tampilkan lagi""Laporan bug"
diff --git a/packages/Shell/res/values-zh-rTW/strings.xml b/packages/Shell/res/values-zh-rTW/strings.xml
index fc6397dc2013336ff7d6c2fb149382e45906c8a4..96671c8c0175a2b551b3f91e0156aac345e07f04 100644
--- a/packages/Shell/res/values-zh-rTW/strings.xml
+++ b/packages/Shell/res/values-zh-rTW/strings.xml
@@ -25,9 +25,9 @@
"系統即將在手機上顯示錯誤報告""選取即可分享錯誤報告""輕觸即可分享錯誤報告"
- "選取即可分享不包含螢幕擷取畫面的錯誤報告;你也可以等候螢幕畫面擷取完畢"
- "輕觸即可分享無螢幕擷圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
- "輕觸即可分享無螢幕擷圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "選取即可分享不包含螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "輕觸即可分享無螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢"
+ "輕觸即可分享無螢幕截圖的錯誤報告;你也可以等候螢幕畫面擷取完畢""錯誤報告的資料來自系統的各種記錄檔,當中可能包含敏感資料 (例如應用程式使用情形和位置資料)。請務必只與你信任的使用者和應用程式分享錯誤報告。""不要再顯示""錯誤報告"
@@ -35,9 +35,9 @@
"無法在 ZIP 檔案中加入錯誤報告""未命名""詳細資料"
- "螢幕擷取畫面"
- "已成功拍攝螢幕擷取畫面。"
- "無法拍攝螢幕擷取畫面。"
+ "螢幕截圖"
+ "已成功拍攝螢幕截圖。"
+ "無法拍攝螢幕截圖。""錯誤報告 #%d 的詳細資料""檔案名稱""錯誤標題"
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index 70c68b6a042cd693937161ca0cfd64e6dabb1cf5..c077fcd95a7141286eaa15b7226b15cb43a53d27 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -75,10 +75,7 @@ android_library {
"ims-common",
],
- aaptflags: [
- "--extra-packages",
- "com.android.keyguard",
- ],
+ kotlincflags: ["-Xjvm-default=enable"],
plugins: ["dagger2-compiler-2.19"],
}
@@ -117,6 +114,7 @@ android_library {
"androidx.lifecycle_lifecycle-extensions",
"androidx.dynamicanimation_dynamicanimation",
"androidx-constraintlayout_constraintlayout",
+ "iconloader_base",
"SystemUI-tags",
"SystemUI-proto",
"metrics-helper-lib",
@@ -134,9 +132,10 @@ android_library {
"telephony-ext",
"ims-common",
],
+ kotlincflags: ["-Xjvm-default=enable"],
aaptflags: [
"--extra-packages",
- "com.android.keyguard:com.android.systemui",
+ "com.android.systemui",
],
plugins: ["dagger2-compiler-2.19"],
}
@@ -165,11 +164,9 @@ android_app {
"telephony-ext",
],
+ kotlincflags: ["-Xjvm-default=enable"],
+
dxflags: ["--multi-dex"],
- aaptflags: [
- "--extra-packages",
- "com.android.keyguard",
- ],
required: ["privapp_whitelist_com.android.systemui"],
}
@@ -186,10 +183,6 @@ android_app {
privileged: true,
dxflags: ["--multi-dex"],
- aaptflags: [
- "--extra-packages",
- "com.android.keyguard",
- ],
optimize: {
proguard_flags_files: ["proguard.flags", "legacy/recents/proguard.flags"],
},
@@ -203,6 +196,8 @@ android_app {
"ims-common",
],
+ kotlincflags: ["-Xjvm-default=enable"],
+
srcs: [
"legacy/recents/src/**/*.java",
"legacy/recents/src/**/I*.aidl",
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 17274f418a1e5e1fb79f42e4e992577ba1e2a1af..403e894a68e421f3eaf0155c357b3025841fc384 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -20,6 +20,7 @@
xmlns:androidprv="http://schemas.android.com/apk/prv/res/android"
package="com.android.systemui"
android:sharedUserId="android.uid.systemui"
+ xmlns:tools="http://schemas.android.com/tools"
coreApp="true">
@@ -259,7 +260,8 @@
android:theme="@style/Theme.SystemUI"
android:defaultToDeviceProtectedStorage="true"
android:directBootAware="true"
- android:appComponentFactory="androidx.core.app.CoreComponentFactory">
+ tools:replace="android:appComponentFactory"
+ android:appComponentFactory=".SystemUIAppComponentFactory">
@@ -607,6 +609,10 @@
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
android:process=":ui"
android:visibleToInstantApps="true">
+
+
+
+
diff --git a/packages/SystemUI/docs/dagger.md b/packages/SystemUI/docs/dagger.md
index c2159df1cee183fd6b4f9090db2ce1fbf720f2bd..c440fba10135b347aa13fc453e76f530462596fc 100644
--- a/packages/SystemUI/docs/dagger.md
+++ b/packages/SystemUI/docs/dagger.md
@@ -53,7 +53,7 @@ variants (like other form factors e.g. Car).
### Adding injection to a new SystemUI object
Anything that depends on any `@Singleton` provider from SystemUIRootComponent
-should be declared as an `@Subcomponent` of the root component, this requires
+should be declared as a `@Subcomponent` of the root component. This requires
declaring your own interface for generating your own modules or just the
object you need injected. The subcomponent also needs to be added to
SystemUIRootComponent in SystemUIFactory so it can be acquired.
@@ -204,6 +204,13 @@ public CustomView(@Named(VIEW_CONTEXT) Context themedViewContext, AttributeSet a
}
```
+## Updating Dagger2
+
+Binaries can be downloaded from https://repo1.maven.org/maven2/com/google/dagger/ and then loaded
+into
+[/prebuilts/tools/common/m2/repository/com/google/dagger/](http://cs/android/prebuilts/tools/common/m2/repository/com/google/dagger/)
+
+
## TODO List
- Eliminate usages of Dependency#get
diff --git a/packages/SystemUI/docs/physics-animation-layout.md b/packages/SystemUI/docs/physics-animation-layout.md
index 488c4657333f8ad209809e4d250ad7a71ba3317a..de2ee9e04b302beaf6eb82111d8b8055e6449220 100644
--- a/packages/SystemUI/docs/physics-animation-layout.md
+++ b/packages/SystemUI/docs/physics-animation-layout.md
@@ -1,7 +1,11 @@
# Physics Animation Layout
## Overview
-**PhysicsAnimationLayout** works with an implementation of **PhysicsAnimationController** to construct and maintain physics animations for each of its child views. During the initial construction of the animations, the layout queries the controller for configuration settings such as which properties to animate, which animations to chain together, and what stiffness or bounciness to use. Once the animations are built to the controller’s specifications, the controller can then ask the layout to start, stop and manipulate them arbitrarily to achieve any desired animation effect. The controller is notified whenever children are added or removed from the layout, so that it can animate their entrance or exit, respectively.
+**PhysicsAnimationLayout** works with implementations of **PhysicsAnimationController** to configure and run physics-based animations for each of its child views. During the initial construction of the animations, the layout queries the controller for basic configuration settings such as which properties to animate, which animations to chain together, and the default physics parameters to use.
+
+Once the animations are built, the controller can access **PhysicsPropertyAnimator** instances to run them. The animator behaves similarly to the familiar `ViewPropertyAnimator`, with the ability to animate `alpha`, `translation`, and `scale` values. It also supports additional functionality such as `followAnimatedTargetAlongPath` for more advanced motion.
+
+The controller is notified whenever children are added or removed from the layout, so that it can animate their entrance or exit, respectively.
An example usage is Bubbles, which uses a PhysicsAnimationLayout for its stack of bubbles. Bubbles has controller subclasses including StackAnimationController and ExpansionAnimationController. StackAnimationController tells the layout to configure the translation animations to be chained (for the ‘following’ drag effect), and has methods such as ```moveStack(x, y)``` to animate the stack to a given point. ExpansionAnimationController asks for no animations to be chained, and exposes methods like ```expandStack()``` and ```collapseStack()```, which animate the bubbles to positions along the bottom of the screen.
@@ -27,7 +31,7 @@ Returns a SpringForce instance to use for animations of the given property. This
### Animation Control Methods
Once the layout has used the controller’s configuration properties to build the animations, the controller can use them to actually run animations. This is done for two reasons - reacting to a view being added or removed, or responding to another class (such as a touch handler or broadcast receiver) requesting an animation. ```onChildAdded```, ```onChildRemoved```, and ```setChildVisibility``` are called automatically by the layout, giving the controller the opportunity to animate the child in/out/visible/gone. Custom methods are called by anyone with access to the controller instance to do things like expand, collapse, or move the child views.
-In either case, the controller can use `super.animationForChild` to retrieve a `PhysicsPropertyAnimator` instance. This object behaves similarly to the `ViewPropertyAnimator` object you would receive from `View.animate()`.
+In either case, the controller can use `super.animationForChild` to retrieve a `PhysicsPropertyAnimator` instance. This object behaves similarly to the `ViewPropertyAnimator` object you would receive from `View.animate()`.
#### PhysicsPropertyAnimator
@@ -36,9 +40,14 @@ Like `ViewPropertyAnimator`, `PhysicsPropertyAnimator` provides the following me
- `translationX/Y/Z(float)`
- `scaleX/Y(float)`
+...as well as shortcut methods to reduce the amount of boilerplate code needed for common use cases:
+- `position(float, float, Runnable…)`, which starts translationX and translationY animations, and calls the provided callbacks only when both animations have completed.
+- `followAnimatedTargetAlongPath(Path, int, TimeInterpolator)`, which animates a ‘target’ point along the given path using a traditional Animator. As the target moves, the translationX/Y physics animations are updated to follow the target, similarly to how they might follow a touch event location. This results in the view roughly following the path, but with natural motion that takes momentum into account. For example, if a path makes a 90 degree turn to the right, the physics animations will cause the view to curve naturally towards the new trajectory.
+
It also provides the following configuration methods:
- `withStartDelay(int)`, for starting the animation after a given delay.
- `withStartVelocity(float)`, for starting the animation with the given start velocity.
+- `withStiffness(float)` and `withDampingRatio(float)`, for overriding the default physics param values returned by the controller’s getSpringForce method.
- `withPositionStartVelocities(float, float)`, for setting specific start velocities for TRANSLATION_X and TRANSLATION_Y, since these typically differ.
- `start(Runnable)`, to start the animation, with an optional end action to call when the animations for every property (including chained animations) have completed.
@@ -61,8 +70,7 @@ The animator has additional functionality to reduce the amount of boilerplate re
- Often, animations will set starting values for properties before the animation begins. Property methods like `translationX` have an overloaded variant: `translationX(from, to)`. When `start()` is called, the animation will set the view's translationX property to `from` before beginning the animation to `to`.
- We may want to use different end actions for each property. For example, if we're animating a view to the bottom of the screen, and also fading it out, we might want to perform an action as soon as the fade out is complete. We can use `alpha(to, endAction)`, which will call endAction as soon as the alpha animation is finished. A special case is `position(x, y, endAction)`, where the endAction is called when both translationX and translationY animations have completed.
-
-`PhysicsAnimationController` also provides `animationsForChildrenFromIndex(int, ChildAnimationConfigurator)`. This is a convenience method for starting animations on multiple child views, starting at the given index. The `ChildAnimationConfigurator` is called with a `PhysicsPropertyAnimator` for each child, where calls to methods like `translationX` and `withStartVelocity` can be made. `animationsForChildrenFromIndex` returns a `MultiAnimationStarter` with a single method, `startAll(endAction)`, which starts all of the animations and calls the end action when they have all completed.
+- `PhysicsAnimationController` also provides `animationsForChildrenFromIndex(int, ChildAnimationConfigurator)`. This is a convenience method for starting animations on multiple child views, starting at the given index. The `ChildAnimationConfigurator` is called with a `PhysicsPropertyAnimator` for each child, where calls to methods like `translationX` and `withStartVelocity` can be made. `animationsForChildrenFromIndex` returns a `MultiAnimationStarter` with a single method, `startAll(endAction)`, which starts all of the animations and calls the end action when they have all completed.
##### Examples
Spring the stack of bubbles (whose animations are chained) to the bottom of the screen, shrinking them to 50% size. Once the first bubble is done shrinking, begin fading them out, and then remove them all from the parent once all bubbles have faded out:
@@ -93,16 +101,22 @@ animationsForChildrenFromIndex(1, (index, anim) -> anim.translationX((index - 1)
.startAll(removeFirstView);
```
-## PhysicsAnimationLayout
-The layout itself is a FrameLayout descendant with a few extra methods:
+Move a view up along the left side of the screen, and then to the top right of the screen (assume a view that is currently halfway down the left side of the screen). When the translation animations have finished following the target, call a callback:
-```setController(PhysicsAnimationController controller)```
-Attaches the layout to the controller, so that the controller can access the layout’s protected methods. It also constructs or reconfigures the physics animations according to the new controller’s configuration methods.
+```
+Path path = new Path();
+path.moveTo(view.getTranslationX(), view.getTranslationY());
+path.lineTo(view.getTranslationX(), 0);
+path.lineTo(mScreenWidth, 0);
+animationForChild(view)
+ .followAnimatedTargetAlongPath(path, 100, new LinearInterpolator())
+ .start(callbackAfterFollowingFinished);
+```
-```setEndListenerForProperty(ViewProperty property, AnimationEndListener endListener)```
-Sets an end listener that is called when all animations on the given property have ended.
+## PhysicsAnimationLayout
+The layout itself is a FrameLayout descendant with a few extra methods:
-```setMaxRenderedChildren(int max)```
-Child views beyond this limit will be set to GONE, and won't be animated, for performance reasons. Defaults to **5**.
+```setActiveController(PhysicsAnimationController controller)```
+Sets the given controller as the active controller for the layout. This causes the layout to construct or reconfigure the physics animations according to the new controller’s configuration methods, and halt any in-progress animations.
-It has one protected method, ```animateValueForChildAtIndex(ViewProperty property, int index, float value)```, which is visible to PhysicsAnimationController descendants. This method dispatches the given value to the appropriate animation.
\ No newline at end of file
+Only the currently active controller is allowed to start animations. If a different controller is set as the active controller, the previous controller will no longer be able to start animations. Attempts to do so will have no effect. This is to ensure that multiple controllers aren’t updating animations at the same time, which can cause undefined behavior.
\ No newline at end of file
diff --git a/packages/SystemUI/legacy/recents/res/values-fr/strings.xml b/packages/SystemUI/legacy/recents/res/values-fr/strings.xml
index 183b6beba76b39cb2ffae8a7da1c883dcb79bd99..5b0d611c2588216a86c3f20b455da1da957c1b0a 100644
--- a/packages/SystemUI/legacy/recents/res/values-fr/strings.xml
+++ b/packages/SystemUI/legacy/recents/res/values-fr/strings.xml
@@ -32,7 +32,7 @@
"rechercher""Impossible de lancer l\'application %s.""L\'application %s est désactivée en mode sécurisé."
- "Tout effacer"
+ "Tout fermer""Faire glisser ici pour utiliser l\'écran partagé""Séparation horizontale""Séparation verticale"
diff --git a/packages/SystemUI/legacy/recents/res/values-vi/strings.xml b/packages/SystemUI/legacy/recents/res/values-vi/strings.xml
index f672a3d72dcbdb239163670ff2be6cdd4596d4ea..aefeae92a8a409aec95d72b04ef370a1be9bcf25 100644
--- a/packages/SystemUI/legacy/recents/res/values-vi/strings.xml
+++ b/packages/SystemUI/legacy/recents/res/values-vi/strings.xml
@@ -34,7 +34,7 @@
"%s bị tắt ở chế độ an toàn.""Xóa tất cả""Kéo vào đây để sử dụng chế độ chia đôi màn hình"
- "Phân tách ngang"
+ "Chia ngang""Phân tách dọc""Tùy chỉnh phân tách""Chia đôi màn hình lên trên"
diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java
index 14fd149d22f421a0535cb738fbe91baca232e79c..b89218c81a91c6ba6f88149aab128556433bec56 100644
--- a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java
+++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackView.java
@@ -41,8 +41,10 @@ import android.widget.ScrollView;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
+import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.recents.LegacyRecentsImpl;
import com.android.systemui.recents.RecentsActivity;
import com.android.systemui.recents.RecentsActivityLaunchState;
@@ -86,15 +88,15 @@ import com.android.systemui.recents.events.ui.focus.NavigateTaskViewEvent;
import com.android.systemui.recents.misc.DozeTrigger;
import com.android.systemui.recents.misc.ReferenceCountedTrigger;
import com.android.systemui.recents.misc.SystemServicesProxy;
+import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.utilities.AnimationProps;
import com.android.systemui.recents.utilities.Utilities;
-import com.android.systemui.shared.recents.model.Task;
-import com.android.systemui.recents.model.TaskStack;
import com.android.systemui.recents.views.grid.GridTaskView;
import com.android.systemui.recents.views.grid.TaskGridLayoutAlgorithm;
import com.android.systemui.recents.views.grid.TaskViewFocusFrame;
-
+import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+
import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@@ -256,7 +258,8 @@ public class TaskStackView extends FrameLayout implements TaskStack.TaskStackCal
mLayoutAlgorithm = new TaskStackLayoutAlgorithm(context, this);
mStableLayoutAlgorithm = new TaskStackLayoutAlgorithm(context, null);
mStackScroller = new TaskStackViewScroller(context, this, mLayoutAlgorithm);
- mTouchHandler = new TaskStackViewTouchHandler(context, this, mStackScroller);
+ mTouchHandler = new TaskStackViewTouchHandler(
+ context, this, mStackScroller, Dependency.get(FalsingManager.class));
mAnimationHelper = new TaskStackAnimationHelper(context, this);
mTaskCornerRadiusPx = LegacyRecentsImpl.getConfiguration().isGridEnabled ?
res.getDimensionPixelSize(R.dimen.recents_grid_task_view_rounded_corners_radius) :
diff --git a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
index dd6926c848b4f846210aea688d4adc0708348f40..a7fb4fae09ecdc36b9a893d6359d2bc375ac0d52 100644
--- a/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
+++ b/packages/SystemUI/legacy/recents/src/com/android/systemui/recents/views/TaskStackViewTouchHandler.java
@@ -37,6 +37,7 @@ import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
import com.android.systemui.SwipeHelper;
+import com.android.systemui.plugins.FalsingManager;
import com.android.systemui.recents.Constants;
import com.android.systemui.recents.LegacyRecentsImpl;
import com.android.systemui.recents.events.EventBus;
@@ -107,7 +108,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback {
boolean mInterceptedBySwipeHelper;
public TaskStackViewTouchHandler(Context context, TaskStackView sv,
- TaskStackViewScroller scroller) {
+ TaskStackViewScroller scroller, FalsingManager falsingManager) {
Resources res = context.getResources();
ViewConfiguration configuration = ViewConfiguration.get(context);
mContext = context;
@@ -119,7 +120,7 @@ class TaskStackViewTouchHandler implements SwipeHelper.Callback {
mWindowTouchSlop = configuration.getScaledWindowTouchSlop();
mFlingAnimUtils = new FlingAnimationUtils(context, 0.2f);
mOverscrollSize = res.getDimensionPixelSize(R.dimen.recents_fling_overscroll_distance);
- mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, context) {
+ mSwipeHelper = new SwipeHelper(SwipeHelper.X, this, context, falsingManager) {
@Override
protected float getSize(View v) {
return getScaledDismissSize();
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/OverlayPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/OverlayPlugin.java
index 90fc86bc5b5117361715b3cf71fd12e9bb94a6f1..075df75f938a541d34cec7505be37ef63c47a08e 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/OverlayPlugin.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/OverlayPlugin.java
@@ -16,12 +16,13 @@ package com.android.systemui.plugins;
import android.view.View;
import com.android.systemui.plugins.annotations.ProvidesInterface;
+import com.android.systemui.plugins.statusbar.DozeParameters;
@ProvidesInterface(action = OverlayPlugin.ACTION, version = OverlayPlugin.VERSION)
public interface OverlayPlugin extends Plugin {
String ACTION = "com.android.systemui.action.PLUGIN_OVERLAY";
- int VERSION = 3;
+ int VERSION = 4;
/**
* Setup overlay plugin
@@ -29,9 +30,10 @@ public interface OverlayPlugin extends Plugin {
void setup(View statusBar, View navBar);
/**
- * Setup overlay plugin with callback
+ * Setup overlay plugin with callback and DozeParameters
*/
- default void setup(View statusBar, View navBar, Callback callback) {
+ default void setup(View statusBar, View navBar, Callback callback,
+ DozeParameters dozeParameters) {
setup(statusBar, navBar);
}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/SensorManagerPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/SensorManagerPlugin.java
index 2cbd788d0a30483bf8a14e436bbdcefa1662aed0..60435d0dec3565cca456e801dbafb30a4436171a 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/SensorManagerPlugin.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/SensorManagerPlugin.java
@@ -58,7 +58,7 @@ public interface SensorManagerPlugin extends Plugin {
public static final int TYPE_WAKE_LOCK_SCREEN = 1;
public static final int TYPE_WAKE_DISPLAY = 2;
public static final int TYPE_SWIPE = 3;
- public static final int TYPE_STATUS = 4;
+ public static final int TYPE_SKIP_STATUS = 4;
private int mType;
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
index 30d1352c8a015eae4467fc461cd31b92a9a85ccb..85a9fec859f3b654c1e6fcb808d81d45bf330d8e 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QS.java
@@ -34,7 +34,7 @@ public interface QS extends FragmentBase {
String ACTION = "com.android.systemui.action.PLUGIN_QS";
- int VERSION = 6;
+ int VERSION = 7;
String TAG = "QS";
@@ -51,7 +51,7 @@ public interface QS extends FragmentBase {
void setListening(boolean listening);
boolean isShowingDetail();
void closeDetail();
- void setKeyguardShowing(boolean keyguardShowing);
+ default void setShowCollapsedOnKeyguard(boolean showCollapsedOnKeyguard) {}
void animateHeaderSlidingIn(long delay);
void animateHeaderSlidingOut();
void setQsExpansion(float qsExpansionFraction, float headerTranslation);
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/DozeParameters.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/DozeParameters.java
new file mode 100644
index 0000000000000000000000000000000000000000..678eb31304a139882b068b448d2aea2dac961c02
--- /dev/null
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/DozeParameters.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.plugins.statusbar;
+
+import com.android.systemui.plugins.annotations.ProvidesInterface;
+
+/**
+ * Retrieve doze information
+ */
+@ProvidesInterface(version = DozeParameters.VERSION)
+public interface DozeParameters {
+ int VERSION = 1;
+
+ /**
+ * Whether to doze when the screen turns off
+ */
+ boolean shouldControlScreenOff();
+}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
index 3ee69b4c322411054e668aceb7e2c899b2c7b33a..fe547a0a16fad33b43f68957f3e8b68ad9a11681 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/statusbar/StatusBarStateController.java
@@ -18,7 +18,6 @@ package com.android.systemui.plugins.statusbar;
import com.android.systemui.plugins.annotations.DependsOn;
import com.android.systemui.plugins.annotations.ProvidesInterface;
-import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
/**
@@ -94,5 +93,15 @@ public interface StatusBarStateController {
* performance regressions.
*/
default void onDozeAmountChanged(float linear, float eased) {}
+
+ /**
+ * Callback to be notified when the sysui visibility changes
+ */
+ default void onSystemUiVisibilityChanged(int visibility) {}
+
+ /**
+ * Callback to be notified when the pulsing state changes
+ */
+ default void onPulsingChanged(boolean pulsing) {}
}
}
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
index 65f7a0e29843a54d8825e5d4b9ff637671861c6c..8c611f61dc2319f6baa94860dd70b32087f0aad8 100644
--- a/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_hour_hand.xml
@@ -6,5 +6,5 @@
+ android:strokeWidth="3"/>
diff --git a/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
index 95b4b1ad0b9bdbe38ed1b55f6f9c2a266c05af04..27bc43638f061a7d363f485c7204914b51d9967e 100644
--- a/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
+++ b/packages/SystemUI/res-keyguard/drawable/bubble_minute_hand.xml
@@ -6,5 +6,5 @@
+ android:strokeWidth="3"/>
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_presentation.xml b/packages/SystemUI/res-keyguard/layout/keyguard_presentation.xml
index a9ba19d2d393240e4cd84010633c399ca2b5f56d..f4d34f4ca141feaf53bc68a7f16cccfe79385b98 100644
--- a/packages/SystemUI/res-keyguard/layout/keyguard_presentation.xml
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_presentation.xml
@@ -41,7 +41,7 @@
diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_status_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_status_view.xml
index 04d6afc1935f798c6107f39a478f49dad7f85c50..847fba41f593731a13b61561e90fbd3e5903d9f0 100644
--- a/packages/SystemUI/res-keyguard/layout/keyguard_status_view.xml
+++ b/packages/SystemUI/res-keyguard/layout/keyguard_status_view.xml
@@ -25,14 +25,13 @@
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- androidprv:layout_maxWidth="@dimen/keyguard_security_width"
- androidprv:layout_maxHeight="@dimen/keyguard_security_height"
android:gravity="center_horizontal|top">
+
diff --git a/packages/SystemUI/res-keyguard/values-af/strings.xml b/packages/SystemUI/res-keyguard/values-af/strings.xml
index 882f6e2da9b2ec7cc10c9e38d23c4cc7430b987b..11bcc8876b27dc63e0d4cd8c27ea9d697ddf6f4c 100644
--- a/packages/SystemUI/res-keyguard/values-af/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-af/strings.xml
@@ -151,4 +151,7 @@
SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Jy het %d pogings oor voordat die SIM permanent onbruikbaar word. Kontak die diensverskaffer vir besonderhede.SIM is nou gedeaktiveer. Voer PUK-kode in om voort te gaan. Jy het %d poging oor voordat die SIM permanent onbruikbaar word. Kontak die diensverskaffer vir besonderhede.
+ "Verstek"
+ "Borrel"
+ "Analoog"
diff --git a/packages/SystemUI/res-keyguard/values-am/strings.xml b/packages/SystemUI/res-keyguard/values-am/strings.xml
index 8f85eb345e4862b04ec52b436f651c466436bb4c..4feb9f1d2c137f921d373b068223758c9af5ad4d 100644
--- a/packages/SystemUI/res-keyguard/values-am/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-am/strings.xml
@@ -151,4 +151,7 @@
ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ሲም እስከመጨረሻው መጠቀም የማይቻል ከመሆኑ በፊት %d ሙከራዎች ይቀረዎታል። ዝርዝሮችን ለማግኘት የአገልግሎት አቅራቢን ያነጋግሩ።ሲም አሁን ተሰናክሏል። ለመቀጠል የPUK ኮድ ያስገቡ። ሲም እስከመጨረሻው መጠቀም የማይቻል ከመሆኑ በፊት %d ሙከራዎች ይቀረዎታል። ዝርዝሮችን ለማግኘት የአገልግሎት አቅራቢን ያነጋግሩ።
+ "ነባሪ"
+ "አረፋ"
+ "አናሎግ"
diff --git a/packages/SystemUI/res-keyguard/values-ar/strings.xml b/packages/SystemUI/res-keyguard/values-ar/strings.xml
index 29f3570bb86b1b5e0f602ceeaacffb758b9bc109..4e163a2d331c00b75f53f0c367aeced6cdcc0e2d 100644
--- a/packages/SystemUI/res-keyguard/values-ar/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ar/strings.xml
@@ -183,4 +183,7 @@
تم إيقاف شريحة SIM الآن. أدخل رمز PUK للمتابعة، وتتبقى لديك %d محاولة قبل أن تصبح شريحة SIM غير صالحة للاستخدام نهائيًا. ويمكنك الاتصال بمشغل شبكة الجوّال لمعرفة التفاصيل.تم إيقاف شريحة SIM الآن. أدخل رمز PUK للمتابعة، وتتبقى لديك محاولة واحدة (%d) قبل أن تصبح شريحة SIM غير صالحة للاستخدام نهائيًا. ويمكنك الاتصال بمشغل شبكة الجوّال لمعرفة التفاصيل.
+ "تلقائي"
+ "فقاعة"
+ "ساعة تقليدية"
diff --git a/packages/SystemUI/res-keyguard/values-as/strings.xml b/packages/SystemUI/res-keyguard/values-as/strings.xml
index de21e4919dc2a2bf0e51ed9a6fb304f4a7a7a550..e225675804d261419b840eb9352debb4a91fdfe6 100644
--- a/packages/SystemUI/res-keyguard/values-as/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-as/strings.xml
@@ -151,4 +151,7 @@
ছিমখন অক্ষম হ’ল। অব্যাহত ৰাখিবলৈ PUK দিয়ক। ছিমখন স্থায়ীভাৱে ব্যৱহাৰৰ অনুপযোগী হোৱাৰ পূৰ্বে আপোনাৰ হাতত %dটা প্ৰয়াস বাকী আছে। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।ছিমখন অক্ষম হ’ল। অব্যাহত ৰাখিবলৈ PUK দিয়ক। ছিমখন স্থায়ীভাৱে ব্যৱহাৰৰ অনুপযোগী হোৱাৰ পূৰ্বে আপোনাৰ হাতত %dটা প্ৰয়াস বাকী আছে। সবিশেষ জানিবলৈ বাহকৰ সৈতে যোগাযোগ কৰক।
+ "ডিফ’ল্ট"
+ "বাবল"
+ "এনাল’গ"
diff --git a/packages/SystemUI/res-keyguard/values-az/strings.xml b/packages/SystemUI/res-keyguard/values-az/strings.xml
index d83706ea37b355b64979543d844b2105824c27d4..c0cf129a940870686a8056071eb8049a42709cbb 100644
--- a/packages/SystemUI/res-keyguard/values-az/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-az/strings.xml
@@ -151,4 +151,7 @@
SIM indi deaktivdir. Davam etmək üçün PUK kodunu daxil edin. SIM birdəfəlik yararsız olmadan öncə %d cəhdiniz qalır. Ətraflı məlumat üçün operatorla əlaqə saxlayın.SIM indi deaktivdir. Davam etmək üçün PUK kodunu daxil edin. SIM birdəfəlik yararsız olmadan öncə %d cəhdiniz qalır. Ətraflı məlumat üçün operatorla əlaqə saxlayın.
+ "Defolt"
+ "Qabarcıq"
+ "Analoq"
diff --git a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
index c0dfbc8522fc4ef5bfc606e8ce3035ae81abd3af..88ca77b4a9779d56d47a36122d21370ee4b6cb2c 100644
--- a/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-b+sr+Latn/strings.xml
@@ -159,4 +159,7 @@
SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još %d pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još %d pokušaja pre nego što SIM postane trajno neupotrebljiv. Detaljne informacije potražite od mobilnog operatera.
+ "Podrazumevani"
+ "Mehurići"
+ "Analogni"
diff --git a/packages/SystemUI/res-keyguard/values-be/strings.xml b/packages/SystemUI/res-keyguard/values-be/strings.xml
index 6b5f3edeb464314a82d12d5a4c06186771c8f4f2..a897fb2fbf92f1dc81abb6e0a7ea60431cecb5e0 100644
--- a/packages/SystemUI/res-keyguard/values-be/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-be/strings.xml
@@ -167,4 +167,7 @@
SIM-карта заблакіравана. Каб працягнуць, увядзіце PUK-код. У вас ёсць яшчэ %d спроб, пасля чаго SIM-карта будзе заблакіравана назаўсёды. Звярніцеся да аператара, каб даведацца больш.SIM-карта заблакіравана. Каб працягнуць, увядзіце PUK-код. У вас ёсць яшчэ %d спробы, пасля чаго SIM-карта будзе заблакіравана назаўсёды. Звярніцеся да аператара, каб даведацца больш.
+ "Стандартны"
+ "Бурбалкі"
+ "Са стрэлкамі"
diff --git a/packages/SystemUI/res-keyguard/values-bg/strings.xml b/packages/SystemUI/res-keyguard/values-bg/strings.xml
index 296e77ae602d5decc9e71338e433ed9e8683947a..eebdb9edc7f14025c34cc044676c48ec2d11759f 100644
--- a/packages/SystemUI/res-keyguard/values-bg/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bg/strings.xml
@@ -151,4 +151,7 @@
SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Остават ви %d опита, преди SIM картата да стане неизползваема завинаги. Свържете се с оператора за подробности.SIM картата вече е деактивирана. Въведете PUK кода, за да продължите. Остава ви %d опит, преди SIM картата да стане неизползваема завинаги. Свържете се с оператора за подробности.
+ "Стандартен"
+ "Балонен"
+ "Аналогов"
diff --git a/packages/SystemUI/res-keyguard/values-bn/strings.xml b/packages/SystemUI/res-keyguard/values-bn/strings.xml
index b6aa65194a0fe20d06b577da55fb13ac1615e17b..b544c14fb0b0da98e611979efc8bddd9677e24ce 100644
--- a/packages/SystemUI/res-keyguard/values-bn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bn/strings.xml
@@ -151,4 +151,7 @@
সিম অক্ষম করা হয়েছে। চালিয়ে যেতে PUK কোড লিখুন। আপনি আর %d বার চেষ্টা করতে পারবেন, তারপরে এই সিমটি আর একেবারেই ব্যবহার করা যাবে না। বিশদে জানতে পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।সিম অক্ষম করা হয়েছে। চালিয়ে যেতে PUK কোড লিখুন। আপনি আর %d বার চেষ্টা করতে পারবেন, তারপরে এই সিমটি আর একেবারেই ব্যবহার করা যাবে না। বিশদে জানতে পরিষেবা প্রদানকারীর সাথে যোগাযোগ করুন।
+ "ডিফল্ট"
+ "বাবল"
+ "অ্যানালগ"
diff --git a/packages/SystemUI/res-keyguard/values-bs/strings.xml b/packages/SystemUI/res-keyguard/values-bs/strings.xml
index 40e52706aa014cebeeec3b973e223865e46be0ff..8547bc87a5d399b00cc8d15a6be3a52d3e47a411 100644
--- a/packages/SystemUI/res-keyguard/values-bs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-bs/strings.xml
@@ -22,7 +22,7 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
"Zaključavanje tastature""Upišite PIN"
- "Upišite PUK kôd za SIM karticu i novi PIN"
+ "Upišite PUK za SIM i novi PIN kôd""PUK kôd za SIM karticu""Novi PIN za SIM karticu""Dodirnite da upišete lozinku"
@@ -54,7 +54,7 @@
"Prostor za PIN""Lozinka uređaja""Prostor za PIN za SIM karticu"
- "Prostor za PUK kôd za SIM karticu"
+ "Prostor za PUK za SIM""Naredni alarm je podešen za %1$s""Izbriši""Onemogući eSIM karticu"
@@ -116,7 +116,7 @@
PUK kôd za SIM karticu je netačan. Imate još %d pokušaja prije nego što SIM kartica postane trajno neupotrebljiva."Korištenje PIN-a za SIM karticu nije uspjelo!"
- "Korištenje PUK koda za SIM karticu nije uspjelo!"
+ "Korištenje PUK-a za SIM nije uspjelo!""Kôd je prihvaćen""Nema mreže.""Promjena načina unosa"
@@ -159,4 +159,7 @@
SIM kartica je onemogućena. Unesite PUK kôd da nastavite. Imate još %d pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Za više informacija kontaktirajte mobilnog operatera.SIM kartica je onemogućena. Unesite PUK kôd da nastavite. Imate još %d pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Za više informacija kontaktirajte mobilnog operatera.
+ "Zadano"
+ "Mjehurići"
+ "Analogni"
diff --git a/packages/SystemUI/res-keyguard/values-ca/strings.xml b/packages/SystemUI/res-keyguard/values-ca/strings.xml
index bb48226a89301958d3ac7712ba5bbf90b5881d8b..ccde138c10b6482abc96410728218b3441f8e3ac 100644
--- a/packages/SystemUI/res-keyguard/values-ca/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ca/strings.xml
@@ -151,4 +151,7 @@
La targeta SIM s\'ha desactivat. Introdueix el codi PUK per continuar. Et queden %d intents; si no l\'encertes, la SIM no es podrà tornar a fer servir. Contacta amb l\'operador de telefonia mòbil per obtenir-ne més informació.La targeta SIM s\'ha desactivat. Introdueix el codi PUK per continuar. Et queda %d intent; si no l\'encertes, la SIM no es podrà tornar a fer servir. Contacta amb l\'operador de telefonia mòbil per obtenir-ne més informació.
+ "Predeterminada"
+ "Bombolla"
+ "Analògica"
diff --git a/packages/SystemUI/res-keyguard/values-cs/strings.xml b/packages/SystemUI/res-keyguard/values-cs/strings.xml
index 536dd15583ee7d22142f6b2416dc1ca4686ba755..3adc2792ef1003203ef926dbc11f9e5518bcb7ab 100644
--- a/packages/SystemUI/res-keyguard/values-cs/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-cs/strings.xml
@@ -41,7 +41,7 @@
"Připojte dobíjecí zařízení.""Klávesy odemknete stisknutím tlačítka nabídky.""Síť je blokována"
- "Není vložena SIM karta"
+ "Chybí SIM karta""V tabletu není SIM karta.""V telefonu není SIM karta.""Vložte SIM kartu."
@@ -167,4 +167,7 @@
SIM karta je teď zablokována. Chcete-li pokračovat, zadejte kód PUK. Máte ještě %d pokusů, poté bude SIM karta natrvalo zablokována. Podrobnosti vám poskytne operátor.SIM karta je teď zablokována. Chcete-li pokračovat, zadejte kód PUK. Máte ještě %d pokus, poté bude SIM karta natrvalo zablokována. Podrobnosti vám poskytne operátor.
+ "Výchozí"
+ "Bublina"
+ "Analogové"
diff --git a/packages/SystemUI/res-keyguard/values-da/strings.xml b/packages/SystemUI/res-keyguard/values-da/strings.xml
index e60930d4d70b1c0c6ddec5e9a2a3fbc4c1ea9cfa..0e6a1f349d937864160c74b5afee8453c78bd9e5 100644
--- a/packages/SystemUI/res-keyguard/values-da/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-da/strings.xml
@@ -151,4 +151,7 @@
SIM-kortet er nu deaktiveret. Angiv PUK-koden for at fortsætte. Du har %d forsøg tilbage, før SIM-kortet bliver permanent ubrugeligt. Kontakt dit mobilselskab for at få flere oplysninger.SIM-kortet er nu deaktiveret. Angiv PUK-koden for at fortsætte. Du har %d forsøg tilbage, før SIM-kortet bliver permanent ubrugeligt. Kontakt dit mobilselskab for at få flere oplysninger.
+ "Standard"
+ "Boble"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-de/strings.xml b/packages/SystemUI/res-keyguard/values-de/strings.xml
index d8bb0103f6284aa2f6fe431fd5cbcbddf6df1c31..d44bfbc670a19e3b6a32d833d3ab8433394613ae 100644
--- a/packages/SystemUI/res-keyguard/values-de/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-de/strings.xml
@@ -151,4 +151,7 @@
Die SIM-Karte ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Du hast noch %d Versuche, bevor die SIM-Karte endgültig gesperrt wird. Weitere Informationen erhältst du von deinem Mobilfunkanbieter.Die SIM-Karte ist jetzt deaktiviert. Gib den PUK-Code ein, um fortzufahren. Du hast noch %d Versuch, bevor die SIM-Karte endgültig gesperrt wird. Weitere Informationen erhältst du von deinem Mobilfunkanbieter.
+ "Standard"
+ "Bubble"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-el/strings.xml b/packages/SystemUI/res-keyguard/values-el/strings.xml
index 47330058cdec3fdbf5901211109c9ce9fb343bf5..46b1d30b865cca78b9e02d4b2e080ef14eaf1f5e 100644
--- a/packages/SystemUI/res-keyguard/values-el/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-el/strings.xml
@@ -151,4 +151,7 @@
Η κάρτα SIM απενεργοποιήθηκε. Καταχωρίστε τον κωδικό PUK, για να συνεχίσετε. Απομένουν %d ακόμη προσπάθειες προτού να μην είναι πλέον δυνατή η χρήση της κάρτας SIM. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας για λεπτομέρειες.Η κάρτα SIM απενεργοποιήθηκε. Καταχωρίστε τον κωδικό PUK, για να συνεχίσετε. Απομένει %d ακόμη προσπάθεια προτού να μην είναι πλέον δυνατή η χρήση της κάρτας SIM. Επικοινωνήστε με την εταιρεία κινητής τηλεφωνίας για λεπτομέρειες.
+ "Προεπιλογή"
+ "Συννεφάκι"
+ "Αναλογικό"
diff --git a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
index 8f1a94e767ee8a3752a32b9697bea5aeaf6ed9a8..5640b6d3050a0d62f2d8614d94df878615945bd6 100644
--- a/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rAU/strings.xml
@@ -151,4 +151,7 @@
SIM is now disabled. Enter PUK code to continue. You have %d remaining attempts before SIM becomes permanently unusable. Contact operator for details.SIM is now disabled. Enter PUK code to continue. You have %d remaining attempt before SIM becomes permanently unusable. Contact operator for details.
+ "Default"
+ "Bubble"
+ "Analogue"
diff --git a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
index b7d0722ac14b26b8000982025fd262d3ddd885e5..5836b72a0cda4de699b71d692e014c742dad7c20 100644
--- a/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rCA/strings.xml
@@ -151,4 +151,7 @@
SIM is now disabled. Enter PUK code to continue. You have %d remaining attempts before SIM becomes permanently unusable. Contact operator for details.SIM is now disabled. Enter PUK code to continue. You have %d remaining attempt before SIM becomes permanently unusable. Contact operator for details.
+ "Default"
+ "Bubble"
+ "Analogue"
diff --git a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
index 8f1a94e767ee8a3752a32b9697bea5aeaf6ed9a8..5640b6d3050a0d62f2d8614d94df878615945bd6 100644
--- a/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rGB/strings.xml
@@ -151,4 +151,7 @@
SIM is now disabled. Enter PUK code to continue. You have %d remaining attempts before SIM becomes permanently unusable. Contact operator for details.SIM is now disabled. Enter PUK code to continue. You have %d remaining attempt before SIM becomes permanently unusable. Contact operator for details.
+ "Default"
+ "Bubble"
+ "Analogue"
diff --git a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
index 8f1a94e767ee8a3752a32b9697bea5aeaf6ed9a8..5640b6d3050a0d62f2d8614d94df878615945bd6 100644
--- a/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rIN/strings.xml
@@ -151,4 +151,7 @@
SIM is now disabled. Enter PUK code to continue. You have %d remaining attempts before SIM becomes permanently unusable. Contact operator for details.SIM is now disabled. Enter PUK code to continue. You have %d remaining attempt before SIM becomes permanently unusable. Contact operator for details.
+ "Default"
+ "Bubble"
+ "Analogue"
diff --git a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
index 13e87fa5269a22ba5afe4756b36107dc8e374675..fb968b76e24b905f8ec547c96a7f625eabf535ef 100644
--- a/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-en-rXC/strings.xml
@@ -151,4 +151,7 @@
SIM is now disabled. Enter PUK code to continue. You have %d remaining attempts before SIM becomes permanently unusable. Contact carrier for details.SIM is now disabled. Enter PUK code to continue. You have %d remaining attempt before SIM becomes permanently unusable. Contact carrier for details.
+ "Default"
+ "Bubble"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
index 90ee83d9ef551c237686d1acc1960a83abda6cf2..727cbad82ad243bfba267b1dc78e4a68214c69f6 100644
--- a/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es-rUS/strings.xml
@@ -151,4 +151,7 @@
Se inhabilitó la SIM. Para continuar, ingresa el código PUK. Te quedan %d intentos más antes de que la SIM quede inutilizable permanentemente. Comunícate con tu proveedor para obtener más detalles.Se inhabilitó la SIM. Para continuar, ingresa el código PUK. Te queda %d intento más antes de que la SIM quede inutilizable permanentemente. Comunícate con tu proveedor para obtener más detalles.
+ "Predeterminado"
+ "Burbuja"
+ "Analógico"
diff --git a/packages/SystemUI/res-keyguard/values-es/strings.xml b/packages/SystemUI/res-keyguard/values-es/strings.xml
index 5970c82d7218fadcb7e55c958babe64159edc563..870741ea0202388994296818c336d7defd71bd34 100644
--- a/packages/SystemUI/res-keyguard/values-es/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-es/strings.xml
@@ -151,4 +151,7 @@
La tarjeta SIM está inhabilitada. Introduce el código PUK para continuar. Te quedan %d intentos para que la tarjeta SIM quede inservible de forma permanente. Ponte en contacto con tu operador para obtener más información.La tarjeta SIM está inhabilitada. Introduce el código PUK para continuar. Te queda %d intento para que la tarjeta SIM quede inservible de forma permanente. Ponte en contacto con tu operador para obtener más información.
+ "Predeterminado"
+ "Burbuja"
+ "Analógico"
diff --git a/packages/SystemUI/res-keyguard/values-et/strings.xml b/packages/SystemUI/res-keyguard/values-et/strings.xml
index a95a3d3e9a0dbb31bddeb3d500a26c5d371b50cc..b6cac13a728d8426e71b32513c8c2d02bced71bf 100644
--- a/packages/SystemUI/res-keyguard/values-et/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-et/strings.xml
@@ -117,7 +117,7 @@
"Kood on õige.""Teenus puudub.""Vaheta sisestusmeetodit"
- "Lennurežiim"
+ "Lennukirežiim""Pärast seadme taaskäivitamist tuleb sisestada muster""Pärast seadme taaskäivitamist tuleb sisestada PIN-kood""Pärast seadme taaskäivitamist tuleb sisestada parool"
@@ -151,4 +151,7 @@
SIM-kaart on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Teil on jäänud veel %d katset enne, kui SIM-kaart püsivalt lukustatakse. Lisateavet küsige operaatorilt.SIM-kaart on nüüd keelatud. Jätkamiseks sisestage PUK-kood. Teil on jäänud veel %d katse enne, kui SIM-kaart püsivalt lukustatakse. Lisateavet küsige operaatorilt.
+ "Vaikenumbrilaud"
+ "Mull"
+ "Analoog"
diff --git a/packages/SystemUI/res-keyguard/values-eu/strings.xml b/packages/SystemUI/res-keyguard/values-eu/strings.xml
index 64601ca506453f7fcc4107aa19ad6d16983697a5..8ad942b5c8ce73714bd849cdbad255e86f107a07 100644
--- a/packages/SystemUI/res-keyguard/values-eu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-eu/strings.xml
@@ -151,4 +151,7 @@
Desgaitu egin da SIM txartela. Aurrera egiteko, idatzi PUK kodea. %d saiakera geratzen zaizkizu SIM txartela betiko erabilgaitz geratu aurretik. Xehetasunak lortzeko, jarri operadorearekin harremanetan.Desgaitu egin da SIM txartela. Aurrera egiteko, idatzi PUK kodea. %d saiakera geratzen zaizu SIM txartela betiko erabilgaitz geratu aurretik. Xehetasunak lortzeko, jarri operadorearekin harremanetan.
+ "Lehenetsia"
+ "Puxikak"
+ "Analogikoa"
diff --git a/packages/SystemUI/res-keyguard/values-fa/strings.xml b/packages/SystemUI/res-keyguard/values-fa/strings.xml
index 1c4387e97a84de34da563d8014644d941198cf3a..9c9de22b96d9066fe1420f3b5abd241e36acc49a 100644
--- a/packages/SystemUI/res-keyguard/values-fa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fa/strings.xml
@@ -37,7 +37,7 @@
"%s • درحال شارژ بیسیم""%s • درحال شارژ شدن""%s • درحال شارژ سریع"
- "%s • درحال شارژ آهسته"
+ "%s • آهستهآهسته شارژ میشود""شارژر را وصل کنید.""برای باز کردن قفل روی «منو» فشار دهید.""شبکه قفل شد"
@@ -151,4 +151,7 @@
سیمکارت اکنون غیرفعال است. برای ادامه دادن کد PUK را وارد کنید. %d تلاش دیگر باقی مانده است و پس از آن سیمکارت برای همیشه غیرقابلاستفاده میشود. برای اطلاع از جزئیات با شرکت مخابراتی تماس بگیرید.سیمکارت اکنون غیرفعال است. برای ادامه دادن کد PUK را وارد کنید. %d تلاش دیگر باقی مانده است و پس از آن سیمکارت برای همیشه غیرقابلاستفاده میشود. برای اطلاع از جزئیات با شرکت مخابراتی تماس بگیرید.
+ "پیشفرض"
+ "حباب"
+ "آنالوگ"
diff --git a/packages/SystemUI/res-keyguard/values-fi/strings.xml b/packages/SystemUI/res-keyguard/values-fi/strings.xml
index a49b0c4dd14ebec09b31c02a5852a9e3b1b70e94..66f1de5b292d1458ca0132c5ddb30de9882dc47b 100644
--- a/packages/SystemUI/res-keyguard/values-fi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fi/strings.xml
@@ -151,4 +151,7 @@
SIM-kortti on nyt lukittu. Anna PUK-koodi, niin voit jatkaa. Sinulla on %d yritystä jäljellä, ennen kuin SIM-kortti poistuu pysyvästi käytöstä. Pyydä lisätietoja operaattoriltasi.SIM-kortti on nyt lukittu. Anna PUK-koodi, niin voit jatkaa. Sinulla on %d yritys jäljellä, ennen kuin SIM-kortti poistuu pysyvästi käytöstä. Pyydä lisätietoja operaattoriltasi.
+ "Oletus"
+ "Kupla"
+ "Analoginen"
diff --git a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
index 77b1b2edcd0c962069b4112a38342aacab077ac9..66c7c86f363e88c0a1acb379fd1b3b0e5faadc79 100644
--- a/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr-rCA/strings.xml
@@ -151,4 +151,7 @@
La carte SIM est maintenant désactivée. Entrez le code PUK pour continuer. Il vous reste %d tentative avant que votre carte SIM devienne définitivement inutilisable. Pour obtenir plus de détails, communiquez avec votre fournisseur de services.La carte SIM est maintenant désactivée. Entrez le code PUK pour continuer. Il vous reste %d tentatives avant que votre carte SIM devienne définitivement inutilisable. Pour obtenir plus de détails, communiquez avec votre fournisseur de services.
+ "Par défaut"
+ "Bulle"
+ "Analogique"
diff --git a/packages/SystemUI/res-keyguard/values-fr/strings.xml b/packages/SystemUI/res-keyguard/values-fr/strings.xml
index b1f9e0dcd06a666d180af65388d4b647881c44f2..d6aa5d262821e66daccd1a6d002f6dd009941ea0 100644
--- a/packages/SystemUI/res-keyguard/values-fr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-fr/strings.xml
@@ -151,4 +151,7 @@
La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Il vous reste %d tentative avant que votre carte SIM ne devienne définitivement inutilisable. Pour de plus amples informations, veuillez contacter votre opérateur.La carte SIM est maintenant désactivée. Saisissez le code PUK pour continuer. Il vous reste %d tentatives avant que votre carte SIM ne devienne définitivement inutilisable. Pour de plus amples informations, veuillez contacter votre opérateur.
+ "Par défaut"
+ "Bulle"
+ "Analogique"
diff --git a/packages/SystemUI/res-keyguard/values-gl/strings.xml b/packages/SystemUI/res-keyguard/values-gl/strings.xml
index 55f84f805964fa4ca60137acdae39bed6ec9b7dd..e6b10a00ba72ae1488942167b25dc3b91948da7e 100644
--- a/packages/SystemUI/res-keyguard/values-gl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gl/strings.xml
@@ -151,4 +151,7 @@
A SIM está desactivada. Introduce o código PUK para continuar. Quédanche %d intentos antes de que a SIM quede inutilizable para sempre. Contacta co operador para obter información.A SIM está desactivada. Introduce o código PUK para continuar. Quédache %d intento antes de que a SIM quede inutilizable para sempre. Contacta co operador para obter información.
+ "Predeterminado"
+ "Burbulla"
+ "Analóxico"
diff --git a/packages/SystemUI/res-keyguard/values-gu/strings.xml b/packages/SystemUI/res-keyguard/values-gu/strings.xml
index aa4ebdfb529c56bd5ac62277397a79924fb511b3..025462e37813bfff2a71af3400c05dfa62d048a9 100644
--- a/packages/SystemUI/res-keyguard/values-gu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-gu/strings.xml
@@ -151,4 +151,7 @@
સિમ હવે બંધ કરેલ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. સિમ કાયમીરૂપે બિનઉપયોગી બની જાય એ પહેલાં તમારી પાસે %d પ્રયાસ બાકી છે. વિગતો માટે કૅરિઅરનો સંપર્ક કરો.સિમ હવે બંધ કરેલ છે. ચાલુ રાખવા માટે PUK કોડ દાખલ કરો. સિમ કાયમીરૂપે બિનઉપયોગી બની જાય એ પહેલાં તમારી પાસે %d પ્રયાસો બાકી છે. વિગતો માટે કૅરિઅરનો સંપર્ક કરો.
+ "ડિફૉલ્ટ"
+ "બબલ"
+ "એનાલોગ"
diff --git a/packages/SystemUI/res-keyguard/values-hi/strings.xml b/packages/SystemUI/res-keyguard/values-hi/strings.xml
index 86e14dc8b107ef614c69aa5a0541c1865905da3b..2de75e479334a0771364c6b53d40e9c5d063ac50 100644
--- a/packages/SystemUI/res-keyguard/values-hi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hi/strings.xml
@@ -151,4 +151,7 @@
सिम बंद कर दिया गया है. जारी रखने के लिए PUK कोड डालें. आपके पास %d मौके बचे हैं, उसके बाद, सिम हमेशा के लिए काम करना बंद कर देगा. जानकारी के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें.सिम बंद कर दिया गया है. जारी रखने के लिए PUK कोड डालें. आपके पास %d मौके बचे हैं, उसके बाद, सिम हमेशा के लिए काम करना बंद कर देगा. जानकारी के लिए, मोबाइल और इंटरनेट सेवा देने वाली कंपनी से संपर्क करें.
+ "डिफ़ॉल्ट"
+ "बबल"
+ "एनालॉग"
diff --git a/packages/SystemUI/res-keyguard/values-hr/strings.xml b/packages/SystemUI/res-keyguard/values-hr/strings.xml
index c7f4daf3c4ea152145a865acac8523fc84796c10..c4f7bba860026f01ecf1e7084b1ad572eb06e0ea 100644
--- a/packages/SystemUI/res-keyguard/values-hr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hr/strings.xml
@@ -159,4 +159,7 @@
SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još %d pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Više informacija zatražite od mobilnog operatera.SIM je sada onemogućen. Unesite PUK kôd da biste nastavili. Imate još %d pokušaja prije nego što SIM kartica postane trajno neupotrebljiva. Više informacija zatražite od mobilnog operatera.
+ "Zadano"
+ "Mjehurić"
+ "Analogni"
diff --git a/packages/SystemUI/res-keyguard/values-hu/strings.xml b/packages/SystemUI/res-keyguard/values-hu/strings.xml
index 62c97996716e550cf194fb90e5a8b685551faec2..06142bc738b0e5323ec1239b77a7db76bae0d00d 100644
--- a/packages/SystemUI/res-keyguard/values-hu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hu/strings.xml
@@ -151,4 +151,7 @@
A SIM-kártya le van tiltva. A folytatáshoz adja meg a PUK-kódot. Még %d próbálkozása van, mielőtt végleg használhatatlanná válik a SIM-kártya. További információért forduljon a szolgáltatóhoz.A SIM-kártya le van tiltva. A folytatáshoz adja meg a PUK-kódot. Még %d próbálkozása van, mielőtt végleg használhatatlanná válik a SIM-kártya. További információért forduljon a szolgáltatóhoz.
+ "Alapértelmezett"
+ "Buborék"
+ "Analóg"
diff --git a/packages/SystemUI/res-keyguard/values-hy/strings.xml b/packages/SystemUI/res-keyguard/values-hy/strings.xml
index fc9f7f253b1cab07bdf1e8cdf8d9d5574706769c..f501fcc7c347d6365162018a48bbe64fcf5f95f1 100644
--- a/packages/SystemUI/res-keyguard/values-hy/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-hy/strings.xml
@@ -151,4 +151,7 @@
SIM քարտն անջատված է: Շարունակելու համար մուտքագրեք PUK կոդը: Մնացել է %d փորձ, որից հետո SIM քարտն այլևս հնարավոր չի լինի օգտագործել: Մանրամասների համար դիմեք օպերատորին:SIM քարտն անջատված է: Շարունակելու համար մուտքագրեք PUK կոդը: Մնացել է %d փորձ, որից հետո SIM քարտն այլևս հնարավոր չի լինի օգտագործել: Մանրամասների համար դիմեք օպերատորին:
+ "Կանխադրված"
+ "Պղպջակ"
+ "Անալոգային"
diff --git a/packages/SystemUI/res-keyguard/values-in/strings.xml b/packages/SystemUI/res-keyguard/values-in/strings.xml
index ea9a15ff9bd2ad533fbc57237fdff51950645f74..64f396edfef8b720abd26a1edebda1275aec07f0 100644
--- a/packages/SystemUI/res-keyguard/values-in/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-in/strings.xml
@@ -151,4 +151,7 @@
SIM kini dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Tersisa %d percobaan sebelum SIM tidak dapat digunakan secara permanen. Hubungi operator untuk mengetahui detailnya.SIM kini dinonaktifkan. Masukkan kode PUK untuk melanjutkan. Tersisa %d percobaan sebelum SIM tidak dapat digunakan secara permanen. Hubungi operator untuk mengetahui detailnya.
+ "Default"
+ "Balon"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-is/strings.xml b/packages/SystemUI/res-keyguard/values-is/strings.xml
index 132e4eb5d1f5d13acaf0ad0a458c3fa47f7b9983..aa33215fc124659be4c16146e0e6aa13929042ff 100644
--- a/packages/SystemUI/res-keyguard/values-is/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-is/strings.xml
@@ -151,4 +151,7 @@
SIM-kortið er nú óvirkt. Sláðu inn PUK-númer til að halda áfram. Það er %d tilraun eftir þar til SIM-kortið verður ónothæft til frambúðar. Hafðu samband við símafyrirtækið til að fá upplýsingar.SIM-kortið er nú óvirkt. Sláðu inn PUK-númer til að halda áfram. Það eru %d tilraunir eftir þar til SIM-kortið verður ónothæft til frambúðar. Hafðu samband við símafyrirtækið til að fá upplýsingar.
+ "Sjálfgefið"
+ "Blaðra"
+ "Með vísum"
diff --git a/packages/SystemUI/res-keyguard/values-it/strings.xml b/packages/SystemUI/res-keyguard/values-it/strings.xml
index 468435f52e0115bc3a1a6efe12df5a780c507487..761640c72010079283779ac14850345e0b4ecedd 100644
--- a/packages/SystemUI/res-keyguard/values-it/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-it/strings.xml
@@ -151,4 +151,7 @@
La scheda SIM è ora disattivata. Inserisci il codice PUK per continuare. Hai ancora %d tentativi a disposizione prima che la SIM diventi definitivamente inutilizzabile. Per informazioni dettagliate, contatta l\'operatore.La scheda SIM è ora disattivata. Inserisci il codice PUK per continuare. Hai ancora %d tentativo a disposizione prima che la SIM diventi definitivamente inutilizzabile. Per informazioni dettagliate, contatta l\'operatore.
+ "Predefinito"
+ "Bolla"
+ "Analogico"
diff --git a/packages/SystemUI/res-keyguard/values-iw/strings.xml b/packages/SystemUI/res-keyguard/values-iw/strings.xml
index 2b137932f869ec7798f11b5b71c6ab2b3396c422..e72c8081873a9549efb9787c0ce82cc3e059696f 100644
--- a/packages/SystemUI/res-keyguard/values-iw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-iw/strings.xml
@@ -167,4 +167,7 @@
כרטיס ה-SIM מושבת כעת. יש להזין קוד PUK כדי להמשיך. נותרו לך %d ניסיונות נוספים לפני שכרטיס ה-SIM ינעל לצמיתות. למידע נוסף, ניתן לפנות לספק שלך.כרטיס ה-SIM מושבת כעת. יש להזין קוד PUK כדי להמשיך. נותר לך %d ניסיון נוסף לפני שכרטיס ה-SIM ינעל לצמיתות. למידע נוסף, ניתן לפנות לספק שלך.
+ "ברירת מחדל"
+ "בועה"
+ "אנלוגי"
diff --git a/packages/SystemUI/res-keyguard/values-ja/strings.xml b/packages/SystemUI/res-keyguard/values-ja/strings.xml
index 97f5b83301fa3273162b3f18c4e8922e03b8abc3..27adb8c165ebaca0762094046654811f015ad7af 100644
--- a/packages/SystemUI/res-keyguard/values-ja/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ja/strings.xml
@@ -151,4 +151,7 @@
SIM が無効になりました。続行するには PUK コードを入力してください。入力できるのはあと %d 回です。この回数を超えると SIM は完全に使用できなくなります。詳しくは携帯通信会社にお問い合わせください。SIM が無効になりました。続行するには PUK コードを入力してください。入力できるのはあと %d 回です。この回数を超えると SIM は完全に使用できなくなります。詳しくは携帯通信会社にお問い合わせください。
+ "デフォルト"
+ "バブル"
+ "アナログ"
diff --git a/packages/SystemUI/res-keyguard/values-ka/strings.xml b/packages/SystemUI/res-keyguard/values-ka/strings.xml
index 24daf4b893b1992544f57cf611f0b9b63de90e93..d165230613c1af4ee0140502c93026d1e26eafd0 100644
--- a/packages/SystemUI/res-keyguard/values-ka/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ka/strings.xml
@@ -151,4 +151,7 @@
SIM ბარათი ახლა დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK-კოდი. თქვენ დაგრჩათ %d მცდელობა, სანამ SIM სამუდამოდ გამოუსადეგარი გახდება. დეტალური ინფორმაციისთვის დაუკავშირდით თქვენს ოპერატორს.SIM ბარათი ახლა დეაქტივირებულია. გასაგრძელებლად შეიყვანეთ PUK-კოდი. თქვენ დაგრჩათ %d მცდელობა, სანამ SIM სამუდამოდ გამოუსადეგარი გახდება. დეტალური ინფორმაციისთვის დაუკავშირდით თქვენს ოპერატორს.
+ "ნაგულისხმევი"
+ "ბუშტი"
+ "ანალოგური"
diff --git a/packages/SystemUI/res-keyguard/values-kk/strings.xml b/packages/SystemUI/res-keyguard/values-kk/strings.xml
index 330bf53234c1b7325124398ca13fa0b0d37219b6..85223468a0c221478307d69f190a90dc6302a078 100644
--- a/packages/SystemUI/res-keyguard/values-kk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kk/strings.xml
@@ -151,4 +151,7 @@
SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. %d мүмкіндік қалды, одан кейін SIM картасы біржола құлыпталады. Толығырақ мәліметті оператордан алыңыз.SIM картасы өшірілді. Жалғастыру үшін PUK кодын енгізіңіз. %d мүмкіндік қалды, одан кейін SIM картасы біржола құлыпталады. Толығырақ мәліметті оператордан алыңыз.
+ "Әдепкі"
+ "Көпіршік"
+ "Аналогтық"
diff --git a/packages/SystemUI/res-keyguard/values-km/strings.xml b/packages/SystemUI/res-keyguard/values-km/strings.xml
index 9fd949ab6e38a154e5c54d2eb0173877fe0a720e..7b4266a1b816c1ba7b993d18e595010f45a65c0b 100644
--- a/packages/SystemUI/res-keyguard/values-km/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-km/strings.xml
@@ -151,4 +151,7 @@
ឥឡូវនេះស៊ីមត្រូវបានបិទ។ សូមបញ្ចូលកូដ PUK ដើម្បីបន្ត។ អ្នកនៅសល់ការព្យាយាម %d ដងទៀតមុនពេលស៊ីមមិនអាចប្រើបានជាអចិន្ត្រៃយ៍។ ទាក់ទងទៅក្រុមហ៊ុនសេវាទូរសព្ទសម្រាប់ព័ត៌មានលម្អិត។ឥឡូវនេះស៊ីមត្រូវបានបិទ។ សូមបញ្ចូលកូដ PUK ដើម្បីបន្ត។ អ្នកនៅសល់ការព្យាយាម %d ដងទៀតមុនពេលស៊ីមមិនអាចប្រើបានជាអចិន្ត្រៃយ៍។ ទាក់ទងទៅក្រុមហ៊ុនសេវាទូរសព្ទសម្រាប់ព័ត៌មានលម្អិត។
+ "លំនាំដើម"
+ "ពពុះ"
+ "អាណាឡូក"
diff --git a/packages/SystemUI/res-keyguard/values-kn/strings.xml b/packages/SystemUI/res-keyguard/values-kn/strings.xml
index bbda27c135017bf9ea1e4b7b4ca0e489db33f4cd..eaaa8298c8c64dea412ed3fe67487a919dca8701 100644
--- a/packages/SystemUI/res-keyguard/values-kn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-kn/strings.xml
@@ -151,4 +151,7 @@
ಸಿಮ್ ಅನ್ನು ಈಗ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ಸಿಮ್ ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗುವ ಮುನ್ನ ನಿಮ್ಮಲ್ಲಿ %d ಪ್ರಯತ್ನಗಳು ಬಾಕಿ ಉಳಿದಿವೆ. ವಿವರಗಳಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.ಸಿಮ್ ಅನ್ನು ಈಗ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ. ಮುಂದುವರಿಸಲು PUK ಕೋಡ್ ನಮೂದಿಸಿ. ಸಿಮ್ ಶಾಶ್ವತವಾಗಿ ನಿಷ್ಪ್ರಯೋಜಕವಾಗುವ ಮುನ್ನ ನಿಮ್ಮಲ್ಲಿ %d ಪ್ರಯತ್ನಗಳು ಬಾಕಿ ಉಳಿದಿವೆ. ವಿವರಗಳಿಗಾಗಿ ವಾಹಕವನ್ನು ಸಂಪರ್ಕಿಸಿ.
+ "ಡೀಫಾಲ್ಟ್"
+ "ಬಬಲ್"
+ "ಅನಲಾಗ್"
diff --git a/packages/SystemUI/res-keyguard/values-ko/strings.xml b/packages/SystemUI/res-keyguard/values-ko/strings.xml
index 8d8e5f85bbfc5267f7d66f3552e69b68dbe56afa..ca849372f2022fa276e1306193a30d4e2d839191 100644
--- a/packages/SystemUI/res-keyguard/values-ko/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ko/strings.xml
@@ -151,4 +151,7 @@
SIM이 사용 중지되었습니다. 계속하려면 PUK 코드를 입력하세요. %d번 더 실패하면 SIM을 완전히 사용할 수 없게 됩니다. 자세한 내용은 이동통신사에 문의하세요.SIM이 사용 중지되었습니다. 계속하려면 PUK 코드를 입력하세요. %d번 더 실패하면 SIM을 완전히 사용할 수 없게 됩니다. 자세한 내용은 이동통신사에 문의하세요.
+ "기본"
+ "버블"
+ "아날로그"
diff --git a/packages/SystemUI/res-keyguard/values-ky/strings.xml b/packages/SystemUI/res-keyguard/values-ky/strings.xml
index fd02abbab849d6a04763d3db0ed5f0bf13327849..805a567c76397f980ce101674fb59029111a5065 100644
--- a/packages/SystemUI/res-keyguard/values-ky/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ky/strings.xml
@@ -151,4 +151,7 @@
SIM-карта азыр жарактан чыкты. Улантуу үчүн PUK-кодду киргизиңиз. SIM-картанын биротоло жарактан чыгарына %d аракет калды. Чоо-жайын билүү үчүн байланыш операторуна кайрылыңыз.SIM-карта азыр жарактан чыкты. Улантуу үчүн PUK-кодду киргизиңиз. SIM-картанын биротоло жарактан чыгаарына %d аракет калды. Чоо-жайын билүү үчүн байланыш операторуна кайрылыңыз.
+ "Демейки"
+ "Көбүк"
+ "Аналог"
diff --git a/packages/SystemUI/res-keyguard/values-lo/strings.xml b/packages/SystemUI/res-keyguard/values-lo/strings.xml
index f7483767f522d2d300a79343f88bf868a52b9191..1418d2750e832d7af8cb8ec5c63cfb60241fedcf 100644
--- a/packages/SystemUI/res-keyguard/values-lo/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lo/strings.xml
@@ -151,4 +151,7 @@
ຕອນນີ້ປິດການນຳໃຊ້ SIM ແລ້ວ. ໃສ່ລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ທ່ານສາມາດລອງໄດ້ອີກ %d ເທື່ອກ່ອນທີ່ SIM ຈະບໍ່ສາມາດໃຊ້ໄດ້ຖາວອນ. ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ.ຕອນນີ້ປິດການນຳໃຊ້ SIM ແລ້ວ. ໃສ່ລະຫັດ PUK ເພື່ອດຳເນີນການຕໍ່. ທ່ານສາມາດລອງໄດ້ອີກ %d ເທື່ອກ່ອນທີ່ SIM ຈະບໍ່ສາມາດໃຊ້ໄດ້ຖາວອນ. ກະລຸນາຕິດຕໍ່ຜູ້ໃຫ້ບໍລິການສຳລັບລາຍລະອຽດ.
+ "ຄ່າເລີ່ມຕົ້ນ"
+ "ຟອງ"
+ "ໂມງເຂັມ"
diff --git a/packages/SystemUI/res-keyguard/values-lt/strings.xml b/packages/SystemUI/res-keyguard/values-lt/strings.xml
index c987b6afa821b6ace1fb21693b77036b9f1ee770..bbd25b2a6f9e53b05cf658ecad88c5aecb3e10cd 100644
--- a/packages/SystemUI/res-keyguard/values-lt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lt/strings.xml
@@ -167,4 +167,7 @@
SIM kortelė dabar yra išjungta. Jei norite tęsti, įveskite PUK kodą. Jums liko %d bandymo. Paskui visiškai nebegalėsite naudoti SIM kortelės. Jei reikia išsamios informacijos, susisiekite su operatoriumi.SIM kortelė dabar yra išjungta. Jei norite tęsti, įveskite PUK kodą. Jums liko %d bandymų. Paskui visiškai nebegalėsite naudoti SIM kortelės. Jei reikia išsamios informacijos, susisiekite su operatoriumi.
+ "Numatytasis"
+ "Debesėlis"
+ "Analoginis"
diff --git a/packages/SystemUI/res-keyguard/values-lv/strings.xml b/packages/SystemUI/res-keyguard/values-lv/strings.xml
index 2ad607ec8cd3b36d7e76e1b35d7c3ee2882ec690..58ca8ce3fd11856942c1c81fd7c6dae26e39b40f 100644
--- a/packages/SystemUI/res-keyguard/values-lv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-lv/strings.xml
@@ -159,4 +159,7 @@
SIM karte tagad ir atspējota. Ievadiet PUK kodu, lai turpinātu. Varat mēģināt vēl %d reizi. Kļūdas gadījumā SIM karti vairs nevarēs izmantot. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru.SIM karte tagad ir atspējota. Ievadiet PUK kodu, lai turpinātu. Varat mēģināt vēl %d reizes. Kļūdas gadījumā SIM karti vairs nevarēs izmantot. Lai iegūtu detalizētu informāciju, sazinieties ar mobilo sakaru operatoru.
+ "Noklusējums"
+ "Burbuļi"
+ "Analogais"
diff --git a/packages/SystemUI/res-keyguard/values-mk/strings.xml b/packages/SystemUI/res-keyguard/values-mk/strings.xml
index 1a3c799b08764ebb44e28509418dc027c978a289..1ffd8a4ecec966cc97345889b95efa16715c2283 100644
--- a/packages/SystemUI/res-keyguard/values-mk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mk/strings.xml
@@ -151,4 +151,7 @@
SIM-картичката сега е оневозможена. Внесете PUK-код за да продолжите. Ви преостанува уште %d обид пред SIM-картичката да стане трајно неупотреблива. Контактирајте го операторот за детали.SIM-картичката сега е оневозможена. Внесете PUK-код за да продолжите. Ви преостануваат уште %d обиди пред SIM-картичката да стане трајно неупотреблива. Контактирајте го операторот за детали.
+ "Стандарден"
+ "Балонче"
+ "Аналоген"
diff --git a/packages/SystemUI/res-keyguard/values-ml/strings.xml b/packages/SystemUI/res-keyguard/values-ml/strings.xml
index 685685e61bcf109e16018cf286833c60662b68ff..1f60c7365c31606af7fb9e66fc2a1c3732bf1a77 100644
--- a/packages/SystemUI/res-keyguard/values-ml/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ml/strings.xml
@@ -151,4 +151,7 @@
സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. സിം ശാശ്വതമായി ഉപയോഗശൂന്യമാകുന്നതിന് മുമ്പായി %d ശ്രമങ്ങൾ കൂടി ശേഷിക്കുന്നു. വിശദാംശങ്ങൾക്ക് കാരിയറുമായി ബന്ധപ്പെടുക.സിം ഇപ്പോൾ പ്രവർത്തനരഹിതമാക്കി. തുടരുന്നതിന് PUK കോഡ് നൽകുക. സിം ശാശ്വതമായി ഉപയോഗശൂന്യമാകുന്നതിന് മുമ്പായി %d ശ്രമം കൂടി ശേഷിക്കുന്നു. വിശദാംശങ്ങൾക്ക് കാരിയറുമായി ബന്ധപ്പെടുക.
+ "ഡിഫോൾട്ട്"
+ "ബബ്ൾ"
+ "അനലോഗ്"
diff --git a/packages/SystemUI/res-keyguard/values-mn/strings.xml b/packages/SystemUI/res-keyguard/values-mn/strings.xml
index acdacdc159721d80ef5d6aa296645257eb652b22..55dd70c35b662d7891ef662038ed9acfe663ea17 100644
--- a/packages/SystemUI/res-keyguard/values-mn/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mn/strings.xml
@@ -151,4 +151,7 @@
SIM-г идэвхгүй болголоо. Үргэлжлүүлэхийн тулд PUK кодыг оруулна уу. Таны SIM бүрмөсөн хүчингүй болох хүртэл %d оролдлого үлдлээ. Дэлгэрэнгүй мэдээлэл авахын тулд оператор компанитайгаа холбогдоно уу.SIM-г идэвхгүй болголоо. Үргэлжлүүлэхийн тулд PUK кодыг оруулна уу. Таны SIM бүрмөсөн хүчингүй болох хүртэл %d оролдлого үлдлээ. Дэлгэрэнгүй мэдээлэл авахын тулд оператор компанитайгаа холбогдоно уу.
+ "Өгөгдмөл"
+ "Бөмбөлөг"
+ "Aналог"
diff --git a/packages/SystemUI/res-keyguard/values-mr/strings.xml b/packages/SystemUI/res-keyguard/values-mr/strings.xml
index 4ff6862a06217a2e1c11275eae02c742278a0fd1..0ba82e0d3d90f0ab386c8d799eb04ec9f490f354 100644
--- a/packages/SystemUI/res-keyguard/values-mr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-mr/strings.xml
@@ -151,4 +151,7 @@
सिम आता बंद केलेले आहे. सुरू ठेवण्यासाठी PUK कोड टाका. सिम कायमचे बंद होण्याआधी तुमच्याकडे %d प्रयत्न शिल्लक आहेत. तपशीलांसाठी वाहकाशी संपर्क साधा.सिम आता बंद केलेले आहे. सुरू ठेवण्यासाठी PUK कोड टाका. सिम कायमचे बंद होण्याआधी तुमच्याकडे %d प्रयत्न शिल्लक आहे. तपशीलांसाठी वाहकाशी संपर्क साधा.
+ "डीफॉल्ट"
+ "बबल"
+ "अॅनालॉग"
diff --git a/packages/SystemUI/res-keyguard/values-ms/strings.xml b/packages/SystemUI/res-keyguard/values-ms/strings.xml
index 5c9e7c9c6f4d8cb2d99f487f608daa05ba996b73..17e105619f96cdbe41b53f16fdd5228c16355eb5 100644
--- a/packages/SystemUI/res-keyguard/values-ms/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ms/strings.xml
@@ -151,4 +151,7 @@
Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Tinggal %d percubaan sebelum SIM tidak boleh digunakan secara kekal. Hubungi pembawa untuk mendapatkan butiran.Kini SIM dilumpuhkan. Masukkan kod PUK untuk meneruskan. Tinggal %d percubaan sebelum SIM tidak boleh digunakan secara kekal. Hubungi pembawa untuk mendapatkan butiran.
+ "Lalai"
+ "Gelembung"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-my/strings.xml b/packages/SystemUI/res-keyguard/values-my/strings.xml
index c816159e7714306a5f3c6139efc56f7778df9a73..28fe2b210cea9ce843032447833ded19e0e5ac00 100644
--- a/packages/SystemUI/res-keyguard/values-my/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-my/strings.xml
@@ -151,4 +151,7 @@
ဆင်းမ်ကဒ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကဒ် အပြီးပိတ်မသွားမီ သင့်တွင် %d ကြိမ် စမ်းသပ်ခွင့် ကျန်ပါသေးသည်။ အသေးစိတ်အချက်များအတွက် ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။ဆင်းမ်ကဒ်သည် ယခု ပိတ်သွားပါပြီ။ ရှေ့ဆက်ရန် PUK ကုဒ်ကို ထည့်ပါ။ ဆင်းမ်ကဒ် အပြီးပိတ်မသွားမီ သင့်တွင် %d ကြိမ် စမ်းသပ်ခွင့် ကျန်ပါသေးသည်။ အသေးစိတ်အချက်များအတွက် ဝန်ဆောင်မှုပေးသူကို ဆက်သွယ်ပါ။
+ "မူလ"
+ "ပူဖောင်းကွက်"
+ "လက်တံနာရီ"
diff --git a/packages/SystemUI/res-keyguard/values-nb/strings.xml b/packages/SystemUI/res-keyguard/values-nb/strings.xml
index 60a5d36264289215998d53e27db17092d11cbe71..692dcad14e6e73491c82d9125a8553091f2f66c6 100644
--- a/packages/SystemUI/res-keyguard/values-nb/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nb/strings.xml
@@ -151,4 +151,7 @@
SIM-kortet er deaktivert nå. Skriv inn PUK-koden for å fortsette. Du har %d forsøk igjen før SIM-kortet blir permanent ubrukelig. Kontakt operatøren for å få vite mer.SIM-kortet er deaktivert nå. Skriv inn PUK-koden for å fortsette. Du har %d forsøk igjen før SIM-kortet blir permanent ubrukelig. Kontakt operatøren for å få vite mer.
+ "Standard"
+ "Boble"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-ne/strings.xml b/packages/SystemUI/res-keyguard/values-ne/strings.xml
index 5dcacdfeb7474cdd2a48097caf425e5775d3021e..8102021247b3abd334cd93db490e56a94be950d2 100644
--- a/packages/SystemUI/res-keyguard/values-ne/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ne/strings.xml
@@ -151,4 +151,7 @@
SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग %d प्रयासहरू बाँकी छन्, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।SIM लाई असक्षम पारिएको छ। जारी राख्न PUK कोड प्रविष्टि गर्नुहोस्। तपाईंसँग %d प्रयास बाँकी छ, त्यसपछि SIM सदाका लागि प्रयोग गर्न नमिल्ने हुन्छ। विवरणहरूका लागि सेवा प्रदायकलाई सम्पर्क गर्नुहोस्।
+ "पूर्वनिर्धारित"
+ "बबल"
+ "एनालग"
diff --git a/packages/SystemUI/res-keyguard/values-nl/strings.xml b/packages/SystemUI/res-keyguard/values-nl/strings.xml
index 7f18008abdb813ed612422cf01e1d2bfb03a6234..c79f2f7a536b06e8ffe00c1a7b11b58f29f2fe78 100644
--- a/packages/SystemUI/res-keyguard/values-nl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-nl/strings.xml
@@ -151,4 +151,7 @@
De simkaart is nu uitgeschakeld. Geef de pukcode op om door te gaan. Je hebt nog %d pogingen over voordat de simkaart definitief onbruikbaar wordt. Neem contact op met je provider voor meer informatie.De simkaart is nu uitgeschakeld. Geef de pukcode op om door te gaan. Je hebt nog %d poging over voordat de simkaart definitief onbruikbaar wordt. Neem contact op met je provider voor meer informatie.
+ "Standaard"
+ "Bel"
+ "Analoog"
diff --git a/packages/SystemUI/res-keyguard/values-or/strings.xml b/packages/SystemUI/res-keyguard/values-or/strings.xml
index e1f512380c68782d4165dc17e6255d22e6884f01..c28561a07fe7080683d93247c483cd0ff9f89866 100644
--- a/packages/SystemUI/res-keyguard/values-or/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-or/strings.xml
@@ -151,4 +151,7 @@
SIM କାର୍ଡକୁ ବର୍ତ୍ତମାନ ଅକ୍ଷମ କରିଦିଆଯାଇଛି। ଜାରି ରଖିବାକୁ PUK କୋଡ୍ ଲେଖନ୍ତୁ। ଆଉ %d ଥର ଭୁଲ କୋଡ୍ ଲେଖିବା ପରେ SIM କାର୍ଡ ସ୍ଥାୟୀ ଭାବେ ଅନୁପଯୋଗୀ ହୋଇଯିବ। ବିବରଣୀ ପାଇଁ କେରିଅର୍ର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।SIM କାର୍ଡକୁ ବର୍ତ୍ତମାନ ଅକ୍ଷମ କରିଦିଆଯାଇଛି। ଜାରି ରଖିବାକୁ PUK କୋଡ୍ ଲେଖନ୍ତୁ। ଆଉ %d ଥର ଭୁଲ କୋଡ୍ ଲେଖିବା ପରେ SIM କାର୍ଡ ସ୍ଥାୟୀ ଭାବେ ଅନୁପଯୋଗୀ ହୋଇଯିବ। ବିବରଣୀ ପାଇଁ କେରିଅର୍ର ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।
+ "ଡିଫଲ୍ଟ"
+ "ବବଲ୍"
+ "ଆନାଲଗ୍"
diff --git a/packages/SystemUI/res-keyguard/values-pa/strings.xml b/packages/SystemUI/res-keyguard/values-pa/strings.xml
index d15936da1eac80d54e24aaa82f1d701f80fbbf87..01b5d8ef4ba698978d0d900eceeb32daac2723c9 100644
--- a/packages/SystemUI/res-keyguard/values-pa/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pa/strings.xml
@@ -151,4 +151,7 @@
ਸਿਮ ਹੁਣ ਬੰਦ ਹੋ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਸਿਮ ਦੇ ਪੱਕੇ ਤੌਰ \'ਤੇ ਬੇਕਾਰ ਹੋ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ %d ਕੋਸ਼ਿਸ਼ ਬਾਕੀ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।ਸਿਮ ਹੁਣ ਬੰਦ ਹੋ ਗਿਆ ਹੈ। ਜਾਰੀ ਰੱਖਣ ਲਈ PUK ਕੋਡ ਦਾਖਲ ਕਰੋ। ਸਿਮ ਦੇ ਪੱਕੇ ਤੌਰ \'ਤੇ ਬੇਕਾਰ ਹੋ ਜਾਣ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਡੇ ਕੋਲ %d ਕੋਸ਼ਿਸ਼ਾਂ ਬਾਕੀ ਹਨ। ਵੇਰਵਿਆਂ ਲਈ ਕੈਰੀਅਰ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।
+ "ਪੂਰਵ-ਨਿਰਧਾਰਤ"
+ "ਬੁਲਬੁਲਾ"
+ "ਐਨਾਲੌਗ"
diff --git a/packages/SystemUI/res-keyguard/values-pl/strings.xml b/packages/SystemUI/res-keyguard/values-pl/strings.xml
index 796e3b46ff7197b1eb20120a6ac57d8a6f22479a..f86a0824b8aa38de9df43d49c0a70cdad8321aa7 100644
--- a/packages/SystemUI/res-keyguard/values-pl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pl/strings.xml
@@ -167,4 +167,7 @@
Karta SIM została wyłączona. Wpisz kod PUK, by przejść dalej. Masz jeszcze %d próby, zanim karta SIM zostanie trwale zablokowana. Aby uzyskać szczegółowe informacje, skontaktuj się z operatorem.Karta SIM została wyłączona. Wpisz kod PUK, by przejść dalej. Masz jeszcze %d próbę, zanim karta SIM zostanie trwale zablokowana. Aby uzyskać szczegółowe informacje, skontaktuj się z operatorem.
+ "Domyślna"
+ "Bąbelkowy"
+ "Analogowy"
diff --git a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
index bfd046e1b10be6f04e37b3b180d0df7da5b3eff4..436dd551df7eae709972d342a2bcc6a17a603afa 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rBR/strings.xml
@@ -151,4 +151,7 @@
O chip agora está desativado. Informe o código PUK para continuar. Você tem %d tentativa restante antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.O chip agora está desativado. Informe o código PUK para continuar. Você tem %d tentativas restantes antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.
+ "Padrão"
+ "Bolha"
+ "Analógico"
diff --git a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
index ba2b5bcf4853660a6aea937d47019aa81756f50b..2ba4268168c0597f8d132a509bb060cc1b599383 100644
--- a/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt-rPT/strings.xml
@@ -151,4 +151,7 @@
O SIM encontra-se desativado. Introduza o código PUK para continuar. Tem mais %d tentativas antes de o cartão SIM ficar permanentemente inutilizável. Contacte o operador para obter mais detalhes.O SIM encontra-se desativado. Introduza o código PUK para continuar. Tem mais %d tentativa antes de o cartão SIM ficar permanentemente inutilizável. Contacte o operador para obter mais detalhes.
+ "Predefinido"
+ "Balão"
+ "Analógico"
diff --git a/packages/SystemUI/res-keyguard/values-pt/strings.xml b/packages/SystemUI/res-keyguard/values-pt/strings.xml
index bfd046e1b10be6f04e37b3b180d0df7da5b3eff4..436dd551df7eae709972d342a2bcc6a17a603afa 100644
--- a/packages/SystemUI/res-keyguard/values-pt/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-pt/strings.xml
@@ -151,4 +151,7 @@
O chip agora está desativado. Informe o código PUK para continuar. Você tem %d tentativa restante antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.O chip agora está desativado. Informe o código PUK para continuar. Você tem %d tentativas restantes antes de o chip se tornar permanentemente inutilizável. Entre em contato com a operadora para saber mais detalhes.
+ "Padrão"
+ "Bolha"
+ "Analógico"
diff --git a/packages/SystemUI/res-keyguard/values-ro/strings.xml b/packages/SystemUI/res-keyguard/values-ro/strings.xml
index bde405c75ef06ee426592e8c8c0c40272934cf5b..6fdc95804129ab28563ec9833e4a7744f59fa6f5 100644
--- a/packages/SystemUI/res-keyguard/values-ro/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ro/strings.xml
@@ -159,4 +159,7 @@
Cardul SIM este dezactivat acum. Introduceți codul PUK pentru a continua. V-au mai rămas %d de încercări până când cardul SIM va deveni inutilizabil definitiv. Contactați operatorul pentru detalii.Cardul SIM este dezactivat acum. Introduceți codul PUK pentru a continua. V-a mai rămas %d încercare până când cardul SIM va deveni inutilizabil definitiv. Contactați operatorul pentru detalii.
+ "Prestabilit"
+ "Balon"
+ "Analogic"
diff --git a/packages/SystemUI/res-keyguard/values-ru/strings.xml b/packages/SystemUI/res-keyguard/values-ru/strings.xml
index 07718c9eab0af72eb857704dcc90a30beaad15df..f9bd05bb3e21a51e8dcfd34cfdd56a84396646bc 100644
--- a/packages/SystemUI/res-keyguard/values-ru/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ru/strings.xml
@@ -167,4 +167,7 @@
SIM-карта отключена. Чтобы продолжить, введите PUK-код. Осталось %d попыток. После этого SIM-карта будет заблокирована навсегда. За подробной информацией обратитесь к оператору связи.SIM-карта отключена. Чтобы продолжить, введите PUK-код. Осталось %d попытки. После этого SIM-карта будет заблокирована навсегда. За подробной информацией обратитесь к оператору связи.
+ "По умолчанию"
+ "Пузырь"
+ "Стрелки"
diff --git a/packages/SystemUI/res-keyguard/values-si/strings.xml b/packages/SystemUI/res-keyguard/values-si/strings.xml
index 253cf61dbd29c824885c0f75e5ddc5bd33fb333a..e40be057dca69a4308bd11c97e7fdd5f2079fcb8 100644
--- a/packages/SystemUI/res-keyguard/values-si/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-si/strings.xml
@@ -151,4 +151,7 @@
SIM දැන් අබල කර ඇත. දිගටම කරගෙන යාමට PUK කේතය ඇතුළු කරන්න. SIM ස්ථිරවම භාවිත කළ නොහැකි බවට පත් වීමට පෙර ඔබ සතුව උත්සාහයන් %dක් ඉතිරිව ඇත. විස්තර සඳහා වාහක සම්බන්ධ කර ගන්න.SIM දැන් අබල කර ඇත. දිගටම කරගෙන යාමට PUK කේතය ඇතුළු කරන්න. SIM ස්ථිරවම භාවිත කළ නොහැකි බවට පත් වීමට පෙර ඔබ සතුව උත්සාහයන් %dක් ඉතිරිව ඇත. විස්තර සඳහා වාහක සම්බන්ධ කර ගන්න.
+ "පෙරනිමි"
+ "බුබුළ"
+ "ප්රතිසමය"
diff --git a/packages/SystemUI/res-keyguard/values-sk/strings.xml b/packages/SystemUI/res-keyguard/values-sk/strings.xml
index 4a70cbc64079bd9b3a77b088eac4a94590192187..e7800e955d086dc93fd3a5c16932b27d7e3ef4a3 100644
--- a/packages/SystemUI/res-keyguard/values-sk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sk/strings.xml
@@ -167,4 +167,7 @@
SIM karta je deaktivovaná. Pokračujte zadaním kódu PUK. Zostáva vám %d pokusov, potom sa SIM karta natrvalo zablokuje. Podrobnosti vám poskytne operátor.SIM karta je deaktivovaná. Pokračujte zadaním kódu PUK. Zostáva vám %d pokus, potom sa SIM karta natrvalo zablokuje. Podrobnosti vám poskytne operátor.
+ "Predvolený"
+ "Bublina"
+ "Analógový"
diff --git a/packages/SystemUI/res-keyguard/values-sl/strings.xml b/packages/SystemUI/res-keyguard/values-sl/strings.xml
index 0fbcbfca5d87e9e8fdafc321316ae7aff944194a..cce3a313247741a162c5c44412a7aa3b6d3fbf46 100644
--- a/packages/SystemUI/res-keyguard/values-sl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sl/strings.xml
@@ -167,4 +167,7 @@
Kartica SIM je zdaj onemogočena. Če želite nadaljevati, vnesite kodo PUK. Na voljo imate še %d poskuse. Potem bo kartica SIM postala trajno neuporabna. Za podrobnosti se obrnite na operaterja.Kartica SIM je zdaj onemogočena. Če želite nadaljevati, vnesite kodo PUK. Na voljo imate še %d poskusov. Potem bo kartica SIM postala trajno neuporabna. Za podrobnosti se obrnite na operaterja.
+ "Privzeto"
+ "Mehurček"
+ "Analogno"
diff --git a/packages/SystemUI/res-keyguard/values-sq/strings.xml b/packages/SystemUI/res-keyguard/values-sq/strings.xml
index 82fefeab03ec5c487637a6385c419af83c5a0bd0..e4b37d0f1119f1ff1c392b717968b44f04d425ad 100644
--- a/packages/SystemUI/res-keyguard/values-sq/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sq/strings.xml
@@ -38,7 +38,7 @@
"%s • Po karikohet""%s • Po karikohet me shpejtësi""%s • Po karikohet ngadalë"
- "Lidh ngarkuesin."
+ "Lidh karikuesin.""Shtyp \"Meny\" për të shkyçur.""Rrjeti është i kyçur""Nuk ka kartë SIM"
@@ -151,4 +151,7 @@
Karta SIM tani është çaktivizuar. Fut kodin PUK për të vazhduar. Të kanë mbetur edhe %d përpjekje përpara se karta SIM të bëhet përgjithmonë e papërdorshme. Kontakto me operatorin për detaje.Karta SIM tani është çaktivizuar. Fut kodin PUK për të vazhduar. Të ka mbetur edhe %d përpjekje përpara se karta SIM të bëhet përgjithmonë e papërdorshme. Kontakto me operatorin për detaje.
+ "E parazgjedhur"
+ "Flluskë"
+ "Analoge"
diff --git a/packages/SystemUI/res-keyguard/values-sr/strings.xml b/packages/SystemUI/res-keyguard/values-sr/strings.xml
index 23a30c8d2d31efa2cadd1c70dbbd1c71d5d22af6..1e6de94125dd7188e5d5a1e1e4b5061a88619893 100644
--- a/packages/SystemUI/res-keyguard/values-sr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sr/strings.xml
@@ -159,4 +159,7 @@
SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још %d покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.SIM је сада онемогућен. Унесите PUK кôд да бисте наставили. Имате још %d покушаја пре него што SIM постане трајно неупотребљив. Детаљне информације потражите од мобилног оператера.
+ "Подразумевани"
+ "Мехурићи"
+ "Аналогни"
diff --git a/packages/SystemUI/res-keyguard/values-sv/strings.xml b/packages/SystemUI/res-keyguard/values-sv/strings.xml
index a9521bc7ab839b81d77f40d1a41b79903acc2442..4cca1767a89dab57c0a5325c8c2ae58819f3feae 100644
--- a/packages/SystemUI/res-keyguard/values-sv/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sv/strings.xml
@@ -151,4 +151,7 @@
SIM-kortet är inaktiverat. Ange PUK-koden om du vill fortsätta. %d försök återstår innan SIM-kortet blir obrukbart. Kontakta operatören för mer information.SIM-kortet är inaktiverat. Ange PUK-koden om du vill fortsätta. %d försök återstår innan SIM-kortet blir obrukbart. Kontakta operatören för mer information.
+ "Standard"
+ "Bubbla"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-sw/strings.xml b/packages/SystemUI/res-keyguard/values-sw/strings.xml
index 5a195351da357346043accbf1574e7cf0d889d61..df518596ebfa032b32fb62e916cb78c6a6e82120 100644
--- a/packages/SystemUI/res-keyguard/values-sw/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-sw/strings.xml
@@ -151,4 +151,7 @@
Sasa SIM imefungwa. Weka msimbo wa PUK ili uendelee. Umesalia na majaribio %d kabla ya SIM kuacha kufanya kazi kabisa. Wasiliana na mtoa huduma kwa maelezo.Sasa SIM imefungwa. Weka msimbo wa PUK ili uendelee. Umesalia na jaribio %d kabla ya SIM kuacha kufanya kazi kabisa. Wasiliana na mtoa huduma kwa maelezo.
+ "Chaguomsingi"
+ "Kiputo"
+ "Analogi"
diff --git a/packages/SystemUI/res-keyguard/values-ta/strings.xml b/packages/SystemUI/res-keyguard/values-ta/strings.xml
index db23ccced31684f91bc94e2e33a29b45a46e9cba..9aa1972c9954c267cb1b6bd6a6c9e20e3d561f3c 100644
--- a/packages/SystemUI/res-keyguard/values-ta/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ta/strings.xml
@@ -151,4 +151,7 @@
சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு, PUK குறியீட்டை உள்ளிடவும். நீங்கள் %d முறை மட்டுமே முயற்சிக்க முடியும். அதன்பிறகு சிம் நிரந்தரமாக முடக்கப்படும். விவரங்களுக்கு, மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்.சிம் தற்போது முடக்கப்பட்டுள்ளது. தொடர்வதற்கு, PUK குறியீட்டை உள்ளிடவும். நீங்கள் %d முறை மட்டுமே முயற்சிக்க முடியும். அதன்பிறகு சிம் நிரந்தரமாக முடக்கப்படும். விவரங்களுக்கு, மொபைல் நிறுவனத்தைத் தொடர்புகொள்ளவும்.
+ "இயல்பு"
+ "பபிள்"
+ "அனலாக்"
diff --git a/packages/SystemUI/res-keyguard/values-te/strings.xml b/packages/SystemUI/res-keyguard/values-te/strings.xml
index 4cc70560db3241c43c84c06aca0e6de9213268b6..925d67302b86b08825cb95d1fc6bcc7c9b08f672 100644
--- a/packages/SystemUI/res-keyguard/values-te/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-te/strings.xml
@@ -151,4 +151,7 @@
SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు %d ప్రయత్నాలు మిగిలి ఉన్నాయి. వివరాల కోసం కారియర్ను సంప్రదించండి.SIM ఇప్పుడు నిలిపివేయబడింది. PUK కోడ్ను నమోదు చేయండి. SIM శాశ్వతంగా నిరుపయోగం కాకుండా ఉండటానికి మీకు %d ప్రయత్నం మిగిలి ఉంది వివరాల కోసం కారియర్ను సంప్రదించండి.
+ "డిఫాల్ట్"
+ "బబుల్"
+ "ఎనలాగ్"
diff --git a/packages/SystemUI/res-keyguard/values-th/strings.xml b/packages/SystemUI/res-keyguard/values-th/strings.xml
index 9ba096a7f6460824b4b1e775acde644827aefb5b..c439c3279e93713f117db367730f2f1cc72539b5 100644
--- a/packages/SystemUI/res-keyguard/values-th/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-th/strings.xml
@@ -151,4 +151,7 @@
ซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก %d ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการซิมถูกปิดใช้งานในขณะนี้ โปรดป้อนรหัส PUK เพื่อทำต่อ คุณพยายามได้อีก %d ครั้งก่อนที่ซิมจะไม่สามารถใช้งานได้อย่างถาวร โปรดติดต่อสอบถามรายละเอียดจากผู้ให้บริการ
+ "ค่าเริ่มต้น"
+ "ลูกโป่ง"
+ "แอนะล็อก"
diff --git a/packages/SystemUI/res-keyguard/values-tl/strings.xml b/packages/SystemUI/res-keyguard/values-tl/strings.xml
index 4f247c3a361df6711b87dea6361b2fc990c2ce3f..a9ca1b627019a0f7048670a22eb3e0f84986c1d4 100644
--- a/packages/SystemUI/res-keyguard/values-tl/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tl/strings.xml
@@ -151,4 +151,7 @@
Naka-disable na ang SIM. Ilagay ang PUK code upang magpatuloy. Mayroon kang %d natitirang pagsubok bago tuluyang hindi magamit ang SIM. Makipag-ugnayan sa carrier para sa mga detalye.Naka-disable na ang SIM. Ilagay ang PUK code upang magpatuloy. Mayroon kang %d na natitirang pagsubok bago tuluyang hindi magamit ang SIM. Makipag-ugnayan sa carrier para sa mga detalye.
+ "Default"
+ "Bubble"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-tr/strings.xml b/packages/SystemUI/res-keyguard/values-tr/strings.xml
index fc4fa408429c0e30eb2bc52a3f7bcb0116f24463..4e8150501ff0aadc8d84474e1660782c9d465015 100644
--- a/packages/SystemUI/res-keyguard/values-tr/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-tr/strings.xml
@@ -151,4 +151,7 @@
SIM artık devre dışı. Devam etmek için PUK kodunu girin. SIM kalıcı olarak kullanım dışı kalmadan önce %d deneme hakkınız kaldı. Ayrıntılı bilgi için operatörünüzle iletişim kurun.SIM artık devre dışı. Devam etmek için PUK kodunu girin. SIM kalıcı olarak kullanım dışı kalmadan önce %d deneme hakkınız kaldı. Ayrıntılı bilgi için operatörünüzle iletişim kurun.
+ "Varsayılan"
+ "Baloncuk"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-uk/strings.xml b/packages/SystemUI/res-keyguard/values-uk/strings.xml
index e3b5256b767cf3cabd3700b5b23465f7c1ff12bd..c683e329f17b9e9ee3d666efa35b18d974939c01 100644
--- a/packages/SystemUI/res-keyguard/values-uk/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uk/strings.xml
@@ -167,4 +167,7 @@
SIM-карту заблоковано. Щоб продовжити, введіть PUK-код. Залишилося %d спроб. Після цього SIM-карту буде назавжди заблоковано. Щоб дізнатися більше, зверніться до свого оператора.SIM-карту заблоковано. Щоб продовжити, введіть PUK-код. Залишилося %d спроби. Після цього SIM-карту буде назавжди заблоковано. Щоб дізнатися більше, зверніться до свого оператора.
+ "За умовчанням"
+ "Бульбашковий"
+ "Аналоговий"
diff --git a/packages/SystemUI/res-keyguard/values-ur/strings.xml b/packages/SystemUI/res-keyguard/values-ur/strings.xml
index ed44c0321c8e57b0ad4843aa21ecbbbba29abb9e..96b949bccc3d1068b888fc5df6b75df026093e0e 100644
--- a/packages/SystemUI/res-keyguard/values-ur/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-ur/strings.xml
@@ -151,4 +151,7 @@
SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس %d کوششیں بچی ہیں۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔SIM اب غیر فعال ہے۔ جاری رکھنے کیلئے PUK کوڈ درج کریں۔ SIM کے مستقل طور پر ناقابل استعمال ہونے سے پہلے آپ کے پاس %d کوشش بچی ہے۔ تفصیلات کیلئے کیریئر سے رابطہ کریں۔
+ "ڈیفالٹ"
+ "بلبلہ"
+ "اینالاگ"
diff --git a/packages/SystemUI/res-keyguard/values-uz/strings.xml b/packages/SystemUI/res-keyguard/values-uz/strings.xml
index b78e5bff65c46010073849f2fab81cfdd98e5ab8..80509ac2fab25f966e7418782d63407f15bfc0b1 100644
--- a/packages/SystemUI/res-keyguard/values-uz/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-uz/strings.xml
@@ -153,4 +153,7 @@
SIM karta faolsizlantirildi. Davom etish uchun PUK kodni kiriting. Yana %d marta xato qilsangiz, SIM kartangiz butunlay qulflanadi. Batafsil axborot olish uchun tarmoq operatoriga murojaat qiling.SIM karta faolsizlantirildi. Davom etish uchun PUK kodni kiriting. Yana %d marta xato qilsangiz, SIM kartangiz butunlay qulflanadi. Batafsil axborot olish uchun tarmoq operatoriga murojaat qiling.
+ "Odatiy"
+ "Pufaklar"
+ "Analog"
diff --git a/packages/SystemUI/res-keyguard/values-vi/strings.xml b/packages/SystemUI/res-keyguard/values-vi/strings.xml
index 7f51ace8cdd832db156f865b4842ad0ce9eec40e..b8c199897daa787448fa48a2a867d6953b6691b2 100644
--- a/packages/SystemUI/res-keyguard/values-vi/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-vi/strings.xml
@@ -151,4 +151,7 @@
SIM hiện đã bị tắt. Hãy nhập mã PUK để tiếp tục. Bạn còn %d lần thử trước khi SIM vĩnh viễn không sử dụng được. Hãy liên hệ với nhà cung cấp dịch vụ để biết chi tiết.SIM hiện đã bị tắt. Hãy nhập mã PUK để tiếp tục. Bạn còn %d lần thử trước khi SIM vĩnh viễn không thể sử dụng được. Hãy liên hệ với nhà cung cấp dịch vụ để biết chi tiết.
+ "Mặc định"
+ "Bong bóng"
+ "Đồng hồ kim"
diff --git a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
index 9e8a171e99b045675d001a73f6c06994de931fd4..dfe59d761e41fc98fe715d669d329f6aacf3c75f 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rCN/strings.xml
@@ -159,4 +159,7 @@
SIM 卡现已停用,请输入 PUK 码继续使用。您还可以尝试 %d 次。如果仍不正确,该 SIM 卡将永远无法使用。有关详情,请联系您的运营商。SIM 卡现已停用,请输入 PUK 码继续使用。您还可以尝试 %d 次。如果仍不正确,该 SIM 卡将永远无法使用。有关详情,请联系您的运营商。
+ "默认"
+ "泡泡"
+ "指针"
diff --git a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
index 17d3d4286f3599d92b3909e00f39fa938b42069f..71696488fc8b9aa317412d593ca6219439302aa9 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rHK/strings.xml
@@ -159,4 +159,7 @@
SIM 卡已停用。請輸入 PUK 碼以繼續進行。您還可以再試 %d 次。如果仍然輸入錯誤,SIM 卡將永久無法使用。詳情請與流動網絡供應商聯絡。SIM 卡已停用。請輸入 PUK 碼以繼續進行。您還可以再試 %d 次。如果仍然輸入錯誤,SIM 卡將永久無法使用。詳情請與流動網絡供應商聯絡。
+ "預設"
+ "泡泡"
+ "指針"
diff --git a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
index 6f6482f3f0dcac5e6d3de9d967ebb4419bb8bef9..f5b981c46638f4556040d0210ee9aed460c9ae67 100644
--- a/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zh-rTW/strings.xml
@@ -159,4 +159,7 @@
SIM 卡現在已遭停用。請輸入 PUK 碼以繼續進行。你還可以再試 %d 次,如果仍然失敗,SIM 卡將永久無法使用。詳情請與電信業者聯絡。SIM 卡現在已遭停用。請輸入 PUK 碼以繼續進行。你還可以再試 %d 次,如果仍然失敗,SIM 卡將永久無法使用。詳情請與電信業者聯絡。
+ "預設"
+ "泡泡"
+ "類比"
diff --git a/packages/SystemUI/res-keyguard/values-zu/strings.xml b/packages/SystemUI/res-keyguard/values-zu/strings.xml
index b4351a72828997c3abdd4b771ef5400558148bf4..6a7f6475809efe2529ad82d1849d199d6be6b0d2 100644
--- a/packages/SystemUI/res-keyguard/values-zu/strings.xml
+++ b/packages/SystemUI/res-keyguard/values-zu/strings.xml
@@ -151,4 +151,7 @@
I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Unemizamo engu-%d esele ngaphambi kokuthi i-SIM ingasebenziseki unaphakade. Xhumana nenkampani yenethiwekhi ngemininingwane.I-SIM manje ikhutshaziwe. Faka ikhodi ye-PUK ukuze uqhubeke. Unemizamo engu-%d esele ngaphambi kokuthi i-SIM ingasebenziseki unaphakade. Xhumana nenkampani yenethiwekhi ngemininingwane.
+ "Okuzenzekelayo"
+ "Ibhamuza"
+ "I-Analog"
diff --git a/packages/SystemUI/res-keyguard/values/dimens.xml b/packages/SystemUI/res-keyguard/values/dimens.xml
index 8e00efeed62c8eaddf07929c815871bc40e2f34a..f9389ce24d96c477f73c069a5ddfe5623a1dddf4 100644
--- a/packages/SystemUI/res-keyguard/values/dimens.xml
+++ b/packages/SystemUI/res-keyguard/values/dimens.xml
@@ -53,8 +53,8 @@
4dp@dimen/widget_title_font_size
- 24dp
- 32dp
+ 17dp
+ 25dp12dp8dp
diff --git a/packages/SystemUI/res-keyguard/values/strings.xml b/packages/SystemUI/res-keyguard/values/strings.xml
index 25eafad787dd283a0ff7fff180bb056f6e2c664f..17a7d0835f1448348e129904ef4bf94b82a0ad89 100644
--- a/packages/SystemUI/res-keyguard/values/strings.xml
+++ b/packages/SystemUI/res-keyguard/values/strings.xml
@@ -415,14 +415,11 @@ number">%d remaining attempt before SIM becomes permanently unusable.
number">%d remaining attempts before SIM becomes permanently unusable. Contact carrier for details.
-
- Default
-
- Bubble
-
- Analog
+
+ Default
+
+ Bubble
+
+ Analog
diff --git a/core/res/res/anim/lock_lock.xml b/packages/SystemUI/res/anim/lock_lock.xml
similarity index 95%
rename from core/res/res/anim/lock_lock.xml
rename to packages/SystemUI/res/anim/lock_lock.xml
index 3b8c4855fc8f689e81623464ad02f39f8a847424..3167e7cd616d69a5569942d6e29ec02a55a4c912 100644
--- a/core/res/res/anim/lock_lock.xml
+++ b/packages/SystemUI/res/anim/lock_lock.xml
@@ -1,17 +1,18 @@
-
+
diff --git a/packages/SystemUI/res/anim/lock_lock_circular.xml b/packages/SystemUI/res/anim/lock_lock_circular.xml
new file mode 100644
index 0000000000000000000000000000000000000000..81694407b640e05a581f3c36c90ebceb08ca4703
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_circular.xml
@@ -0,0 +1,320 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_lock_filled.xml b/packages/SystemUI/res/anim/lock_lock_filled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..017c3299c3b224ba9b6004ac476acd684004fdd7
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_filled.xml
@@ -0,0 +1,215 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_lock_rounded.xml b/packages/SystemUI/res/anim/lock_lock_rounded.xml
new file mode 100644
index 0000000000000000000000000000000000000000..fc4545c4323d73b605c83cf4e8aa9f207e20a86e
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_lock_rounded.xml
@@ -0,0 +1,314 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/res/res/anim/lock_scanning.xml b/packages/SystemUI/res/anim/lock_scanning.xml
similarity index 100%
rename from core/res/res/anim/lock_scanning.xml
rename to packages/SystemUI/res/anim/lock_scanning.xml
diff --git a/packages/SystemUI/res/anim/lock_scanning_circular.xml b/packages/SystemUI/res/anim/lock_scanning_circular.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9468213562f4a03f577669d97970edf6f3d89bd4
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_circular.xml
@@ -0,0 +1,537 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_scanning_filled.xml b/packages/SystemUI/res/anim/lock_scanning_filled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..83ac8ad205f7c4ab6c8f040c77733419fb6d5e5f
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_filled.xml
@@ -0,0 +1,339 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_scanning_rounded.xml b/packages/SystemUI/res/anim/lock_scanning_rounded.xml
new file mode 100644
index 0000000000000000000000000000000000000000..983549230b546cc2ad026e16ef5c17787d83cc1a
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_scanning_rounded.xml
@@ -0,0 +1,531 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/res/res/anim/lock_to_error.xml b/packages/SystemUI/res/anim/lock_to_error.xml
similarity index 100%
rename from core/res/res/anim/lock_to_error.xml
rename to packages/SystemUI/res/anim/lock_to_error.xml
diff --git a/packages/SystemUI/res/anim/lock_to_error_circular.xml b/packages/SystemUI/res/anim/lock_to_error_circular.xml
new file mode 100644
index 0000000000000000000000000000000000000000..9a847232d80bd87e0aa1bca6a7caea6dc87feaea
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_circular.xml
@@ -0,0 +1,276 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_to_error_filled.xml b/packages/SystemUI/res/anim/lock_to_error_filled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..6eb7425d90021c9595924009f5c623c95d8bd533
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_filled.xml
@@ -0,0 +1,188 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_to_error_rounded.xml b/packages/SystemUI/res/anim/lock_to_error_rounded.xml
new file mode 100644
index 0000000000000000000000000000000000000000..46043caf8862e7f812515dd20bc02a60c3928cca
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_to_error_rounded.xml
@@ -0,0 +1,270 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/core/res/res/anim/lock_unlock.xml b/packages/SystemUI/res/anim/lock_unlock.xml
similarity index 98%
rename from core/res/res/anim/lock_unlock.xml
rename to packages/SystemUI/res/anim/lock_unlock.xml
index 91d44320d8c254ebe656b4c3fc96cccdd3f40199..64456ce47eaa26b39b924cdf2a7fcb3a5d46fdfa 100644
--- a/core/res/res/anim/lock_unlock.xml
+++ b/packages/SystemUI/res/anim/lock_unlock.xml
@@ -34,7 +34,7 @@
android:pathData=" M22.33 21 C22.33,21 6.33,21 6.33,21 C5.6,21 5,20.4 5,19.67 C5,19.67 5,6.33 5,6.33 C5,5.6 5.6,5 6.33,5 C6.33,5 22.33,5 22.33,5 C23.07,5 23.67,5.6 23.67,6.33 C23.67,6.33 23.67,19.67 23.67,19.67 C23.67,20.4 23.07,21 22.33,21c "
android:strokeWidth="2"
android:strokeAlpha="1"
- android:strokeColor="#ffffff" />
+ android:strokeColor="#ffffff"/>
+ android:strokeColor="#ffffff"/>
@@ -230,7 +230,7 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_unlock_filled.xml b/packages/SystemUI/res/anim/lock_unlock_filled.xml
new file mode 100644
index 0000000000000000000000000000000000000000..b2238ada38516e3e9c720d27e2ab05afbdb8bf2d
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_unlock_filled.xml
@@ -0,0 +1,158 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/anim/lock_unlock_rounded.xml b/packages/SystemUI/res/anim/lock_unlock_rounded.xml
new file mode 100644
index 0000000000000000000000000000000000000000..14a88a4aa77a3522f08eec28be3f046ccf58bdc7
--- /dev/null
+++ b/packages/SystemUI/res/anim/lock_unlock_rounded.xml
@@ -0,0 +1,209 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/bubble_dismiss_circle.xml b/packages/SystemUI/res/drawable/bubble_dismiss_circle.xml
index 1661bb22d148e916b1b60fa62451f9a3a8d1f160..8c7e82f8218690b2ba2f8ca4531760f8b0d5c0b5 100644
--- a/packages/SystemUI/res/drawable/bubble_dismiss_circle.xml
+++ b/packages/SystemUI/res/drawable/bubble_dismiss_circle.xml
@@ -24,4 +24,5 @@
android:width="1dp"
android:color="#66FFFFFF" />
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml b/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml
index fe1bb265880c991dd9d6c42655b87b33e08e8241..7c7c8c1e47290c673fdfb5eba4694c0109d90d4e 100644
--- a/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml
+++ b/packages/SystemUI/res/drawable/ic_5g_e_mobiledata.xml
@@ -16,16 +16,10 @@
+ android:width="19.41dp"
+ android:height="15dp">
-
-
-
+ android:pathData="M 6.72 3.52 L 6.54 4.69 L 3.34 4.69 L 2.63 7.41 C 3.011 7.143 3.465 7 3.93 7 C 4.5 6.986 5.041 7.251 5.38 7.71 C 5.756 8.249 5.952 8.893 5.94 9.55 C 5.98 10.276 5.864 11.002 5.6 11.68 C 5.385 12.267 5.007 12.78 4.51 13.16 C 4.043 13.499 3.476 13.671 2.9 13.65 C 2.271 13.653 1.675 13.369 1.28 12.88 C 0.854 12.302 0.636 11.597 0.66 10.88 L 1.76 10.88 C 1.81 12 2.21 12.57 3 12.58 C 3.592 12.589 4.132 12.243 4.37 11.7 C 4.708 11.044 4.85 10.305 4.78 9.57 C 4.767 9.209 4.645 8.86 4.43 8.57 C 4.239 8.309 3.934 8.156 3.61 8.16 C 3.404 8.138 3.196 8.162 3 8.23 C 2.748 8.358 2.518 8.527 2.32 8.73 L 1.31 8.46 L 2.51 3.52 L 6.72 3.52 Z M 11.7 3.39 C 12.459 3.353 13.195 3.662 13.7 4.23 C 14.185 4.864 14.42 5.654 14.36 6.45 L 13.1 6.45 C 13.131 5.938 12.998 5.43 12.72 5 C 12.455 4.679 12.056 4.498 11.64 4.51 C 11.025 4.456 10.42 4.688 10 5.14 C 9.491 5.811 9.179 6.611 9.1 7.45 L 8.75 9.54 L 8.75 10.57 C 8.82 11.86 9.36 12.52 10.36 12.57 C 10.701 12.593 11.043 12.538 11.36 12.41 C 11.661 12.281 11.943 12.113 12.2 11.91 L 12.62 9.62 L 10.77 9.62 L 11 8.52 L 14 8.52 L 13.36 12.23 C 13.176 12.483 12.953 12.706 12.7 12.89 C 11.995 13.398 11.138 13.652 10.27 13.61 C 9.507 13.634 8.773 13.315 8.27 12.74 C 7.748 12.085 7.475 11.267 7.5 10.43 C 7.47 10.097 7.47 9.763 7.5 9.43 L 7.8 7.43 C 7.927 6.332 8.36 5.293 9.05 4.43 C 9.725 3.692 10.703 3.308 11.7 3.39 Z M 20.81 7.21 L 20.62 8.29 L 18.32 8.29 L 18.06 9.8 L 20.06 9.8 L 19.83 10.84 L 17.88 10.84 L 17.59 12.54 L 19.9 12.54 L 19.71 13.61 L 16.14 13.61 L 17.25 7.21 L 20.81 7.21 Z" />
+
diff --git a/packages/SystemUI/res/drawable/ic_info_outline.xml b/packages/SystemUI/res/drawable/ic_info_outline.xml
index a4a3e9aab2393f1bf781cdafdb42e117bf8a65da..44e09f6faa51e00f7fc23780f86c876eeea3f492 100644
--- a/packages/SystemUI/res/drawable/ic_info_outline.xml
+++ b/packages/SystemUI/res/drawable/ic_info_outline.xml
@@ -15,8 +15,8 @@
-->
diff --git a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
index 22e12cc10405e740eca9e485389fb56beea9022e..6cabcaf4bcb40a9a2ed57b4f1ebbb98275882af6 100644
--- a/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
+++ b/packages/SystemUI/res/drawable/ic_qs_no_sim.xml
@@ -14,8 +14,8 @@ Copyright (C) 2017 The Android Open Source Project
limitations under the License.
-->
+
+
-
-
-
-
-
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/bubble_view.xml b/packages/SystemUI/res/layout/bubble_view.xml
index a8eb2914b0b26ecc4ae857582a246ce785e8fc5f..e2dea45e3406a20905b26090dfbd72d1fb18129f 100644
--- a/packages/SystemUI/res/layout/bubble_view.xml
+++ b/packages/SystemUI/res/layout/bubble_view.xml
@@ -24,7 +24,6 @@
android:id="@+id/bubble_image"
android:layout_width="@dimen/individual_bubble_size"
android:layout_height="@dimen/individual_bubble_size"
- android:padding="@dimen/bubble_view_padding"
android:clipToPadding="false"/>
diff --git a/packages/SystemUI/res/layout/keyguard_bottom_area.xml b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
index 28a872c14c9c4947a52c6ed0a9f2464365fbe571..7e5009aa9a51c55865a9b4c05ee074c8a61c5f8d 100755
--- a/packages/SystemUI/res/layout/keyguard_bottom_area.xml
+++ b/packages/SystemUI/res/layout/keyguard_bottom_area.xml
@@ -24,44 +24,7 @@
android:outlineProvider="none"
android:elevation="5dp" >
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/keyguard_indication_text_view.xml b/packages/SystemUI/res/layout/keyguard_indication_text_view.xml
new file mode 100644
index 0000000000000000000000000000000000000000..2b2100c850d8c60a1b5f6c513bece6979405547b
--- /dev/null
+++ b/packages/SystemUI/res/layout/keyguard_indication_text_view.xml
@@ -0,0 +1,24 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/qs_carrier_group.xml b/packages/SystemUI/res/layout/qs_carrier_group.xml
index 36f382b19f4a58d4d33c7c560329d20ec8fb9be8..56efb4911cd0ea6203e4d1d98e35e3ac20c99f2a 100644
--- a/packages/SystemUI/res/layout/qs_carrier_group.xml
+++ b/packages/SystemUI/res/layout/qs_carrier_group.xml
@@ -25,6 +25,17 @@
android:orientation="horizontal">
+
+
-
-
-
-
diff --git a/packages/SystemUI/res/values-af/config.xml b/packages/SystemUI/res/values-af/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-af/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index d3dccfda22441f5dbe1b38a3dab1478413db74e8..538fdce944ad13edb1e0baead9caec4ef0d86d55 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -124,6 +124,7 @@
"Soek tans jou gesig""Gesig is gestaaf""Bevestig"
+ "Tik op Bevestig om te voltooi""Raak die vingerafdruksensor""Vingerafdrukikoon""Soek tans vir jou …"
@@ -399,7 +400,8 @@
"+%d""Minder dringende kennisgewings hieronder""Tik weer om oop te maak"
- "Swiep op om te ontsluit"
+ "Swiep op om oop te maak"
+ "Swiep op om weer te probeer""Jou organisasie bestuur hierdie toestel""Hierdie toestel word deur %s bestuur""Swiep vanaf ikoon vir foon"
@@ -543,6 +545,7 @@
"Dit hou dit in sig totdat jy dit ontspeld. Raak en hou Tuis om dit te ontspeld.""Raak en hou die Terug- en Oorsig-knoppie om hierdie skerm te ontspeld""Raak en hou die Terug- en Tuis-knoppie om hierdie skerm te ontspeld"
+ "Swiep na bo en hou om hierdie skerm te ontspeld""Het dit""Nee, dankie""Skerm is vasgespeld"
diff --git a/packages/SystemUI/res/values-am/config.xml b/packages/SystemUI/res/values-am/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-am/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 362dc24332266ab83f368d04d63488fc77418caa..a3ff5b4d7e83ed7e30eab70aaab80cb9d6c7c8ea 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -124,6 +124,7 @@
"መልክዎን በመፈለግ ላይ""መልክ ተረጋግጧል""ተረጋግጧል"
+ "ለማጠናቀቅ አረጋግጥን መታ ያድርጉ""የጣት አሻራ ዳሳሹን ይንኩ""የጣት አሻራ አዶ""እርስዎን በመፈለግ ላይ…"
@@ -399,7 +400,8 @@
"+%d""በጣም አስቸካይ ያልሆኑ ማሳወቂያዎች ከታች""ለመክፈት ዳግም መታ ያድርጉ"
- "ለማስከፈት ወደ ላይ ያንሸራትቱ"
+ "ለመክፈት በጣት ወደ ላይ ጠረግ ያድርጉ"
+ "እንደገና ለመሞከር ወደ ላይ ይጥረጉ""ይህ መሣሪያ በእርስዎ ድርጅት የሚተዳደር ነው""ይህ መሣሪያ በ%s የሚተዳደር ነው""ለስልክ ከአዶ ላይ ጠረግ ያድርጉ"
@@ -543,6 +545,7 @@
"ይሄ እስኪነቅሉት ድረስ በእይታ ውስጥ ያስቀምጠዋል። ለመንቀል መነሻ የሚለውን ይንኩ እና ይያዙ።""ይህን ማያ ገጽ ለመንቀል ተመለስ እና አጠቃላይ ዕይታ አዝራሮችን ይንኩ እና ይያዙ""ይህን ማያ ገጽ ለመንቀል ተመለስ እና መነሻ የሚለውን ይንኩ እና ይያዙ"
+ "ይህን ማያ ገጽ ለመንቀል ወደ ላይ ጠርገው ይያዙ""ገባኝ""አይ፣ አመሰግናለሁ""ማያ ገጽ ተሰክቷል"
diff --git a/packages/SystemUI/res/values-ar/config.xml b/packages/SystemUI/res/values-ar/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ar/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 916137ee052753f0446cd5ed1479d8a4e956716c..2792c3b4cf59252d81e6152c930d16935b1d5da1 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -124,6 +124,7 @@
"جارٍ البحث عن وجهك""تمّت مصادقة الوجه.""تمّ التأكيد."
+ "يمكنك النقر على \"تأكيد\" لإكمال المهمة.""المس زر استشعار بصمة الإصبع""رمز بصمة الإصبع""جارٍ البحث عن وجهك…"
@@ -407,7 +408,8 @@
"+%d""الإشعارات الأقل إلحاحًا أدناه""انقر مرة أخرى للفتح"
- "مرر سريعًا لأعلى لإلغاء القفل"
+ "يمكنك الفتح بالتمرير سريعًا لأعلى."
+ "مرِّر سريعًا للأعلى لإعادة المحاولة.""تتولى مؤسستك إدارة هذا الجهاز.""تتم إدارة هذا الجهاز بواسطة %s""يمكنك التمرير سريعًا من الرمز لتشغيل الهاتف"
@@ -553,8 +555,9 @@
"يؤدي هذا إلى استمرار عرض الشاشة المُختارة إلى أن تتم إزالة تثبيتها. مرّر الشاشة بسرعة للأعلى مع الاستمرار لإزالة تثبيت الشاشة.""يؤدي هذا إلى استمرار عرض الشاشة المُختارة إلى أن تتم إزالة تثبيتها. المس مع الاستمرار زر \"نظرة عامة\" لإزالة التثبيت.""يؤدي هذا إلى استمرار عرض الشاشة المُختارة إلى أن تتم إزالة تثبيتها. المس مع الاستمرار زر \"الشاشة الرئيسية\" لإزالة التثبيت."
- "لإزالة تثبيت هذه الشاشة، يمكنك أن تلمس مع الاستمرار زرّي \"رجوع\" و\"نظرة عامة\"."
- "لإزالة تثبيت هذه الشاشة، يمكنك أن تلمس مع الاستمرار زرّي \"رجوع\" و\"الشاشة الرئيسية\"."
+ "لإزالة تثبيت هذه الشاشة، يمكنك النقر مع الاستمرار على زرّي \"الرجوع\" و\"النظرة العامة\"."
+ "لإزالة تثبيت هذه الشاشة، يمكنك النقر مع الاستمرار على زرّي \"الرجوع\" و\"الشاشة الرئيسية\"."
+ "مرّر الشاشة بسرعة للأعلى مع الاستمرار لإزالة تثبيت الشاشة.""حسنًا""لا، شكرًا""تمّ تثبيت الشاشة."
diff --git a/packages/SystemUI/res/values-as/config.xml b/packages/SystemUI/res/values-as/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-as/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 085db3441068d0bba008a04048fbf2d22d3ea235..7d8ba648e1bb1fd37c7561f8570161e66c93a0b4 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -124,6 +124,7 @@
"আপোনাৰ মুখমণ্ডল বিচাৰি থকা হৈছে""মুখমণ্ডলৰ বিশ্বাসযোগ্যতা প্ৰমাণীকৰণ কৰা হ’ল""নিশ্চিত কৰিলে"
+ "সম্পূৰ্ণ কৰিবলৈ নিশ্চিত কৰক-ত টিপক""ফিংগাৰপ্ৰিণ্ট ছেন্সৰটো স্পৰ্শ কৰক""ফিংগাৰপ্ৰিণ্ট আইকন""আপোনাৰ মুখমণ্ডল বিচাৰি আছে…"
@@ -399,7 +400,8 @@
"+%d""কম জৰুৰী জাননীসমূহ তলত""খুলিবলৈ পুনৰাই টিপক"
- "আনলক কৰিবলৈ ওপৰলৈ ছোৱাইপ কৰক"
+ "খুলিবলৈ ওপৰলৈ ছোৱাইপ কৰক"
+ "পুনৰ চেষ্টা কৰিবলৈ ওপৰলৈ ছোৱাইপ কৰক""আপোনাৰ প্ৰতিষ্ঠানে এই ডিভাইচটো পৰিচালনা কৰে""এই ডিভাইচটো %sৰ দ্বাৰা পৰিচালিত।""ফ\'নৰ বাবে আইকনৰপৰা ছোৱাইপ কৰক"
@@ -543,6 +545,7 @@
"এই কাৰ্যই আপুনি আনপিন নকৰালৈকে ইয়াক দেখা পোৱা অৱস্থাত ৰাখে। আনপিন কৰিবলৈ পিছলৈ যাওক আৰু হ\'মত স্পৰ্শ কৰি সেঁচি ধৰক।""এই স্ক্ৰীণখন আনপিন কৰিবলৈ পিছলৈ যাওক আৰু অৱলোকন বুটামত স্পৰ্শ কৰি হেঁচি ধৰক।""এই স্ক্ৰীণখন আনপিন কৰিবলৈ পিছলৈ যাওক আৰু হ\'ম বুটামত স্পৰ্শ কৰি হেঁচি ধৰক।"
+ "এই স্ক্রীণখন আনপিন কৰিবলৈ ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক""বুজি পালোঁ""নালাগে, ধন্যবাদ""স্ক্ৰীণ পিন কৰা হ’ল"
diff --git a/packages/SystemUI/res/values-az/config.xml b/packages/SystemUI/res/values-az/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-az/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index 0fc16c413e55b3164b607b07ad62de10de74d4b4..5ae4d2df46369d0bc4a35ab27f40daf6366aa922 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -124,6 +124,7 @@
"Üzünüz axtarılır""Üz doğrulandı""Təsdiqləndi"
+ "Tamamlamaq üçün \"Təsdiq edin\" seçiminə toxunun""Barmaq izi sensoruna klikləyin""Barmaq izi ikonası""Siz axtarılırsınız…"
@@ -399,7 +400,8 @@
"+%d""Daha az təcili bildirişlər aşağıdadır""Açmaq üçün yenidən tıklayın"
- "Kiliddən çıxarmaq üçün yuxarı çəkin"
+ "Açmaq üçün yuxarı sürüşdürün"
+ "Yenidən cəhd etmək üçün yuxarı sürüşdürün""Bu cihaz təşkilatınız tərəfindən idarə olunur""Bu cihaz %s tərəfindən idarə olunur""Telefon üçün ikonadan sürüşdürün"
@@ -543,6 +545,7 @@
"Sancaq götürülənə qədər bu görünəcək. Sancağı götürmək üçün Əsas səhifə düyməsinə basıb saxlayın.""Bu ekrandan sancağı götürmək üçün Geri və İcmal düymələrinə basıb saxlayın""Bu ekrandan sancağı götürmək üçün Geri və Əsas səhifə düymələrinə basıb saxlayın"
+ "Bu ekranı sancaqdan çıxarmaq üçün sürüşdürüb saxlayın""Anladım!""Yox, çox sağ olun""Ekran sancılıb"
diff --git a/packages/SystemUI/res/values-b+sr+Latn/config.xml b/packages/SystemUI/res/values-b+sr+Latn/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-b+sr+Latn/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 7c9562510e547c0895708f6b78b27de0aa130576..95346e4cff8295b0468c49e5752108aff37d69ab 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -124,6 +124,7 @@
"Traži se vaše lice""Lice je potvrđeno""Potvrđeno"
+ "Dodirnite Potvrdi da biste završili""Dodirnite senzor za otisak prsta""Ikona otiska prsta""Tražimo vas…"
@@ -401,7 +402,8 @@
"+%d""Manje hitna obaveštenja su u nastavku""Dodirnite ponovo da biste otvorili"
- "Prevucite nagore da biste otključali"
+ "Prevucite nagore da biste otvorili"
+ "Prevucite nagore da biste probali ponovo""Ovim uređajem upravlja organizacija""Ovim uređajem upravlja %s""Prevucite od ikone za telefon"
@@ -546,6 +548,7 @@
"Na ovaj način se ovo stalno prikazuje dok ga ne otkačite. Dodirnite i zadržite Početna da biste ga otkačili.""Da biste otkačili ovaj ekran, dodirnite i zadržite dugmad Nazad i Pregled""Da biste otkačili ovaj ekran, dodirnite i zadržite dugmad Nazad i Početna"
+ "Da biste otkačili ovaj ekran, prevucite nagore i zadržite""Važi""Ne, hvala""Ekran je zakačen"
diff --git a/packages/SystemUI/res/values-be/config.xml b/packages/SystemUI/res/values-be/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-be/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 2924bdeb76572bf3c0ce62ba10e84c7df654b606..36745648b05193f118ec4af28e54e2b37be2c36f 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -124,6 +124,7 @@
"Ідзе пошук твару""Твар распазнаны""Пацверджана"
+ "Націсніце \"Пацвердзіць\", каб завяршыць""Дакраніцеся да сканера адбіткаў пальцаў""Значок адбіткаў пальцаў""Ідзе пошук вашага твару…"
@@ -328,7 +329,7 @@
"Вызначэнне месцазнаходжання адключана""Мультымедыйная прылада""RSSI"
- "Толькі экстраныя выклікі"
+ "Толькі экстранныя выклікі""Налады""Час""Я"
@@ -405,7 +406,8 @@
"+%d""Менш тэрміновыя апавяшчэнні ніжэй""Дакраніцеся яшчэ раз, каб адкрыць"
- "Правядзіце пальцам уверх, каб разблакіраваць"
+ "Каб адкрыць, прагарніце ўверх"
+ "Прагартайце ўверх, каб паўтарыць спробу""Гэта прылада знаходзіцца пад кіраваннем вашай арганізацыі""Гэта прылада знаходзіцца пад кіраваннем %s""Тэлефон: правядзіце пальцам ад значка"
@@ -421,7 +423,7 @@
"%2$s • Ідзе бесправадная зарадка (да поўнага зараду засталося %1$s)""Ідзе зарадка (%2$s, яшчэ %1$s)""Ідзе хуткая зарадка (%2$s, яшчэ %1$s)"
- "Ідзе павольная зарадка (%2$s, яшчэ %1$s)"
+ "Ідзе павольная зарадка (%2$s, %1$s да канца)""Перайсці да іншага карыстальніка""Перайсці да іншага карыстальніка, бягучы карыстальнік %s""Бягучы карыстальнік %s"
@@ -551,6 +553,7 @@
"Будзе паказвацца, пакуль не адмацуеце. Каб адмацаваць, націсніце і ўтрымлівайце кнопку \"Галоўны экран\".""Каб адмацаваць гэты экран, націсніце і ўтрымлівайце кнопкі \"Назад\" і \"Агляд\"""Каб адмацаваць гэты экран, націсніце і ўтрымлівайце кнопкі \"Назад\" і \"Галоўны экран\""
+ "Каб адмацаваць экран, правядзіце пальцам, утрымліваючы яго на экране""Зразумела""Не, дзякуй""Экран замацаваны"
diff --git a/packages/SystemUI/res/values-bg/config.xml b/packages/SystemUI/res/values-bg/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-bg/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index c2fdf92ce9bac4c5b1f7590593c85b315466a1e3..eadb19b2afbc55c4031681b3e15011f293d803e9 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -124,6 +124,7 @@
"Лицето ви се търси""Лицето е удостоверено""Потвърдено"
+ "Докоснете „Потвърждаване“ за завършване""Докоснете сензора за отпечатъци""Икона за отпечатък""Търсим ви…"
@@ -399,7 +400,8 @@
"+%d""Ппоказване на по-малко спешните известия по-долу""Докоснете отново, за да отворите"
- "Плъзнете нагоре, за да отключите"
+ "Прекарайте пръст нагоре, за да отключите"
+ "Плъзнете бързо нагоре, за да опитате отново""Това устройство се управлява от организацията ви""Това устройство се управлява от %s""Плъзнете с пръст от иконата, за да използвате телефона"
@@ -543,6 +545,7 @@
"Екранът ще се показва, докато не го освободите с докосване и задържане на бутона „Начало“.""За да освободите този екран, докоснете и задръжте бутона за връщане назад и този за общ преглед""За да освободите този екран, докоснете и задръжте бутона за връщане назад и „Начало“"
+ "За да освободите този екран, прекарайте пръст нагоре и задръжте""Разбрах""Не, благодаря""Екранът е фиксиран"
diff --git a/packages/SystemUI/res/values-bn/config.xml b/packages/SystemUI/res/values-bn/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-bn/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 5a690d47bbad1179787f180170fae2d34400835b..6b7561bdcd3ba10e5b66732f3e2bb7322d3f040b 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -124,6 +124,7 @@
"আপনার ফেস খোঁজা হচ্ছে""ফেস যাচাই করা হয়েছে""কনফার্ম করা হয়েছে"
+ "সম্পূর্ণ করতে \'কনফার্ম করুন\' বোতামে ট্যাপ করুন""আঙ্গুলের ছাপের সেন্সর স্পর্শ করুন""আঙ্গুলের ছাপের আইকন""আপনার জন্য খোঁজা হচ্ছে…"
@@ -231,9 +232,9 @@
"বিমান মোড চালু হয়েছে।""সম্পূর্ণ নীরব""শুধুমাত্র অ্যালার্ম"
- "বিরক্ত করবেন না।"
- "\'বিরক্ত করবেন না\' বন্ধ আছে।"
- "\'বিরক্ত করবেন না\' চালু করা হয়েছে।"
+ "বিরক্ত করবে না।"
+ "\'বিরক্ত করবে না\' বন্ধ আছে।"
+ "\'বিরক্ত করবে না\' চালু করা হয়েছে।""ব্লুটুথ""ব্লুটুথ বন্ধ আছে।""ব্লুটুথ চালু আছে।"
@@ -298,7 +299,7 @@
"স্ক্রিন সেভার""ইথারনেট""আরও বিকল্পের জন্য আইকনগুলি টাচ করে ধরে থাকুন"
- "বিরক্ত করবেন না"
+ "বিরক্ত করবে না""শুধুমাত্র অগ্রাধিকার""শুধুমাত্র অ্যালার্মগুলি""একদম নিরব"
@@ -399,7 +400,8 @@
"+%d""নিচে অপেক্ষাকৃত কম জরুরী বিজ্ঞপ্তিগুলি""খোলার জন্য আবার আলতো চাপুন"
- "আনলক করতে উপরের দিকে সোয়াইপ করুন"
+ "খোলার জন্য উপরে সোয়াইপ করুন"
+ "আবার চেষ্টা করতে উপরের দিকে সোয়াইপ করুন""আপনার সংস্থা এই ডিভাইসটি পরিচালনা করছে""এই ডিভাইসটি %s এর দ্বারা পরিচালিত""ফোনের জন্য আইকন থেকে সোয়াইপ করুন"
@@ -459,7 +461,7 @@
"পরিচালনা করুন""নীরব বিজ্ঞপ্তি""সব নীরব বিজ্ঞপ্তি মুছুন"
- "\'বিরক্ত করবেন না\' দিয়ে বিজ্ঞপ্তি পজ করা হয়েছে"
+ "\'বিরক্ত করবে না\' দিয়ে বিজ্ঞপ্তি পজ করা হয়েছে""এখন শুরু করুন""কোনো বিজ্ঞপ্তি নেই""প্রোফাইল পর্যবেক্ষণ করা হতে পারে"
@@ -543,6 +545,7 @@
"এর ফলে আপনি এটি আনপিন না করা পর্যন্ত এটি দেখানো হতে থাকবে। আনপিন করতে \"হোম\" বোতামটি ট্যাপ করে ধরে রাখুন।""এই স্ক্রিনটি আনপিন করতে \"ফিরে যান\" এবং \"এক নজরে\" বোতামদুটি ট্যাপ করে ধরে রাখুন""এই স্ক্রিনটি আনপিন করতে \"ফিরে যান\" এবং \"হোম\" বোতামদুটি ট্যাপ করে ধরে রাখুন"
+ "আনপিন করতে এই স্ক্রিনটি উপরের দিকে সোয়াইপ করে ধরে রাখুন""বুঝেছি""না থাক""স্ক্রিন পিন করা হয়েছে"
@@ -734,9 +737,9 @@
"YouTube""ক্যালেন্ডার""ভলিউম নিয়ন্ত্রণ সহ দেখান"
- "বিরক্ত করবেন না"
+ "বিরক্ত করবে না""ভলিউম বোতামের শর্টকাট"
- "ভলিউম বাড়িয়ে \'বিরক্ত করবেন না\' মোড থেকে বেরিয়ে আসুন"
+ "ভলিউম বাড়িয়ে \'বিরক্ত করবে না\' মোড থেকে বেরিয়ে আসুন""ব্যাটারি""ঘড়ি""হেডসেট"
@@ -880,10 +883,10 @@
"%1$s, %2$s""ওয়াই ফাই বন্ধ আছে""ব্লুটুথ বন্ধ আছে"
- "বিরক্ত করবেন না বিকল্পটি বন্ধ আছে"
- "বিরক্ত করবেন না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম %s এর দ্বারা চালু করা হয়েছে।"
- "বিরক্ত করবেন না বিকল্পটি একটি অ্যাপ %s এর দ্বারা চালু করা হয়েছে।"
- "বিরক্ত করবেন না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম বা অ্যাপের দ্বারা চালু করা হয়েছে।"
+ "বিরক্ত করবে না বিকল্পটি বন্ধ আছে"
+ "বিরক্ত করবে না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম %s এর দ্বারা চালু করা হয়েছে।"
+ "বিরক্ত করবে না বিকল্পটি একটি অ্যাপ %s এর দ্বারা চালু করা হয়েছে।"
+ "বিরক্ত করবে না বিকল্পটি একটি স্বয়ংক্রিয় নিয়ম বা অ্যাপের দ্বারা চালু করা হয়েছে।""%s পর্যন্ত""রাখুন""বদলে দিন"
diff --git a/packages/SystemUI/res/values-bs/config.xml b/packages/SystemUI/res/values-bs/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-bs/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 61c8c8ab2c16056314a884bc29042f41bd6bf176..c22ddfd56e9f44ba5e35748242e2c3a8d63bc75e 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -124,6 +124,7 @@
"Traženje vašeg lica""Lice je provjereno""Potvrđeno"
+ "Dodirnite Potvrdi da završite""Dodirnite senzor za otisak prsta""Ikona za otisak prsta""Tražimo vas…"
@@ -401,7 +402,8 @@
"+%d""Prikaži manje važna obavještenja ispod""Dodirnite ponovo da otvorite"
- "Prevucite prema gore da otključate"
+ "Prevucite da otvorite"
+ "Prevucite prema gore da pokušate ponovo""Ovim uređajem upravlja vaša organizacija""Ovim uređajem upravlja %s""Prevucite preko ikone da otvorite telefon"
@@ -546,6 +548,7 @@
"Na ovaj način ekran ostaje prikazan dok ga ne otkačite. Da okačite ekran, dodirnite ili držite dugme Početna.""Dodirnite i držite dugmad Nazad i Pregled da otkačite ekran""Dodirnite i držite dugmad Nazad i Početna da otkačite ekran."
+ "Da otkačite ovaj ekran, prevucite prema gore i zadržite""Razumijem""Ne, hvala""Ekran je zakačen"
diff --git a/packages/SystemUI/res/values-ca/config.xml b/packages/SystemUI/res/values-ca/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ca/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 381c70b29808680d3c232dbb673d197f0b0166bb..d4147bad6c34f4e0ae34a7ce7bfff1f29da477d5 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -124,6 +124,7 @@
"S\'està cercant la teva cara""Cara autenticada""Confirmat"
+ "Toca Confirma per completar""Toca el sensor d\'empremtes digitals""Icona d\'empremta digital""S\'està cercant la teva cara…"
@@ -399,7 +400,8 @@
"+%d""Notificacions menys urgents a continuació""Torna a tocar per obrir-la."
- "Llisca cap amunt per desbloquejar el teclat"
+ "Llisca cap amunt per obrir"
+ "Llisca cap a dalt per tornar-ho a provar""La teva organització gestiona aquest dispositiu""%s gestiona aquest dispositiu""Llisca des de la icona per obrir el telèfon"
@@ -543,6 +545,7 @@
"Aquest element es continuarà mostrant fins que deixis de fixar-lo. Per fer-ho, mantén premut el botó d\'inici.""Per deixar de fixar aquesta pantalla, mantén premuts els botons Enrere i Aplicacions recents""Per deixar de fixar aquesta pantalla, mantén premuts els botons Enrere i Inici"
+ "Per deixar de fixar aquesta pantalla, fes-la lliscar cap a dalt i mantén-la premuda""Entesos""No, gràcies""S\'ha fitxat la pantalla"
diff --git a/packages/SystemUI/res/values-cs/config.xml b/packages/SystemUI/res/values-cs/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-cs/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 9cee77836218667c58ce8b3da330496178e1abef..87aaa94d1dd30d6c9a49206255f0a4be285f049e 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -124,6 +124,7 @@
"Vyhledávání obličeje""Obličej byl ověřen""Potvrzeno"
+ "Ověření dokončíte klepnutím na Potvrdit""Dotkněte se snímače otisků prstů""Ikona otisku prstu""Hledáme vás…"
@@ -193,7 +194,7 @@
"Sdílené připojení přes Bluetooth.""Režim Letadlo.""VPN je zapnuto."
- "Není vložena SIM karta"
+ "Chybí SIM karta""Probíhá změna sítě operátora""Otevřít podrobnosti o baterii""Stav baterie: %d procent."
@@ -403,7 +404,8 @@
"+%d""Méně urgentní oznámení níže""Oznámení otevřete opětovným klepnutím"
- "Zařízení odemknete přejetím prstem nahoru"
+ "Otevřete přejetím prstem nahoru"
+ "Přejetím nahoru to zkusíte znovu""Toto zařízení spravuje vaše organizace""Toto zařízení je spravováno organizací %s""Telefon otevřete přejetím prstem od ikony"
@@ -549,6 +551,7 @@
"Obsah bude připnut v zobrazení, dokud ho neuvolníte. Uvolníte ho podržením tlačítka Plocha.""Chcete-li tuto obrazovku uvolnit, podržte tlačítka Zpět a Přehled""Chcete-li tuto obrazovku uvolnit, podržte tlačítka Zpět a Plocha"
+ "Chcete-li tuto obrazovku odepnout, přejeďte prstem nahoru a podržte""Rozumím""Ne, děkuji""Obrazovka připnuta"
diff --git a/packages/SystemUI/res/values-da/config.xml b/packages/SystemUI/res/values-da/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-da/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 271fa6915836bedfaed2ce80fd396c5fbcd764f1..e6d98cabd18cf175d5a525acc855af2b563ff19a 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -124,6 +124,7 @@
"Søger efter dit ansigt""Ansigtet er godkendt""Bekræftet"
+ "Tryk på Bekræft for at udføre""Sæt fingeren på fingeraftrykslæseren""Ikon for fingeraftryk""Forsøger at finde dig…"
@@ -214,7 +215,7 @@
"Notifikationen er annulleret.""Notifikationspanel."
- "Hurtige indstillinger."
+ "Kvikmenu.""Låseskærm.""Indstillinger""Oversigt."
@@ -254,8 +255,8 @@
"Lommelygten er tændt.""Lommelygten er slukket.""Lommelygten er tændt."
- "Invertering af farver er slået fra."
- "Invertering af farver er slået til."
+ "Ombytning af farver er slået fra."
+ "Ombytning af farver er slået til.""Mobilhotspot er slået fra.""Mobilhotspot er slået til.""Casting af din skærm er stoppet."
@@ -399,7 +400,8 @@
"+%d""Mindre presserende notifikationer nedenfor""Tryk igen for at åbne"
- "Stryg opad for at låse op"
+ "Stryg opad for at åbne"
+ "Stryg opad for at prøve igen""Denne enhed administreres af din organisation""Denne enhed administreres af %s""Stryg fra telefonikonet"
@@ -542,7 +544,8 @@
"Dette fastholder skærmen i visningen, indtil du frigør den. Tryk på Tilbage, og hold fingeren nede for at frigøre skærmen.""Dette fastholder skærmen i visningen, indtil du frigør den. Hold Startskærm nede for at frigøre skærmen.""Hold knapperne Tilbage og Oversigt nede for at frigøre skærmen"
- "Hold knapperne Tilbage og Startskærm nede for at frigøre skærmen"
+ "Hold knapperne Tilbage og Hjem nede for at frigøre skærmen"
+ "Stryg opad, og hold fingeren nede for at frigøre denne skærm""OK, det er forstået""Nej tak""Skærmen blev fastgjort"
@@ -585,7 +588,7 @@
"System UI Tuner""Vis procent for det indbyggede batteri""Vis procenttallet for batteriniveauet i ikonet for statusbjælken, når der ikke oplades"
- "Hurtige indstillinger"
+ "Kvikmenu""Statusbjælke""Oversigt""Demotilstand for systemets brugerflade"
@@ -601,7 +604,7 @@
"Du vil ikke kunne høre din næste alarm %1$s""kl. %1$s""på %1$s"
- "Hurtige indstillinger %s."
+ "Kvikmenu %s.""Hotspot""Arbejdsprofil""Sjovt for nogle, men ikke for alle"
@@ -614,8 +617,8 @@
"Applikationen er ikke installeret på din enhed.""Vis sekunder""Vis sekunder i statuslinjen. Dette kan påvirke batteriets levetid."
- "Omarranger Hurtige indstillinger"
- "Vis lysstyrke i Hurtige indstillinger"
+ "Omarranger Kvikmenu"
+ "Vis lysstyrke i Kvikmenu""Eksperimentel""Vil du slå Bluetooth til?""Bluetooth skal være slået til, før du kan knytte dit tastatur til din tablet."
@@ -810,15 +813,15 @@
"Fjern %1$s""Føj %1$s til position %2$d""Flyt %1$s til position %2$d"
- "Redigeringsværktøj for Hurtige indstillinger."
+ "Redigeringsværktøj til Kvikmenu.""%1$s-notifikation: %2$s""Appen fungerer muligvis ikke i opdelt skærm.""Appen understøtter ikke opdelt skærm.""Appen fungerer muligvis ikke på sekundære skærme.""Appen kan ikke åbnes på sekundære skærme.""Åbn Indstillinger."
- "Åbn Hurtige indstillinger."
- "Luk Hurtige indstillinger."
+ "Åbn Kvikmenu."
+ "Luk Kvikmenu.""Alarmen er indstillet.""Logget ind som %s""Intet internet"
diff --git a/packages/SystemUI/res/values-de/config.xml b/packages/SystemUI/res/values-de/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-de/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 5d659c6ff63630f90efbefbbe5d3ef3babd21143..e1fd8db11b3ae88148c285e9d5e55be33feac3ce 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -124,6 +124,7 @@
"Nach deinem Gesicht wird gesucht""Gesicht authentifiziert""Bestätigt"
+ "Zum Abschließen auf \"Bestätigen\" tippen""Berühre den Fingerabdrucksensor""Fingerabdruck-Symbol""Wir suchen nach dir…"
@@ -403,7 +404,8 @@
"+%d""Weniger dringende Benachrichtigungen unten""Erneut tippen, um Benachrichtigung zu öffnen"
- "Zum Entsperren nach oben wischen"
+ "Zum Öffnen nach oben wischen"
+ "Zum Wiederholen nach oben wischen""Dieses Gerät wird von deiner Organisation verwaltet""Dieses Gerät wird von %s verwaltet""Zum Öffnen des Telefons vom Symbol wegwischen"
@@ -547,6 +549,7 @@
"Der Bildschirm wird so lange angezeigt, bis du die Fixierung aufhebst. Berühre und halte dazu \"Startbildschirm\".""Um die Fixierung für diesen Bildschirm aufzuheben, berühre und halte \"Zurück\" und \"Übersicht\"""Um die Fixierung für diesen Bildschirm aufzuheben, berühre und halte \"Zurück\" und \"Startbildschirm\""
+ "Zum Loslösen des Bildschirms nach oben wischen und halten""Ok""Nein danke""Der Bildschirm ist angepinnt"
@@ -655,7 +658,7 @@
"Lautlos""Benachrichtigen""Benachrichtigungen werden ohne Ton oder Vibration angekündigt, um deine Konzentration nicht zu stören."
- "Benachrichtigungen werden mit einem Ton oder einer Vibration angekündigt, um dich auf sie aufmerksam zu machen."
+ "Benachrichtigungen werden mit einem Ton oder einer Vibration angekündigt.""Diese Benachrichtigungen können nicht geändert werden.""Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden""Weitergeleitete Benachrichtigung"
diff --git a/packages/SystemUI/res/values-el/config.xml b/packages/SystemUI/res/values-el/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-el/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index c232ad648a2fd34c472082bc095082546798e91b..dfb5edf97d67faa92883e1c7abf27bf1cc617c7e 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -124,6 +124,7 @@
"Αναζήτηση για το πρόσωπό σας""Έγινε έλεγχος ταυτότητας προσώπου""Επιβεβαιώθηκε"
+ "Πατήστε Επιβεβαίωση για ολοκλήρωση""Αγγίξτε τον αισθητήρα δακτυλικών αποτυπωμάτων""Εικονίδιο δακτυλικών αποτυπωμάτων""Αναζήτηση για εσάς…"
@@ -399,7 +400,8 @@
"+%d""Λιγότερο επείγουσες ειδοποιήσεις παρακάτω""Πατήστε ξανά για να ανοίξετε"
- "Σύρετε για να ξεκλειδώσετε"
+ "Σύρετε προς τα επάνω για άνοιγμα"
+ "Σύρετε προς τα πάνω για να δοκιμάσετε ξανά""Αυτή η συσκευή είναι διαχειριζόμενη από τον οργανισμό σας""Τη συσκευή διαχειρίζεται ο οργανισμός %s""Σύρετε προς τα έξω για τηλέφωνο"
@@ -543,6 +545,7 @@
"Με αυτόν τον τρόπο, παραμένει σε προβολή μέχρι να το ξεκαρφιτσώσετε. Αγγίξτε παρατεταμένα το στοιχείο \"Αρχική οθόνη\" για ξεκαρφίτσωμα.""Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα τα κουμπιά \"Πίσω\" και \"Επισκόπηση\"""Για να ξεκαρφιτσώσετε αυτήν την οθόνη, αγγίξτε παρατεταμένα τα κουμπιά \"Πίσω\" και \"Αρχική οθόνη\""
+ "Για να ξεκαρφιτσώσετε αυτήν την οθόνη, σύρετε προς τα πάνω και κρατήστε παρατεταμένα""Το κατάλαβα""Όχι""Η οθόνη καρφιτσώθηκε"
diff --git a/packages/SystemUI/res/values-en-rAU/config.xml b/packages/SystemUI/res/values-en-rAU/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-en-rAU/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 41d3aeaea78aaf1d47626ab9c929ecd7846a8ab2..562338c2a48fc7c0edf4fd1d5e256c44b8ce2d6a 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -124,6 +124,7 @@
"Looking for your face""Face authenticated""Confirmed"
+ "Tap Confirm to complete""Touch the fingerprint sensor""Fingerprint icon""Looking for you…"
@@ -399,8 +400,9 @@
"+%d""Less urgent notifications below""Tap again to open"
- "Swipe up to unlock"
- "This device is managed by your organization"
+ "Swipe up to open"
+ "Swipe up to try again"
+ "This device is managed by your organisation""This device is managed by %s""Swipe from icon for phone""Swipe from icon for voice assist"
@@ -542,7 +544,8 @@
"This keeps it in view until you unpin. Touch & hold Overview to unpin.""This keeps it in view until you unpin. Touch & hold Home to unpin.""To unpin this screen, touch & hold Back and Overview buttons"
- "To unpin this screen, touch & hold Back and Home buttons"
+ "To unpin this screen, touch and hold Back and Home buttons"
+ "To unpin this screen, swipe up & hold""Got it""No, thanks""Screen pinned"
diff --git a/packages/SystemUI/res/values-en-rCA/config.xml b/packages/SystemUI/res/values-en-rCA/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-en-rCA/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 5364da5928a705465992e2f82e70e90095ad957c..4bf9f54818f8bd8e005449f6874ceaeb7b52e245 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -124,6 +124,7 @@
"Looking for your face""Face authenticated""Confirmed"
+ "Tap Confirm to complete""Touch the fingerprint sensor""Fingerprint icon""Looking for you…"
@@ -399,8 +400,9 @@
"+%d""Less urgent notifications below""Tap again to open"
- "Swipe up to unlock"
- "This device is managed by your organization"
+ "Swipe up to open"
+ "Swipe up to try again"
+ "This device is managed by your organisation""This device is managed by %s""Swipe from icon for phone""Swipe from icon for voice assist"
@@ -542,7 +544,8 @@
"This keeps it in view until you unpin. Touch & hold Overview to unpin.""This keeps it in view until you unpin. Touch & hold Home to unpin.""To unpin this screen, touch & hold Back and Overview buttons"
- "To unpin this screen, touch & hold Back and Home buttons"
+ "To unpin this screen, touch and hold Back and Home buttons"
+ "To unpin this screen, swipe up & hold""Got it""No, thanks""Screen pinned"
diff --git a/packages/SystemUI/res/values-en-rGB/config.xml b/packages/SystemUI/res/values-en-rGB/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-en-rGB/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 41d3aeaea78aaf1d47626ab9c929ecd7846a8ab2..562338c2a48fc7c0edf4fd1d5e256c44b8ce2d6a 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -124,6 +124,7 @@
"Looking for your face""Face authenticated""Confirmed"
+ "Tap Confirm to complete""Touch the fingerprint sensor""Fingerprint icon""Looking for you…"
@@ -399,8 +400,9 @@
"+%d""Less urgent notifications below""Tap again to open"
- "Swipe up to unlock"
- "This device is managed by your organization"
+ "Swipe up to open"
+ "Swipe up to try again"
+ "This device is managed by your organisation""This device is managed by %s""Swipe from icon for phone""Swipe from icon for voice assist"
@@ -542,7 +544,8 @@
"This keeps it in view until you unpin. Touch & hold Overview to unpin.""This keeps it in view until you unpin. Touch & hold Home to unpin.""To unpin this screen, touch & hold Back and Overview buttons"
- "To unpin this screen, touch & hold Back and Home buttons"
+ "To unpin this screen, touch and hold Back and Home buttons"
+ "To unpin this screen, swipe up & hold""Got it""No, thanks""Screen pinned"
diff --git a/packages/SystemUI/res/values-en-rIN/config.xml b/packages/SystemUI/res/values-en-rIN/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-en-rIN/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 41d3aeaea78aaf1d47626ab9c929ecd7846a8ab2..562338c2a48fc7c0edf4fd1d5e256c44b8ce2d6a 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -124,6 +124,7 @@
"Looking for your face""Face authenticated""Confirmed"
+ "Tap Confirm to complete""Touch the fingerprint sensor""Fingerprint icon""Looking for you…"
@@ -399,8 +400,9 @@
"+%d""Less urgent notifications below""Tap again to open"
- "Swipe up to unlock"
- "This device is managed by your organization"
+ "Swipe up to open"
+ "Swipe up to try again"
+ "This device is managed by your organisation""This device is managed by %s""Swipe from icon for phone""Swipe from icon for voice assist"
@@ -542,7 +544,8 @@
"This keeps it in view until you unpin. Touch & hold Overview to unpin.""This keeps it in view until you unpin. Touch & hold Home to unpin.""To unpin this screen, touch & hold Back and Overview buttons"
- "To unpin this screen, touch & hold Back and Home buttons"
+ "To unpin this screen, touch and hold Back and Home buttons"
+ "To unpin this screen, swipe up & hold""Got it""No, thanks""Screen pinned"
diff --git a/packages/SystemUI/res/values-en-rXC/config.xml b/packages/SystemUI/res/values-en-rXC/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-en-rXC/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index d12e881081c8f8da182e05cb315d143dce4c9aeb..139215aa196f823f14ea99270d7f6ce79ea00d54 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -124,6 +124,7 @@
"Looking for your face""Face authenticated""Confirmed"
+ "Tap Confirm to complete""Touch the fingerprint sensor""Fingerprint icon""Looking for you…"
@@ -399,7 +400,8 @@
"+%d""Less urgent notifications below""Tap again to open"
- "Swipe up to unlock"
+ "Swipe up to open"
+ "Swipe up to try again""This device is managed by your organization""This device is managed by %s""Swipe from icon for phone"
@@ -543,6 +545,7 @@
"This keeps it in view until you unpin. Touch & hold Home to unpin.""To unpin this screen, touch & hold Back and Overview buttons""To unpin this screen, touch & hold Back and Home buttons"
+ "To unpin this screen, swipe up & hold""Got it""No thanks""Screen pinned"
diff --git a/packages/SystemUI/res/values-es-rUS/config.xml b/packages/SystemUI/res/values-es-rUS/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-es-rUS/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index c4cf829363ee93e2d53afdd836da67452e6d9e27..6adf6d5d43b1da078a965cb727e1c296fa5bcafa 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -124,6 +124,7 @@
"Buscando tu rostro""Se autenticó el rostro""Confirmado"
+ "Presiona Confirmar para completarla""Toca el sensor de huellas digitales""Ícono de huella digital""Autenticando tu rostro…"
@@ -399,7 +400,8 @@
"+%d""Notificaciones menos urgentes abajo""Presionar de nuevo para abrir"
- "Desliza el dedo hacia arriba para desbloquear el teléfono"
+ "Desliza el dedo hacia arriba para abrir"
+ "Desliza el dedo hacia arriba para volver a intentarlo""Tu organización administra este dispositivo""%s administra este dispositivo""Desliza el dedo para desbloquear el teléfono."
@@ -543,6 +545,7 @@
"Esta función mantiene la pantalla visible hasta que dejes de fijarla. Para ello, mantén presionado el botón de inicio.""Para dejar de fijar esta pantalla, mantén presionados los botones Atrás y Recientes""Para dejar de fijar esta pantalla, mantén presionados los botones de inicio y Atrás"
+ "Para no fijar esta pantalla, desliza el dedo hacia arriba y mantén presionado""Entendido""No, gracias""Pantalla fija"
@@ -552,7 +555,7 @@
"Ocultar""Llamada""Sistema"
- "Hacer sonar"
+ "Timbre""Multimedia""Alarma""Notificación"
@@ -560,7 +563,7 @@
"Multifrecuencia de tono doble""Accesibilidad""Llamadas"
- "Hacer sonar"
+ "Timbre""Vibrar""Silenciar""Teléfono en vibración"
diff --git a/packages/SystemUI/res/values-es/config.xml b/packages/SystemUI/res/values-es/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-es/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 685f449b19ae05dbbe69bde0ab52897076f7ab84..9810eb4e81ccdf7adbd8d88ffb2b21eda2a288d9 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -124,6 +124,7 @@
"Buscando tu cara""Cara autenticada""Confirmada"
+ "Toca Confirmar para completar la acción""Toca el sensor de huellas digitales""Icono de huella digital""Buscando tu cara…"
@@ -399,7 +400,8 @@
"+%d""Notificaciones menos urgente abajo""Toca de nuevo para abrir"
- "Desliza el dedo hacia arriba para desbloquear"
+ "Desliza el dedo hacia arriba para abrir"
+ "Desliza el dedo hacia arriba para volverlo a intentar""Este dispositivo está administrado por tu organización""Este dispositivo está administrado por %s""Desliza desde el icono para abrir el teléfono"
@@ -542,7 +544,8 @@
"La pantalla se mantiene visible hasta que dejas de fijarla. Para ello, mantén pulsado el botón Aplicaciones recientes.""La pantalla se mantiene visible hasta que dejas de fijarla. Para ello, mantén pulsado el botón Inicio.""Mantén pulsado el botón Atrás y el de aplicaciones recientes para dejar de fijar esta pantalla"
- "Mantén pulsado el botón Atrás y el de Inicio para dejar de fijar esta pantalla"
+ "Mantén pulsados los botones Atrás e Inicio para dejar de fijar esta pantalla"
+ "Para dejar de fijar esta pantalla, desliza el dedo hacia arriba y mantenla pulsada""Entendido""No, gracias""Pantalla fijada"
diff --git a/packages/SystemUI/res/values-et/config.xml b/packages/SystemUI/res/values-et/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-et/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index 039100d2ef9059b048c3e3b22517ce9555896cbf..8a64692181daa2e0869ea5a182386c9f2c414c10 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -124,6 +124,7 @@
"Teie näo vaatamine""Nägu on autenditud""Kinnitatud"
+ "Lõpuleviimiseks puudutage nuppu Kinnita""Puudutage sõrmejäljeandurit""Sõrmejälje ikoon""Otsitakse teid …"
@@ -191,7 +192,7 @@
"Ei ole andmeside kasutamiseks seadistatud""Väljas""Jagamine Bluetoothiga."
- "Lennurežiim."
+ "Lennukirežiim.""VPN on sees.""SIM-kaarti pole.""Operaatori võrku muudetakse"
@@ -228,7 +229,7 @@
"Lennurežiim on väljas.""Lennurežiim on sees.""Lennurežiim on välja lülitatud."
- "Lennurežiim on sisse lülitatud."
+ "Lennukirežiim on sisse lülitatud.""täielik vaikus""ainult alarmid""Mitte segada."
@@ -399,7 +400,8 @@
"+%d""Vähem kiireloomulised märguanded on allpool""Avamiseks puudutage uuesti"
- "Lukustuse tühistamiseks pühkige üles"
+ "Pühkige avamiseks üles"
+ "Uuesti proovimiseks pühkige üles""Seda seadet haldab teie organisatsioon""Seda seadet haldab %s""Telefoni kasutamiseks pühkige ikoonilt eemale"
@@ -543,6 +545,7 @@
"See hoitakse kuval, kuni selle vabastate. Vabastamiseks puudutage pikalt nuppu Avakuva.""Ekraanikuva vabastamiseks puudutage pikalt nuppe Tagasi ja Ülevaade""Ekraanikuva vabastamiseks puudutage pikalt nuppe Tagasi ja Avakuva"
+ "Ekraanikuva vabastamiseks pühkige üles ja hoidke sõrme ekraanil""Selge""Tänan, ei""Ekraanikuva on kinnitatud"
@@ -594,7 +597,7 @@
"Ethernet""Äratus""Tööprofiil"
- "Lennurežiim"
+ "Lennukirežiim""Paani lisamine""Paani ülekandmine""Kuulete järgmist äratust kell %1$s vaid siis, kui lülitate selle enne seda välja"
diff --git a/packages/SystemUI/res/values-eu/config.xml b/packages/SystemUI/res/values-eu/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-eu/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 17f19f72c556a2add99e9c7f3fdef6cb3a50637a..799d773fe82b33308b147bfd16889dc4e962c1cd 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -124,6 +124,7 @@
"Aurpegia bilatzen""Autentifikatu da aurpegia""Berretsita"
+ "Amaitzeko, sakatu \"Berretsi\"""Sakatu hatz-marken sentsorea""Hatz-markaren ikonoa""Zure bila…"
@@ -399,7 +400,8 @@
"+%d""Horren premiazkoak ez diren jakinarazpenak daude behean""Irekitzeko, ukitu berriro"
- "Desblokeatzeko, pasatu hatza gora"
+ "Pasatu hatza gora irekitzeko"
+ "Berriro saiatzeko, pasatu hatza gora""Zure erakundeak kudeatzen du gailua""%s erakundeak kudeatzen du gailu hau""Pasatu hatza ikonotik, telefonoa irekitzeko"
@@ -543,6 +545,7 @@
"Horrela, ikusgai egongo da aingura kendu arte. Aingura kentzeko, eduki sakatuta Hasiera botoia.""Pantailari aingura kentzeko, eduki sakatuta Atzera eta Ikuspegi orokorra botoiak""Pantailari aingura kentzeko, eduki sakatuta Atzera eta Hasiera botoiak"
+ "Pantailari aingura kentzeko, pasatu hatza gora eta eduki sakatuta""Ados""Ez, eskerrik asko""Ainguratu da pantaila"
@@ -870,7 +873,7 @@
"Memoria""Aholkuak""Zuzeneko aplikazioak"
- "%1$s exekutatzen ari da"
+ "%1$s abian da""Ezer instalatu gabe ireki da aplikazioa.""Ezer instalatu gabe ireki da aplikazioa. Sakatu informazio gehiago lortzeko.""Aplikazioari buruzko informazioa"
@@ -887,7 +890,7 @@
"%s arte""Utzi bere horretan""Ordeztu"
- "Aplikazioak exekutatzen ari dira atzeko planoan"
+ "Aplikazioak abian dira atzeko planoan""Sakatu bateria eta datuen erabilerari buruzko xehetasunak ikusteko""Datu-konexioa desaktibatu nahi duzu?""%s erabilita ezingo dituzu erabili datuak edo Internet. Wifi-sare baten bidez soilik konektatu ahal izango zara Internetera."
diff --git a/packages/SystemUI/res/values-fa/config.xml b/packages/SystemUI/res/values-fa/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-fa/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index 4ccf8ed28f7c1c5278a980b209a3431d619c17f4..e4786265581174d74e61c93134ac5167337821e1 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -28,15 +28,15 @@
"%s باقی مانده است""%1$s باقی مانده، براساس اشتفاده شما حدود %2$s باقی مانده است""%1$s باقی مانده، حدود %2$s باقی مانده است"
- "%s باقی مانده است. بهینهسازی باتری روشن است."
+ "%s باقی مانده است. «بهینهسازی باتری» روشن است.""ازطریق USB شارژ نمیشود. از شارژر ارائهشده با دستگاه استفاده کنید.""ازطریق USB شارژ نمیشود""از شارژر ارائهشده با دستگاه استفاده کنید""تنظیمات"
- "بهینهسازی باتری روشن شود؟"
- "درباره بهینهسازی باتری"
+ "«بهینهسازی باتری» روشن شود؟"
+ "درباره «بهینهسازی باتری»""روشن کردن"
- "بهینهسازی باتری را روشن کنید"
+ "«بهینهسازی باتری» را روشن کنید""تنظیمات""Wi-Fi""چرخش خودکار صفحه"
@@ -124,6 +124,7 @@
"درحال جستجوی چهره""چهره احراز هویت شد""تأیید شد"
+ "برای تکمیل، روی تأیید ضربه بزنید""حسگر اثر انگشت را لمس کنید""نماد اثر انگشت""درحال جستجوی شما…"
@@ -399,7 +400,8 @@
"+%d""اعلانهای کمتر فوری در زیر""دوباره ضربه بزنید تا باز شود"
- "برای باز کردن قفل سریع به بالا بکشید"
+ "برای باز کردن، انگشتتان را تند به بالا بکشید"
+ "برای امتحان مجدد، انگشتتان را تند به بالا بکشید""سازمان شما این دستگاه را مدیریت میکند""این دستگاه توسط %s مدیریت میشود""انگشتتان را از نماد تلفن تند بکشید"
@@ -415,7 +417,7 @@
"%2$s • درحال شارژ بیسیم (%1$s تا شارژ کامل)""%2$s • درحال شارژ شدن (%1$s تا شارژ کامل)""%2$s • درحال شارژ سریع (%1$s تا شارژ کامل)"
- "%2$s • درحال شارژ آهسته (%1$s تا شارژ کامل)"
+ "%2$s • آهستهآهسته شارژ میشود (%1$s تا شارژ کامل)""تغییر کاربر""تعویض کاربر، کاربر کنونی %s""کاربر کنونی %s"
@@ -448,9 +450,9 @@
"کاربر حذف شود؟""همه برنامهها و دادههای این کاربر حذف میشود.""حذف"
- "بهینهسازی باتری روشن است"
+ "«بهینهسازی باتری» روشن است""عملکرد و اطلاعات پسزمینه را کاهش میدهد"
- "بهینهسازی باتری را خاموش کنید"
+ "«بهینهسازی باتری» را خاموش کنید""هنگام ضبط یا ارسال محتوا، %s میتواند هرگونه اطلاعات حساس را (مانند صوت، گذرواژه، اطلاعات پرداخت، عکس و پیام) که روی صفحهتان نشان داده میشود یا از دستگاهتان پخش میشود ضبط کند.""هنگام ضبط یا ارسال محتوا، ارائهدهنده خدمات این عملکرد میتواند هرگونه اطلاعات حساس (مانند صوت، گذرواژه، اطلاعات پرداخت، عکس و پیام) را که روی صفحهتان نشان داده میشود یا از دستگاهتان پخش میشود ضبط کند.""افشای اطلاعات حساس درحین ارسال/ضبط محتوا"
@@ -543,6 +545,7 @@
"تا برداشتن پین، در نما نگهداشته میشود. برای برداشتن پین، «صفحه اصلی» را لمس کنید و نگهدارید.""برای برداشتن پین این صفحه، دکمههای «برگشت» و «نمای کلی» را لمس کنید و نگهدارید""برای برداشتن پین این صفحه، دکمههای «برگشت» و «صفحه اصلی» را لمس کنید و نگهدارید"
+ "برای برداشتن پین این صفحهنمایش، صفحه را تند بالا بکشید و نگهدارید""متوجه شدم""نه متشکرم""صفحه پین شد"
diff --git a/packages/SystemUI/res/values-fi/config.xml b/packages/SystemUI/res/values-fi/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-fi/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index 0424e31903c1712a0bd9031f9777b9c290551fa2..7be438a40e3b0edd60a295ecb9acddf055b06c61 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -124,6 +124,7 @@
"Kasvojasi katsotaan""Kasvot tunnistettu""Vahvistettu"
+ "Valitse lopuksi Vahvista""Kosketa sormenjälkitunnistinta""Sormenjälkikuvake""Etsitään kasvoja…"
@@ -399,7 +400,8 @@
"+%d""Vähemmän kiireelliset ilmoitukset ovat alla""Avaa napauttamalla uudelleen"
- "Avaa lukitus pyyhkäisemällä ylös"
+ "Avaa pyyhkäisemällä ylös"
+ "Yritä uudelleen pyyhkäisemällä ylös""Organisaatiosi hallinnoi laitetta""Tätä laitetta hallinnoi %s.""Avaa puhelu pyyhkäisemällä."
@@ -543,6 +545,7 @@
"Pysyy näkyvissä, kunnes irrotat sen. Irrota painamalla pitkään Aloitusnäyttö.""Irrota näyttö koskettamalla pitkään Takaisin- ja Viimeisimmät-painikkeita""Irrota näyttö koskettamalla pitkään Takaisin- ja Aloitusnäyttö-painikkeita"
+ "Irrota näyttö pyyhkäisemällä ylös ja painamalla pitkään""Selvä""Ei kiitos""Näyttö kiinnitetty"
diff --git a/packages/SystemUI/res/values-fr-rCA/config.xml b/packages/SystemUI/res/values-fr-rCA/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-fr-rCA/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 119eb59c4137fab314e351a790af312841c6d847..e8e4232063e3cb4a1c02bed2d863a1108bffa8d9 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -124,6 +124,7 @@
"L\'appareil recherche votre visage…""Visage authentifié""Confirmé"
+ "Touchez Confirmer pour terminer""Touchez le capteur d\'empreintes digitales""Icône d\'empreinte digitale""Recherche de votre visage…"
@@ -399,7 +400,8 @@
"+%d""Notifications moins urgentes affichées ci-dessous""Touchez à nouveau pour ouvrir"
- "Glissez vers le haut pour déverrouiller"
+ "Balayez l\'écran vers le haut pour ouvrir"
+ "Balayez l\'écran vers le haut pour réessayer""Cet appareil est géré par votre organisation""Cet appareil est géré par %s""Balayez à partir de l\'icône pour accéder au téléphone"
@@ -415,7 +417,7 @@
"%2$s • En recharge sans fil (%1$s jusqu\'à la recharge complète)""En recharge : %2$s (%1$s jusqu\'à charge complète)""En recharge rapide : %2$s (%1$s jusqu\'à ch. comp.)"
- "En recharge lente : %2$s (%1$s jusqu\'à ch. comp.)"
+ "Recharge lente : %2$s (à 100 %% dans %1$s)""Changer d\'utilisateur""Changer d\'utilisateur (utilisateur actuel %s)""Utilisateur actuel : %s"
@@ -543,6 +545,7 @@
"Cet écran est épinglé jusqu\'à ce que vous annuliez l\'opération. Pour annuler l\'épinglage, maintenez le doigt sur la touche Accueil.""Pour annuler l\'épinglage de cet écran, maintenez le doigt sur les touches Retour et Aperçu.""Pour annuler l\'épinglage de cet écran, maintenez le doigt sur les touches Retour et Accueil."
+ "Pour annuler l\'épinglage de cet écran, balayez-le vers le haut et gardez le doigt dessus""OK""Non, merci""Écran épinglé"
@@ -885,7 +888,7 @@
"Le mode Ne pas déranger a été activé par une application (%s).""Le mode Ne pas déranger a été activé par une règle automatique ou une application.""Jusqu\'à %s"
- "Garder"
+ "Conserver""Remplacer""Applications qui fonctionnent en arrière-plan""Touchez pour afficher des détails sur l\'utilisation de la pile et des données"
diff --git a/packages/SystemUI/res/values-fr/config.xml b/packages/SystemUI/res/values-fr/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-fr/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 75e84d322efc13eefb51d79ed9412c78dd685af5..3bc9378072779ef9cd506492f22bb552a2ef6e41 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -124,6 +124,7 @@
"Recherche de votre visage…""Visage authentifié""Confirmé"
+ "Appuyez sur \"Confirmer\" pour terminer""Appuyez sur le lecteur d\'empreinte digitale""Icône d\'empreinte digitale""Recherche de votre visage…"
@@ -375,7 +376,7 @@
"Jusqu\'à l\'aube""À partir de %s""Jusqu\'à %s"
- "Thème foncé"
+ "Thème sombre""Thème foncé\nÉconomiseur de batterie""NFC""La technologie NFC est désactivée"
@@ -399,7 +400,8 @@
"+%d""Notifications moins urgentes ci-dessous""Appuyer à nouveau pour ouvrir"
- "Faire glisser pour déverrouiller"
+ "Balayer vers le haut pour ouvrir"
+ "Balayez l\'écran vers le haut pour réessayer""Cet appareil est géré par votre entreprise""Cet appareil est géré par %s""Balayer pour téléphoner"
@@ -543,6 +545,7 @@
"Cet écran est épinglé jusqu\'à l\'annulation de l\'opération. Pour annuler l\'épinglage, appuyez de manière prolongée sur le bouton \"Accueil\".""Pour annuler l\'épinglage de l\'écran, appuyez de manière prolongée sur les boutons \"Retour\" et \"Aperçu\"""Pour annuler l\'épinglage de l\'écran, appuyez de manière prolongée sur les boutons \"Retour\" et \"Accueil\""
+ "Pour retirer cet écran, balayez vers le haut et continuez d\'appuyer""OK""Non, merci""Écran épinglé"
diff --git a/packages/SystemUI/res/values-gl/config.xml b/packages/SystemUI/res/values-gl/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-gl/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index f42c14f2fea09c470bd1fdd36080cf592de0d559..5480eab8cf6509905273772d2733f8a23849ed80 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -124,6 +124,7 @@
"Buscando a túa cara""Autenticouse a cara""Confirmada"
+ "Toca Confirmar para completar o proceso""Toca o sensor de impresión dixital""Icona de impresión dixital""Buscándote…"
@@ -399,7 +400,8 @@
"+%d""Notificacións menos urxentes abaixo""Toca de novo para abrir"
- "Pasa o dedo cara arriba para desbloquear"
+ "Pasa o dedo cara arriba para abrir"
+ "Pasa o dedo cara arriba para tentalo de novo""Este dispositivo está xestionado pola túa organización""Este dispositivo está xestionado por %s""Pasa o dedo desde a icona para acceder ao teléfono"
@@ -543,6 +545,7 @@
"A pantalla manterase visible ata que deixes de fixala. Para facelo, mantén premido Inicio.""Para deixar de fixar a pantalla, mantén premidos os botóns Volver e Visión xeral""Para deixar de fixar a pantalla, mantén premidos os botóns Atrás e Inicio"
+ "Para soltar esta pantalla, pasa o dedo cara arriba e mantena premida""De acordo""Non, grazas""Fixouse a pantalla"
@@ -596,7 +599,7 @@
"Perfil de traballo""Modo avión""Engade un atallo"
- "Atallo de emisión"
+ "Atallo de difusión""Non escoitarás a alarma seguinte %1$s a menos que desactives esta opción antes desa hora""Non escoitarás a alarma seguinte %1$s""ás %1$s"
@@ -893,10 +896,10 @@
"Non terás acceso aos datos nin a Internet a través de %s. Internet só estará dispoñible mediante a wifi.""o teu operador""Dado que unha aplicación se superpón sobre unha solicitude de permiso, a configuración non pode verificar a túa resposta."
- "Queres permitir que a aplicación %1$s mostre partes de %2$s?"
+ "Queres permitir que %1$s mostre fragmentos de aplicación de %2$s?""- Pode ler información da aplicación %1$s""- Pode levar a cabo accións dentro da aplicación %1$s"
- "Permitir que a aplicación %1$s mostre partes de calquera aplicación"
+ "Permitir que %1$s mostre fragmentos de calquera aplicación""Permitir""Denegar""Tocar para programar a función Aforro de batería"
diff --git a/packages/SystemUI/res/values-gu/config.xml b/packages/SystemUI/res/values-gu/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-gu/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 00308a3140d38b5379feecba3aebfa25e10d9ec6..1a15cf705d91bc2e0555e0e4b15f544edd664b82 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -124,6 +124,7 @@
"તમારો ચહેરો શોધી રહ્યાં છીએ""ચહેરાનું પ્રમાણીકરણ થયું""પુષ્ટિ કરી"
+ "પરીક્ષણ પૂર્ણ કરવા કન્ફર્મ કરોને ટૅપ કરો""ફિંગરપ્રિન્ટના સેન્સરને સ્પર્શ કરો""ફિંગરપ્રિન્ટનું આઇકન""તમારા માટે શોધી રહ્યાં છે..."
@@ -313,7 +314,7 @@
"શ્રવણ યંત્રો""ચાલુ કરી રહ્યાં છીએ…""તેજ"
- "આપમેળે ફેરવો"
+ "ઑટો રોટેટ""સ્ક્રીનને આપમેળે ફેરવો""%s મોડ""પરિભ્રમણ લૉક થયું"
@@ -399,7 +400,8 @@
"+%d""નીચે ઓછી તાકીદની સૂચનાઓ""ખોલવા માટે ફરીથી ટૅપ કરો"
- "અનલૉક કરવા માટે ઉપર સ્વાઇપ કરો"
+ "ખોલવા માટે ઉપરની તરફ સ્વાઇપ કરો"
+ "ફરી પ્રયાસ કરવા માટે ઉપરની તરફ સ્વાઇપ કરો""આ ઉપકરણ તમારી સંસ્થા દ્વારા સંચાલિત છે""આ ઉપકરણ %s દ્વારા સંચાલિત થાય છે""ફોન માટે આયકનમાંથી સ્વાઇપ કરો"
@@ -543,6 +545,7 @@
"તમે જ્યાં સુધી અનપિન કરશો નહીં ત્યાં સુધી આ તેને દૃશ્યક્ષમ રાખે છે. અનપિન કરવા માટે હોમને સ્પર્શ કરી રાખો.""આ સ્ક્રીનને અનપિન કરવા માટે, પાછળ અને ઝલક બટનને સ્પર્શ કરી રાખો""આ સ્ક્રીનને અનપિન કરવા માટે, પાછળ અને હોમ બટનને સ્પર્શ કરી રાખો"
+ "આ સ્ક્રીનને અનપિન કરવા માટે, ઉપર સ્વાઇપ કરીને બટન દબાવી રાખો""સમજાઈ ગયું""ના, આભાર""સ્ક્રીન પિન કરી"
diff --git a/packages/SystemUI/res/values-hi/config.xml b/packages/SystemUI/res/values-hi/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-hi/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 566731cbacf921aa11801f894ac3793069d887f7..bdf317cb02f572c01779f49e5eb074da970d49b3 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -46,8 +46,8 @@
"ब्लूटूथ टीदर किया गया""इनपुट का तरीका सेट करें""सामान्य कीबोर्ड"
- "%1$s को %2$s के एक्सेस की अनुमति दें?"
- "%1$s को %2$s के एक्सेस की अनुमति दें?"
+ "%1$s को %2$s के ऐक्सेस की अनुमति दें?"
+ "%1$s को %2$s के ऐक्सेस की अनुमति दें?""%2$s के लिए %1$s खोलें?""%2$s के लिए %1$s खोलें?""इस USB सहायक डिवाइस के साथ कोई भी इंस्टॉल ऐप्स काम नहीं करता. इस सहायक डिवाइस के बारे में यहां ज़्यादा जानें: %1$s"
@@ -124,6 +124,7 @@
"आपके चेहरे की पुष्टि की जा रही है""चेहरे की पुष्टि हो गई""पुष्टि हो गई"
+ "\'पुष्टि करें\' पर टैप करके पूरा करें""फ़िंगरप्रिंट सेंसर को छुएं""फ़िंगरप्रिंट आइकॉन""आपको पहचान रहा है…"
@@ -204,7 +205,7 @@
"पूरी सूचनाएं देखें""सूचना साफ़ करें""GPS सक्षम."
- "GPS प्राप्त करना."
+ "GPS पाना.""टेलीटाइपराइटर सक्षम.""रिंगर कंपन (वाइब्रेशन).""रिंगर मौन."
@@ -399,7 +400,8 @@
"+%d""कम अत्यावश्यक सूचनाएं नीचे दी गई हैं""खोलने के लिए फिर से टैप करें"
- "अनलॉक करने के लिए ऊपर स्वाइप करें"
+ "खोलने के लिए ऊपर स्वाइप करें"
+ "फिर से कोशिश करने के लिए ऊपर की ओर स्वाइप करें""इस डिवाइस का प्रबंधन आपका संगठन करता है""इस डिवाइस के प्रबंधक %s हैं""फ़ोन के लिए आइकॉन से स्वाइप करें"
@@ -451,8 +453,8 @@
"बैटरी सेवर चालू है""निष्पादन और पृष्ठभूमि डेटा को कम करता है""बैटरी सेवर बंद करें"
- "रिकॉर्ड या कास्ट करते समय, %s आपकी स्क्रीन पर दिखाई जा रही या आपके डिवाइस पर चलाई जा रही संवेदनशील जानकारी एक्सेस कर सकता है. इस जानकारी में ऑडियो, पासवर्ड, भुगतान की जानकारी, फ़ोटो और मैसेज शामिल हैं."
- "रिकॉर्ड या कास्ट करते समय, यह सेवा देने वाला ऐप्लिकेशन आपकी स्क्रीन पर दिखाई जा रही या आपके डिवाइस पर चलाई जा रही संवेदनशील जानकारी एक्सेस कर सकता है. इस जानकारी में ऑडियो, पासवर्ड, भुगतान की जानकारी, फ़ोटो और मैसेज शामिल हैं."
+ "रिकॉर्ड या कास्ट करते समय, %s आपकी स्क्रीन पर दिखाई जा रही या आपके डिवाइस पर चलाई जा रही संवेदनशील जानकारी ऐक्सेस कर सकता है. इस जानकारी में ऑडियो, पासवर्ड, भुगतान की जानकारी, फ़ोटो और मैसेज शामिल हैं."
+ "रिकॉर्ड या कास्ट करते समय, यह सेवा देने वाला ऐप्लिकेशन आपकी स्क्रीन पर दिखाई जा रही या आपके डिवाइस पर चलाई जा रही संवेदनशील जानकारी ऐक्सेस कर सकता है. इस जानकारी में ऑडियो, पासवर्ड, भुगतान की जानकारी, फ़ोटो और मैसेज शामिल हैं.""कास्ट करने/रिकॉर्ड करने के दौरान संवेदनशील जानकारी का सबके सामने आ जाना""फिर से न दिखाएं""सभी को हटाएं"
@@ -543,6 +545,7 @@
"इससे वह तब तक दिखाई देती है जब तक आप उसे अनपिन नहीं कर देते. अनपिन करने के लिए, होम बटन को दबाकर रखें.""इस स्क्रीन को अनपिन करने के लिए, खास जानकारी और वापस जाएं वाले बटन को दबाकर रखें""इस स्क्रीन को अनपिन करने के लिए, होम और वापस जाएं वाले बटन को दबाकर रखें"
+ "इस स्क्रीन को अनपिन करने के लिए, ऊपर की ओर स्वाइप करें और बटन को दबाकर रखें""ठीक है""नहीं, रहने दें""स्क्रीन पिन की गई"
diff --git a/packages/SystemUI/res/values-hr/config.xml b/packages/SystemUI/res/values-hr/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-hr/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 4e0be9d5db11ad18e48ea6000702b23797f6cee2..052a0d2b07c5897059f583c2ac5e48deda626ef9 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -124,6 +124,7 @@
"Traženje lica""Lice je autentificirano""Potvrđeno"
+ "Dodirnite Potvrdi za dovršetak""Dodirnite senzor otiska prsta""Ikona otiska prsta""Tražimo vas…"
@@ -401,7 +402,8 @@
"+%d""Manje hitne obavijesti pri dnu""Dodirnite opet za otvaranje"
- "Prijeđite prstom prema gore za otključavanje"
+ "Prijeđite prstom prema gore da biste otvorili"
+ "Prijeđite prstom prema gore za ponovni pokušaj""Ovim uređajem upravlja vaša organizacija""Ovim uređajem upravlja %s""Prijeđite prstom od ikone za telefon"
@@ -546,6 +548,7 @@
"Zaslon će tako ostati u prvom planu dok ga ne otkvačite. Dodirnite gumb Početna i zadržite pritisak da biste ga otkvačili.""Da biste otkvačili ovaj zaslon, dodirnite gumbe Natrag i Pregled i zadržite pritisak""Da biste otkvačili ovaj zaslon, dodirnite gumbe Natrag i Početna i zadržite pritisak"
+ "Da biste otkvačili ovaj zaslon, prijeđite prstom i zadržite pritisak""Shvaćam""Ne, hvala""Zaslon je pričvršćen"
diff --git a/packages/SystemUI/res/values-hu/config.xml b/packages/SystemUI/res/values-hu/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-hu/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 2297f1eb8d5d4a225bd887f267c7307dd9e31eff..3e3696b45ad96a79876a1ec1e7cdbad56be643c0 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -124,6 +124,7 @@
"Arc keresése""Arc hitelesítve""Megerősítve"
+ "Koppintson a Megerősítés lehetőségre""Érintse meg az ujjlenyomat-érzékelőt""Ujjlenyomat ikonja""Keresem az Ön arcát…"
@@ -399,7 +400,8 @@
"+%d""A kevésbé sürgős értesítések lentebb vannak""Koppintson ismét a megnyitáshoz"
- "Húzza felfelé az ujját a feloldáshoz"
+ "Csúsztasson felfelé a megnyitáshoz"
+ "Az újrapróbálkozáshoz csúsztassa felfelé az ujját""Az eszközt az Ön szervezete kezeli""Az eszközt a(z) %s felügyeli.""A telefonhoz csúsztasson az ikonról"
@@ -543,6 +545,7 @@
"Megjelenítve tartja addig, amíg Ön fel nem oldja a rögzítést. A feloldáshoz tartsa lenyomva a Kezdőképernyő elemet.""A képernyő rögzítésének feloldásához tartsa lenyomva a Vissza és az Áttekintés gombot""A képernyő rögzítésének feloldásához tartsa lenyomva a Vissza és a Kezdőképernyő gombot"
+ "A képernyő rögzítésének feloldásához csúsztassa felfelé ujját, majd tartsa lenyomva""Értem""Nem, köszönöm""Képernyő rögzítve"
@@ -644,7 +647,7 @@
"Kis méret""Néma""Néma megjelenítés"
- "Értesítések"
+ "Figyelemfelkeltő""Értesítések folytatása""Az értesítések kikapcsolása""Továbbra is megjelenjenek az alkalmazás értesítései?"
diff --git a/packages/SystemUI/res/values-hy/config.xml b/packages/SystemUI/res/values-hy/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-hy/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 07ad953c9b68328fe527c888e0b03c023e01671b..2397f884afcab754088c9b242a15abfcfb478dbc 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -55,12 +55,12 @@
"Դիտել""Միշտ բացել %1$s հավելվածը, երբ %2$s լրասարքը միացված է""Միշտ բացել %1$s հավելվածը, երբ %2$s լրասարքը միացված է"
- "Թույլատրե՞լ USB-ի կարգաբերումը:"
+ "Թույլատրե՞լ USB-ով վրիպազերծումը""Համակարգչի RSA-ի բանալի մատնահետքն է`\n%1$s""Միշտ թույլատրել այս համակարգչից""Թույլատրել"
- "USB վրիպազերծումը արգելված է"
- "Ընթացիկ հաշվի օգտատերը չի կարող միացնել USB վրիպազերծումը: Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշվով:"
+ "USB-ով վրիպազերծումը թույլատրված չէ"
+ "Ընթացիկ հաշվի միջոցով չեք կարող միացնել USB-ով վրիպազերծումը: Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշիվ:""USB միացքն անջատված է""USB միացքն անջատվել է, որպեսզի ձեր սարքը չթրջվի կամ չաղտոտվի: Այժմ USB միացքի միջոցով հնարավոր չէ միացնել այլ սարքեր:\n\nԴուք ծանուցում կստանաք, երբ այն նորից անվտանգ լինի օգտագործել:""USB միացքը միացվել է՝ լիցքավորիչներն ու լրասարքերը հայտնաբերելու համար"
@@ -124,12 +124,13 @@
"Դեմքի նույնականացում""Դեմքը ճանաչվեց""Հաստատվեց"
+ "Ավարտելու համար հպեք «Հաստատել»""Հպեք մատնահետքի սկաներին""Մատնահետքի պատկերակ""Դեմքի ճանաչում…""Դեմքի պատկերակ""Համատեղելիության խոշորացման կոճակը:"
- "Դիտափոխել փոքրից ավելի մեծ էկրան:"
+ "Մասշտաբը մեծացնել փոքրից ավելի մեծ էկրան:""Bluetooth-ը միացված է:""Bluetooth-ն անջատված է:""Մարտկոց չկա:"
@@ -399,7 +400,8 @@
"+%d""Պակաս հրատապ ծանուցումները ստորև""Կրկին հպեք՝ բացելու համար"
- "Սահեցրեք վերև` ապակողպելու համար"
+ "Բացելու համար սահեցրեք վերև"
+ "Սահեցրեք վերև՝ նորից փորձելու համար""Այս սարքը կառավարում է ձեր կազմակերպությունը""Այս սարքը կառավարվում է %s-ի կողմից""Սահահարվածեք հեռախոսի պատկերակից"
@@ -537,12 +539,13 @@
"Փոխել արտածման սարքը""Էկրանն ամրացված է""Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Հետ և Համատեսք կոճակները:"
- "Էկրանը կցուցադրվի այնքան ժամանակ, մինչև որ չապամրացնեք այն: Ապամրացնելու համար հպեք և պահեք Հետ և գլխավոր էկրանի կոճակները:"
+ "Էկրանը կցուցադրվի այնքան ժամանակ, մինչև չապամրացնեք այն: Ապամրացնելու համար հպեք և պահեք «Հետ» և «Գլխավոր էկրան» կոճակները""Էկրանը կցուցադրվի այնքան ժամանակ, մինչև որ չապամրացնեք այն: Ապամրացնելու համար մատը սահեցրեք վեր և պահեք։""Էկրանը կմնա տեսադաշտում, մինչև այն ապամրացնեք: Ապամրացնելու համար հպեք և պահեք Համատեսք կոճակը:""Էկրանը կցուցադրվի այնքան ժամանակ, մինչև որ չապամրացնեք այն: Ապամրացնելու համար հպեք և պահեք գլխավոր էկրանի կոճակը:""Էկրանն ապամրացնելու համար հպեք և պահեք Հետ և Համատեսք կոճակները"
- "Էկրանն ապամրացնելու համար հպեք և պահեք Հետ և գլխավոր էկրանի կոճակները"
+ "Էկրանն ապամրացնելու համար հպեք և պահեք «Հետ» և «Գլխավոր էկրան» կոճակները"
+ "Էկրանն ապամրացնելու համար մատը սահեցրեք վերև և պահեք""Եղավ""Ոչ""Էկրանն ամրացված է"
diff --git a/packages/SystemUI/res/values-in/config.xml b/packages/SystemUI/res/values-in/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-in/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 98af02a6f97663b93a3479d09366cf215eb5873b..b18beedefcba872a4352710c0014c61401ff30c7 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -124,6 +124,7 @@
"Mencari wajah Anda""Wajah diautentikasi""Dikonfirmasi"
+ "Ketuk Konfirmasi untuk menyelesaikan""Sentuh sensor sidik jari""Ikon sidik jari""Mencari wajah Anda…"
@@ -399,7 +400,8 @@
"+%d""Notifikasi kurang darurat di bawah""Ketuk lagi untuk membuka"
- "Geser ke atas untuk membuka kunci"
+ "Geser ke atas untuk membuka"
+ "Geser ke atas untuk mencoba lagi""Perangkat ini dikelola oleh organisasi""Perangkat ini dikelola oleh %s""Geser dari ikon untuk telepon"
@@ -543,6 +545,7 @@
"Ini akan terus ditampilkan sampai Anda melepas pin. Sentuh lama tombol Beranda untuk melepas pin.""Untuk melepas pin layar ini, sentuh lama tombol Kembali dan Ringkasan""Untuk melepas pin layar ini, sentuh lama tombol Kembali dan Beranda"
+ "Untuk melepas pin layar ini, geser ke atas & tahan""Mengerti""Lain kali""Layar dipasangi pin"
diff --git a/packages/SystemUI/res/values-is/config.xml b/packages/SystemUI/res/values-is/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-is/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 6067547fcfce65e3ab38e5def914dc7a67e3f185..129319da76d3df1322c4d8652d57087dcc233a29 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -124,6 +124,7 @@
"Leitar að andliti þínu""Andlit staðfest""Staðfest"
+ "Ýttu á „Staðfesta“ til að ljúka""Snertu fingrafaralesarann""Fingrafaratákn""Leitar að þér ..."
@@ -399,7 +400,8 @@
"+%d""Minna áríðandi tilkynningar fyrir neðan""Ýttu aftur til að opna"
- "Strjúktu upp til að opna"
+ "Strjúktu upp til að opna"
+ "Strjúktu upp til að reyna aftur""Þessu tæki er stýrt af fyrirtækinu þínu""Þessu tæki er stýrt af %s""Strjúktu frá tákninu fyrir síma"
@@ -543,6 +545,7 @@
"Þetta heldur þessu opnu þangað til það er losað. Haltu heimahnappinum inni til að losa.""Til að losa þessa skjámynd skaltu halda inni bakkhnappinum og yfirlitshnappinum""Til að losa þessa skjámynd skaltu halda inni bakkhnappinum og heimahnappinum"
+ "Til að losa þennan skjá skaltu strjúka upp og halda""Ég skil""Nei, takk""Skjámynd fest"
diff --git a/packages/SystemUI/res/values-it/config.xml b/packages/SystemUI/res/values-it/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-it/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index ccff49450d0014d5a460359db9981e7d30b68704..a9427e52d6ee3cbfcc95826e7e3eb96e372f9c86 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -124,6 +124,7 @@
"Ricerca del tuo volto""Volto autenticato""Confermato"
+ "Tocca Conferma per completare""Tocca il sensore di impronte digitali""Icona dell\'impronta digitale""In attesa del volto…"
@@ -399,7 +400,8 @@
"+%d""Notifiche meno urgenti in basso""Tocca ancora per aprire"
- "Scorri verso l\'alto per sbloccare"
+ "Scorri verso l\'alto per aprire"
+ "Scorri verso l\'alto per riprovare""Questo dispositivo è gestito dalla tua organizzazione""Questo dispositivo è gestito da %s""Scorri per accedere al telefono"
@@ -543,6 +545,7 @@
"La schermata rimane visibile finché non viene disattivato il blocco su schermo. Per disattivarlo, tocca e tieni premuto Home.""Per disattivare il blocco su schermo, tocca e tieni premuti i pulsanti Indietro e Panoramica""Per disattivare il blocco su schermo, tocca e tieni premuti i pulsanti Indietro e Home"
+ "Per sbloccare questa schermata, scorri verso l\'alto e tieni premuto""OK""No, grazie""Blocco su schermo attivato"
diff --git a/packages/SystemUI/res/values-iw/config.xml b/packages/SystemUI/res/values-iw/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-iw/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index df8dac4a5476f4e26691b6bbca7f89c7a0a239d5..7a7cfa4c417cc445b30cdda2658261d6248c726f 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -124,6 +124,7 @@
"המערכת מחפשת את הפנים שלך""זיהוי הפנים בוצע""מאושר"
+ "יש להקיש על \'אישור\' לסיום""יש לגעת בחיישן טביעות האצבע""סמל טביעת אצבע""מחפש אותך…"
@@ -403,7 +404,8 @@
"+%d""התראות בדחיפות נמוכה יותר בהמשך""הקש שוב כדי לפתוח"
- "החלק מעלה כדי לבטל את הנעילה"
+ "צריך להחליק כדי לפתוח"
+ "יש להחליק למעלה כדי לנסות שוב""מכשיר זה מנוהל על ידי הארגון שלך""המכשיר הזה מנוהל על ידי %s""החלק מהסמל כדי להפעיל את הטלפון"
@@ -461,7 +463,7 @@
"בזמן הקלטה או העברה, השירות שמספק את הפונקציה הזו יכול לקלוט מידע רגיש שמוצג במסך או מופעל מהמכשיר שלך, כולל מידע רגיש כמו אודיו, סיסמאות, פרטי תשלום, תמונות והודעות.""חשיפת מידע רגיש בזמן העברה/הקלטה""אל תציג שוב"
- "נקה הכל"
+ "ניקוי הכל""ניהול""התראות שקטות""ניקוי כל ההתראות השקטות"
@@ -549,6 +551,7 @@
"נשאר בתצוגה עד לביטול ההצמדה. יש ללחוץ לחיצה ארוכה על הלחצן \'דף הבית\' כדי לבטל את ההצמדה.""כדי לבטל את ההצמדה של מסך זה, יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'סקירה\'""כדי לבטל את ההצמדה של מסך זה, יש ללחוץ לחיצה ארוכה על הלחצנים \'הקודם\' ו\'דף הבית\'"
+ "לביטול ההצמדה של המסך הזה יש להחליק מעלה ולהחזיק""הבנתי""לא, תודה""המסך מוצמד"
@@ -622,7 +625,7 @@
"הצג שניות בשעון בשורת הסטטוס. פעולה זו עשויה להשפיע על אורך חיי הסוללה.""סידור מחדש של הגדרות מהירות""הצג בהירות בהגדרות מהירות"
- "ניסיוניות"
+ "ניסיוני""האם להפעיל את ה-Bluetooth?""כדי לחבר את המקלדת לטאבלט, תחילה עליך להפעיל את ה-Bluetooth.""הפעל"
diff --git a/packages/SystemUI/res/values-ja/config.xml b/packages/SystemUI/res/values-ja/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ja/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 534fad7fe501fc06f05c8cf0693a075b3da32094..05f254f0f80f8902061eddba365ad1201f4169c1 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -124,6 +124,7 @@
"顔を認証中です""顔を認証しました""確認しました"
+ "完了するには [確認] をタップしてください""指紋認証センサーをタップしてください""指紋アイコン""顔を認証しています…"
@@ -399,7 +400,8 @@
"+%d""緊急度の低い通知を下に表示""開くにはもう一度タップしてください"
- "ロック解除するには上にスワイプしてください"
+ "開くには上にスワイプします"
+ "上にスワイプしてもう一度お試しください""このデバイスは組織によって管理されています""このデバイスは %s が管理しています""右にスワイプして通話"
@@ -543,6 +545,7 @@
"固定を解除するまで画面が常に表示されるようになります。[ホーム] を押し続けると固定が解除されます。""この画面の固定を解除するには [戻る] ボタンと [最近] ボタンを押し続けます""この画面の固定を解除するには [戻る] ボタンと [ホーム] ボタンを押し続けます"
+ "この画面の固定を解除するには、上にスワイプして長押しします""はい""いいえ""画面を固定しました"
diff --git a/packages/SystemUI/res/values-ka/config.xml b/packages/SystemUI/res/values-ka/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ka/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 0bb4d829d075255467c4dd7c88c82a74344605f5..6a7460dd9f165af9d2da5866fe235de1594560f1 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -124,6 +124,7 @@
"მიმდინარეობს თქვენი სახის ძებნა""სახის ამოცნობილია""დადასტურებული"
+ "დასასრულებლად შეეხეთ „დადასტურებას“""შეეხეთ თითის ანაბეჭდის სენსორს""თითის ანაბეჭდის ხატულა""მიმდინარეობს თქვენი ძიება…"
@@ -399,7 +400,8 @@
"+%d""ქვემოთ მითითებულია ნაკლებად სასწრაფო შეტყობინებები""შეეხეთ ისევ გასახსნელად"
- "გაასრიალეთ ზევით განსაბლოკად"
+ "გასახსნელად გადაფურცლეთ ზემოთ"
+ "ხელახლა საცდელად გადაფურცლეთ ზემოთ""ამ მოწყობილობას მართავს თქვენი ორგანიზაცია""ამ მოწყობილობას მართავს %s""ტელეფონისთვის გადაფურცლეთ ხატულადან"
@@ -543,6 +545,7 @@
"ამით ის დარჩება ხედში ჩამაგრების მოხსნამდე. ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ „მთავარ გვერდს“.""ამ ეკრანის ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ ღილაკებს „უკან“ და „მიმოხილვა“""ამ ეკრანის ჩამაგრების მოსახსნელად, ხანგრძლივად შეეხეთ ღილაკებს „უკან“ და „მთავარი გვერდი“"
+ "ამ ეკრანის ჩამაგრების მოსახსნელად გადაფურცლეთ ზემოთ და არ აუშვათ""გასაგებია""არა, გმადლობთ""ეკრანი ჩამაგრებულია"
diff --git a/packages/SystemUI/res/values-kk/config.xml b/packages/SystemUI/res/values-kk/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-kk/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index e891fc044ba7893257aa4c8d2b630593920c9093..6e0fca774809c078f131e7c8ab4a1b1c80081197 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -124,6 +124,7 @@
"Құрылғы бетіңізді талдап жатыр.""Бет танылды.""Расталды"
+ "Аяқтау үшін \"Растау\" түймесін түртіңіз.""Саусақ ізін оқу сканерін түртіңіз""Саусақ ізі белгішесі""Бет ізделуде…"
@@ -399,7 +400,8 @@
"+%d""Шұғылдығы азырақ хабарландырулар төменде""Ашу үшін қайта түртіңіз"
- "Құлыпты ашу үшін жоғары сырғытыңыз"
+ "Ашу үшін жоғары қарай сырғытыңыз."
+ "Әрекетті қайталау үшін жоғары сырғытыңыз.""Бұл құрылғыны ұйым басқарады""Бұл құрылғыны %s басқарады""Телефонды ашу үшін белгішеден әрі қарай сырғытыңыз"
@@ -543,6 +545,7 @@
"Экран босатылғанға дейін көрсетіліп тұрады. Оны босату үшін \"Негізгі бет\" түймесін түртіп, ұстап тұрыңыз.""Бұл экранды босату үшін \"Артқа\" және \"Шолу\" түймелерін түртіп, ұстап тұрыңыз""Бұл экранды босату үшін \"Артқа\" және \"Негізгі бет\" түймелерін түртіп, ұстап тұрыңыз"
+ "Бұл экранды босату үшін жоғары сырғытып, ұстап тұрыңыз.""Түсінікті""Жоқ, рақмет""Экран бекітілді"
diff --git a/packages/SystemUI/res/values-km/config.xml b/packages/SystemUI/res/values-km/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-km/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 173db1898efd3e9e82b040d3164fdf4ae237d8fe..f4ef4910fc604d39dd5732c350aa4578687a1826 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -124,6 +124,7 @@
"កំពុងផ្ទៀងផ្ទាត់មុខរបស់អ្នក""បានផ្ទៀងផ្ទាត់មុខ""បានបញ្ជាក់"
+ "ចុច \"បញ្ជាក់\" ដើម្បីបញ្ចប់""ប៉ះឧបករណ៍ចាប់ស្នាមម្រាមដៃ""រូបតំណាងស្នាមម្រាមដៃ""កំពុងស្វែងរកអ្នក…"
@@ -399,7 +400,8 @@
"+%d""ការជូនដំណឹងមិនសូវបន្ទាន់ខាងក្រោម""ប៉ះម្ដងទៀត ដើម្បីបើក"
- "អូសឡើងលើ ដើម្បីដោះសោ"
+ "អូសឡើងលើដើម្បីបើក"
+ "អូសឡើងលើ ដើម្បីព្យាយាមម្ដងទៀត""ឧបករណ៍នេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ស្ថាប័នអ្នក""ឧបករណ៍នេះស្ថិតក្រោមការគ្រប់គ្រងរបស់ %s""អូសចេញពីរូបតំណាងដើម្បីប្រើទូរស័ព្ទ"
@@ -541,8 +543,9 @@
"វានឹងនៅតែបង្ហាញ រហូតទាល់តែអ្នកដកការដៅ។ អូសឡើងលើឱ្យជាប់ ដើម្បីដកការដៅ។""វានឹងនៅតែបង្ហាញ រហូតទាល់តែអ្នកដកការដៅ។ សូមសង្កត់ប៊ូតុងទិដ្ឋភាពរួមឲ្យជាប់ ដើម្បីដកការដៅ។""វានឹងនៅតែបង្ហាញ រហូតទាល់តែអ្នកដកការដៅ។ សូមចុចប៊ូតុងទំព័រដើមឱ្យជាប់ ដើម្បីដកការដៅ។"
- "ដើម្បីដកការដៅអេក្រង់នេះ សូមចុចប៊ូតុងថយក្រោយ និងប៊ូតុងទិដ្ឋភាពរួមឱ្យជាប់"
- "ដើម្បីដកការដៅអេក្រង់នេះ សូមចុចប៊ូតុងថយក្រោយ និងប៊ូតុងទំព័រដើមឱ្យជាប់"
+ "ដើម្បីដកខ្ទាស់អេក្រង់នេះ សូមចុចប៊ូតុងថយក្រោយ និងប៊ូតុងទិដ្ឋភាពរួមឱ្យជាប់"
+ "ដើម្បីដកខ្ទាស់អេក្រង់នេះ សូមចុចប៊ូតុងថយក្រោយ និងប៊ូតុងទំព័រដើមឱ្យជាប់"
+ "អូសឡើងលើឱ្យជាប់ ដើម្បីដកការដៅអេក្រង់នេះ""យល់ហើយ""ទេ អរគុណ""បានដៅអេក្រង់"
diff --git a/packages/SystemUI/res/values-kn/config.xml b/packages/SystemUI/res/values-kn/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-kn/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index b8f2324129f023e1b2aeb854296790e6647466a5..4f0462c9c0d620da6ec3f1bd1c88d94bb507bb62 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -124,6 +124,7 @@
"ನಿಮ್ಮ ಮುಖದ ದೃಢೀಕರಣಕ್ಕಾಗಿ ನಿರೀಕ್ಷಿಸಲಾಗುತ್ತಿದೆ""ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲಾಗಿದೆ""ದೃಢೀಕರಿಸಲಾಗಿದೆ"
+ "ಪೂರ್ಣಗೊಳಿಸಲು ದೃಢೀಕರಿಸಿ ಅನ್ನು ಟ್ಯಾಪ್ ಮಾಡಿ""ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಸ್ಪರ್ಶಿಸಿ""ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಐಕಾನ್""ನಿಮಗಾಗಿ ಹುಡುಕಲಾಗುತ್ತಿದೆ…"
@@ -399,7 +400,8 @@
"+%d""ಕೆಳಗೆ ಕಡಿಮೆ ಅವಸರದ ಅಧಿಸೂಚನೆಗಳು""ತೆರೆಯಲು ಮತ್ತೆ ಟ್ಯಾಪ್ ಮಾಡಿ"
- "ಅನ್ಲಾಕ್ ಮಾಡಲು ಸ್ವೈಪ್ ಮಾಡಿ"
+ "ತೆರೆಯಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ"
+ "ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಲು ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ""ಈ ಸಾಧನವನ್ನು ನಿಮ್ಮ ಸಂಸ್ಥೆ ನಿರ್ವಹಿಸುತ್ತಿದೆ""ಈ ಸಾಧನವನ್ನು %s ರಿಂದ ನಿರ್ವಹಿಸಲಾಗಿದೆ""ಫೋನ್ಗಾಗಿ ಐಕಾನ್ನಿಂದ ಸ್ವೈಪ್ ಮಾಡಿ"
@@ -448,7 +450,7 @@
"ಬಳಕೆದಾರರನ್ನು ತೆಗೆದುಹಾಕುವುದೇ?""ಈ ಬಳಕೆದಾರರ ಎಲ್ಲಾ ಅಪ್ಲಿಕೇಶನ್ಗಳು ಮತ್ತು ಡೇಟಾವನ್ನು ಅಳಿಸಲಾಗುವುದು.""ತೆಗೆದುಹಾಕಿ"
- "ಬ್ಯಾಟರಿ ರಕ್ಷಕ ಆನ್ ಆಗಿದೆ"
+ "ಬ್ಯಾಟರಿ ಸೇವರ್ ಆನ್ ಆಗಿದೆ""ಕಾರ್ಯಕ್ಷಮತೆ ಮತ್ತು ಹಿನ್ನೆಲೆ ಡೇಟಾವನ್ನು ಕಡಿಮೆ ಮಾಡುತ್ತದೆ""ಬ್ಯಾಟರಿ ಸೇವರ್ ಆಫ್ ಮಾಡಿ""ರೆಕಾರ್ಡ್ ಮಾಡುವಾಗ ಅಥವಾ ಕ್ಯಾಸ್ಟಿಂಗ್ ಮಾಡುವಾಗ, ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯಂತಹ ಆಡಿಯೋ, ಪಾಸ್ವರ್ಡ್ಗಳು, ಪಾವತಿ ಮಾಹಿತಿ, ಫೋಟೋಗಳು ಮತ್ತು ಸಂದೇಶಗಳನ್ನು ಒಳಗೊಂಡಂತೆ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್ ಮೇಲೆ ಡಿಸ್ಪ್ಲೇ ಮಾಡಿದ ಅಥವಾ ನಿಮ್ಮ ಸಾಧನದಿಂದ ಪ್ಲೇ ಮಾಡಿದ ಯಾವುದೇ ಸೂಕ್ಷ್ಮ ಮಾಹಿತಿಯನ್ನು %s ಕ್ಯಾಪ್ಚರ್ ಮಾಡಬಹುದು."
@@ -543,6 +545,7 @@
"ನೀವು ಅನ್ಪಿನ್ ಮಾಡುವವರೆಗೆ ಅದನ್ನು ವೀಕ್ಷಣೆಯಲ್ಲಿಡುತ್ತದೆ. ಅನ್ಪಿನ್ ಮಾಡಲು ಮುಖಪುಟವನ್ನು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಒತ್ತಿಹಿಡಿಯಿರಿ.""ಈ ಪರದೆಯನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ಹಿಂದಕ್ಕೆ ಮತ್ತು ಸಮಗ್ರ ನೋಟ ಬಟನ್ಗಳನ್ನು ಸ್ಪರ್ಶಿಸಿ ಒತ್ತಿಹಿಡಿಯಿರಿ""ಈ ಪರದೆಯನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ಹಿಂದಕ್ಕೆ ಮತ್ತು ಮುಖಪುಟ ಬಟನ್ಗಳನ್ನು ಸ್ಪರ್ಶಿಸಿ ಒತ್ತಿಹಿಡಿಯಿರಿ"
+ "ಈ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಅನ್ಪಿನ್ ಮಾಡಲು, ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ & ಒತ್ತಿ ಹಿಡಿದುಕೊಳ್ಳಿ""ತಿಳಿಯಿತು""ಧನ್ಯವಾದಗಳು""ಪರದೆಯನ್ನು ಪಿನ್ ಮಾಡಲಾಗಿದೆ"
diff --git a/packages/SystemUI/res/values-ko/config.xml b/packages/SystemUI/res/values-ko/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ko/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 4a1b947141c183cf9df2cdf3628a1a386e3cdb0e..f85ba9cf1d6c01ddedff8663656c594f9ca4596c 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -39,7 +39,7 @@
"절전 모드 사용 설정""설정""Wi-Fi"
- "자동 화면 회전"
+ "화면 자동 회전""무시""자동""알림"
@@ -124,6 +124,7 @@
"얼굴을 찾는 중""얼굴이 인증되었습니다.""확인함"
+ "완료하려면 확인을 탭하세요.""지문 센서를 터치하세요.""지문 아이콘""찾는 중..."
@@ -399,7 +400,8 @@
"+%d""아래에 덜 급한 알림 표시""다시 탭하여 열기"
- "위로 스와이프하여 잠금 해제"
+ "위로 스와이프하여 열기"
+ "위로 스와이프하여 다시 시도해 주세요""조직에서 관리하는 기기입니다.""%s에서 관리하는 기기입니다.""전화 기능을 사용하려면 아이콘에서 스와이프하세요."
@@ -543,6 +545,7 @@
"고정 해제할 때까지 계속 표시됩니다. 고정 해제하려면 홈을 길게 터치하세요.""이 화면을 고정 해제하려면 뒤로 및 최근 사용 버튼을 길게 터치하세요.""이 화면을 고정 해제하려면 뒤로 및 홈 버튼을 길게 터치하세요."
+ "이 화면을 고정 해제하려면 위로 스와이프하고 유지하세요.""확인""거부""화면 고정됨"
diff --git a/packages/SystemUI/res/values-ky/config.xml b/packages/SystemUI/res/values-ky/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ky/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index ce6b64cbfbbfa11ab64109e3c3996a45a3f7751c..fc3092d5aeda7ba784911bbd03da7763b0d5706d 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -124,6 +124,7 @@
"Жүзүңүз изделүүдө""Жүздүн аныктыгы текшерилди""Ырасталды"
+ "Бүтүрүү үчүн \"Ырастоо\" баскычын басыңыз""Манжа изинин сенсорун басыңыз""Манжа изинин сүрөтчөсү""Жүзүңүз изделүүдө…"
@@ -399,7 +400,8 @@
"+%d""Анчейин шашылыш эмес эскертмелер төмөндө""Ачуу үчүн кайра таптап коюңуз"
- "Кулпуну ачуу үчүн серпип коюңуз"
+ "Ачуу үчүн өйдө сүрүңүз"
+ "Кайталоо үчүн экранды өйдө сүрүңүз""Бул түзмөк уюмуңуз тарабынан башкарылат""Бул түзмөк %s тарабынан башкарылат""Сүрөтчөнү серпип телефонго өтүңүз"
@@ -455,7 +457,7 @@
"Жаздырып же тышкы экранга чыгаруу учурунда, бул функцияны аткарып жаткан колдонмо ойноткон аудиоңуз, сырсөздөрүңүз, төлөө маалыматыңыз, сүрөттөрүңүз жана билдирүүлөрүңүз сыяктуу экранда көрсөтүлгөн купуя маалыматты жаздырып калышы мүмкүн.""Тышкы экранга чыгарууда/жаздырууда купуя маалыматты ачыктоо""Экинчи көрсөтүлбөсүн"
- "Бардыгын тазалап салуу"
+ "Баарын тазалап салуу""Башкаруу""Үнсүз билдирмелер""Маанилүү эмес билдирмелердин баарын өчүрүү"
@@ -543,6 +545,7 @@
"Ал бошотулмайынча көрүнө берет. Бошотуу үчүн, \"Башкы бет\" баскычын басып, кармап туруңуз.""Бул экранды бошотуу үчүн \"Артка\" жана \"Сереп салуу\" баскычтарын басып, кармап туруңуз""Бул экранды бошотуу үчүн \"Артка\" жана \"Башкы бет\" баскычтарын басып, кармап туруңуз"
+ "Бул экранды бошотуу үчүн аны өйдө сүрүп, кармап туруңуз""Түшүндүм""Жок, рахмат""Экран кадалды"
diff --git a/packages/SystemUI/res/values-land/dimens.xml b/packages/SystemUI/res/values-land/dimens.xml
index 90e78e85ed19ec42310c0b1a1ae4d1793746f3f4..5a8c5dc68bdfc4bce5912a250b0051fd82d45ab3 100644
--- a/packages/SystemUI/res/values-land/dimens.xml
+++ b/packages/SystemUI/res/values-land/dimens.xml
@@ -36,4 +36,8 @@
136dp12dp
+
+
+ 4dp
diff --git a/packages/SystemUI/res/values-lo/config.xml b/packages/SystemUI/res/values-lo/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-lo/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index beaf98b2c67f90239dc32b32a301efefeff11cb7..d99db74c1fc49e0a1d0ebd2be4ae23140cc6ee76 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -124,6 +124,7 @@
"ກຳລັງເບິ່ງໃບໜ້າຂອງທ່ານ""ພິສູດຢືນຢັນໃບໜ້າແລ້ວ""ຢືນຢັນແລ້ວ"
+ "ແຕະຢືນຢັນເພື່ອສຳເລັດ""ແຕະໃສ່ເຊັນເຊີລາຍນິ້ວມື""ໄອຄອນລາຍນິ້ວມື""ກຳລັງຊອກຫາທ່ານ…"
@@ -399,7 +400,8 @@
"+%d""ການແຈ້ງເຕືອນທີ່ສຳຄັນໜ້ອຍກວ່າຢູ່ດ້ານລຸ່ມ""ແຕະອີກຄັ້ງເພື່ອເປີດ"
- "ເລື່ອນຂຶ້ນເພື່ອປົດລັອກ"
+ "ປັດຂຶ້ນເພື່ອເປີດ"
+ "ປັດຂຶ້ນເພື່ອລອງໃໝ່""ອຸປະກອນນີ້ແມ່ນຈັດການໂດຍອົງກອນຂອງທ່ານ""ອຸປະກອນນີ້ຖືກຈັດການໂດຍ %s""ປັດຈາກໄອຄອນສຳລັບໂທລະສັບ"
@@ -543,6 +545,7 @@
"ນີ້ຈະສະແດງມັນໃນໜ້າຈໍຈົນກວ່າທ່ານຈະເຊົາປັກໝຸດ. ໃຫ້ແຕະປຸ່ມພາບຮວມຄ້າງໄວ້ເພື່ອຍົກເລີກການປັກໝຸດ.""ເພື່ອຍົກເລີກການປັກໝຸດໜ້າຈໍນີ້, ໃຫ້ແຕະປຸ່ມກັບຄືນ ແລະ ປຸ່ມພາບຮວມຄ້າງໄວ້""ເພື່ອຍົກເລີກການປັກໝຸດໜ້າຈໍນີ້, ໃຫ້ແຕະປຸ່ມກັບຄືນ ແລະ ປຸ່ມພາບຮວມຄ້າງໄວ້"
+ "ເພື່ອເຊົາປັກໝຸດໜ້າຈໍນີ້, ໃຫ້ປັດຂຶ້ນຄ້າງໄວ້""ເຂົ້າໃຈແລ້ວ""ບໍ່, ຂອບໃຈ""ປັກໝຸດໜ້າຈໍແລ້ວ"
diff --git a/packages/SystemUI/res/values-lt/config.xml b/packages/SystemUI/res/values-lt/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-lt/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 8897bcbceb571b3b11c2047c0f361d4a76574a8a..2d03471df5f990a732a3745ee52ddebf6bdd772b 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -124,6 +124,7 @@
"Ieškoma veido""Veidas autentifikuotas""Patvirtinta"
+ "Paliesk. „Patvirtinti“, kad užbaigtumėte""Palieskite piršto antspaudo jutiklį""Piršto antspaudo piktograma""Ieškoma jūsų…"
@@ -403,7 +404,8 @@
"+%d""Mažiau skubūs pranešimai toliau""Palieskite dar kartą, kad atidarytumėte"
- "Perbraukite aukštyn, kad atrakintumėte"
+ "Perbraukite aukštyn, kad atidarytumėte"
+ "Jei norite bandyti dar kartą, perbraukite aukštyn""Šį įrenginį tvarko jūsų organizacija""Šį įrenginį tvarko %s""Perbraukite iš telefono piktogramos"
@@ -509,7 +511,7 @@
"„%1$s“ naudoja „%2$s“ įrenginiui tvarkyti.""Administrat. gali stebėti ir tvark. nustat., įmonės prieigos par., progr., su įreng. susietus duomenis ir įreng. vietovės inform."" "
- "Sužinoti daugiau"
+ "Sužinokite daugiau""Esate prisijungę prie programos „%1$s“, kuri gali stebėti tinklo veiklą, įskaitant el. laiškus, programas ir svetaines."" ""Atidaryti VPN nustatymus"
@@ -549,6 +551,7 @@
"Tai bus rodoma, kol atsegsite. Palieskite ir palaikykite „Pagrindinis ekranas“, kad atsegtumėte.""Kad atsegtumėte šį ekraną, palieskite ir palaikykite mygtukus „Atgal“ ir „Apžvalga“""Kad atsegtumėte šį ekraną, palieskite ir palaikykite mygtukus „Atgal“ ir „Pagrindinis ekranas“"
+ "Kad atsegtumėte šį ekraną, perbraukite aukštyn ir palaikykite""Supratau""Ne, ačiū""Ekranas prisegtas"
diff --git a/packages/SystemUI/res/values-lv/config.xml b/packages/SystemUI/res/values-lv/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-lv/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 89be039862b7296b0c212e9f9086c8540c7c026f..e6ac23579597c52d1ee00bb3188a6fc736f51a9d 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -124,6 +124,7 @@
"Tiek meklēta jūsu seja""Seja autentificēta""Apstiprināts"
+ "Lai pabeigtu, pieskarieties Apstiprināt""Pieskarieties pirksta nospieduma sensoram""Pirksta nospieduma ikona""Notiek jūsu sejas meklēšana…"
@@ -401,7 +402,8 @@
"+%d""Mazāk steidzami paziņojumi tiek rādīti tālāk""Pieskarieties vēlreiz, lai atvērtu"
- "Velciet uz augšu, lai atbloķētu"
+ "Velciet augšup, lai atvērtu"
+ "Velciet augšup, lai mēģinātu vēlreiz""Šo ierīci pārvalda jūsu organizācija""Šo ierīci pārvalda %s""Lai lietotu tālruni, velciet no ikonas"
@@ -546,6 +548,7 @@
"Šādi tas būs redzams līdz brīdim, kad to atspraudīsiet. Lai atspraustu, pieskarieties pogai “Sākums” un turiet to.""Lai atspraustu šo ekrānu, pieskarieties pogām “Atpakaļ” un “Pārskats” un turiet tās.""Lai atspraustu šo ekrānu, pieskarieties pogām “Atpakaļ” un “Sākums” un turiet tās."
+ "Lai atspraustu šo ekrānu, velciet augšup un turiet.""Sapratu!""Nē, paldies""Ekrāns ir piesprausts"
diff --git a/packages/SystemUI/res/values-mk/config.xml b/packages/SystemUI/res/values-mk/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-mk/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index 1ecb83308349031c588be99a0654b0ed71eb1173..e6126e65c058a07b1bb0387af2e9865222512bf5 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -124,6 +124,7 @@
"Го бараме вашето лице""Лицето е проверено""Потврдено"
+ "Допрете „Потврди“ за да се заврши""Допрете го сензорот за отпечатоци""Икона за отпечатоци""Ве бараме вас…"
@@ -191,7 +192,7 @@
"Не е поставен да користи интернет""Исклучи""Се поврзува со Bluetooth."
- "Режим на работа во авион."
+ "Авионски режим.""VPN е вклучена.""Нема SIM-картичка""Променување на мрежата на операторот"
@@ -346,7 +347,7 @@
"Осветленост""Автоматски""Преврти ги боите"
- "Режим за корекција на боја"
+ "Режим за корекција на бои""Повеќе поставки""Готово""Поврзано"
@@ -399,7 +400,8 @@
"+%d""Долу се помалку итни известувања""Допрете повторно за да се отвори"
- "Повлечете за да се отклучи"
+ "Повлечете за да отворите"
+ "Повлечете нагоре за да се обидете повторно""Вашата организација управува со уредов""Уредов го управува %s""Повлечете од иконата за телефонот"
@@ -455,7 +457,7 @@
"При снимањето или емитувањето, услугата што ја обезбедува функцијава може да ги сними чувствителните информации што се прикажани на вашиот екран или пуштени од вашиот уред, вклучувајќи чувствителни информации како што се аудио, лозинки, информации за плаќање, фотографии и пораки.""Изложување чувствителни информации при емитување/снимање""Не покажувај повторно"
- "Исчисти сè"
+ "Избриши сѐ""Управувајте""Тивки известувања""Исчисти ги сите тивки известувања"
@@ -543,6 +545,7 @@
"Ќе се гледа сѐ додека не го откачите. Допрете и задржете „Почетен екран“ за откачување.""За откачување на екранов, допрете и задржете ги копчињата „Назад“ и „Краток преглед“""За откачување на екранов, допрете и задржете ги копчињата „Назад“ и „Почетен екран“"
+ "За да го откачите екранов, повлечете нагоре и задржете""Сфатив""Не, фала""Екранот е прикачен"
@@ -594,7 +597,7 @@
"Етернет""Аларм""Работен профил"
- "Режим на работа во авион"
+ "Авионски режим""Додај плочка""Емитувај плочка""Нема да го слушнете следниот аларм %1$s освен ако претходно не го исклучите ова"
diff --git a/packages/SystemUI/res/values-ml/config.xml b/packages/SystemUI/res/values-ml/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ml/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index c038b84b1ba8f0f58b594e5d08f004d0726d8131..181eb4a1694265bd83e7adb9d450c2a86bf716e9 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -124,6 +124,7 @@
"നിങ്ങളുടെ മുഖത്തിന് വേണ്ടി തിരയുന്നു""മുഖം പരിശോധിച്ചുറപ്പിച്ചു""സ്ഥിരീകരിച്ചു"
+ "പൂർത്തിയാക്കാൻ സ്ഥിരീകരിക്കുക ടാപ്പ് ചെയ്യൂ""വിരലടയാള സെൻസർ സ്പർശിക്കുക""വിരലടയാള ഐക്കൺ""നിങ്ങൾക്കായി തിരയുന്നു…"
@@ -399,7 +400,8 @@
"+%d""ആവശ്യം കുറഞ്ഞ അറിയിപ്പുകൾ ചുവടെ നൽകിയിരിക്കുന്നു""തുറക്കുന്നതിന് വീണ്ടും ടാപ്പുചെയ്യുക"
- "അൺലോക്കുചെയ്യുന്നതിന് മുകളിലേക്ക് സ്വൈപ്പുചെയ്യുക"
+ "തുറക്കാൻ മുകളിലോട്ട് സ്വൈപ്പ് ചെയ്യുക"
+ "വീണ്ടും ശ്രമിക്കാൻ മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക""ഈ ഉപകരണം മാനേജുചെയ്യുന്നത് നിങ്ങളുടെ സ്ഥാപനമാണ്""%s മാനേജുചെയ്യുന്ന ഉപകരണമാണിത്""ഫോൺ ഐക്കണിൽ നിന്ന് സ്വൈപ്പുചെയ്യുക"
@@ -543,6 +545,7 @@
"നിങ്ങൾ അൺപിൻ ചെയ്യുന്നതുവരെ ഇത് കാണുന്ന വിധത്തിൽ നിലനിർത്തും. അൺപിൻ ചെയ്യാൻ \'ഹോം\' ബട്ടൺ സ്പർശിച്ച് പിടിക്കുക.""ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ, \'തിരികെ പോവുക\', \'അവലോകനം\' ബട്ടണുകൾ സ്പർശിച്ച് പിടിക്കുക""ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ, \'തിരികെ പോവുക\', \'ഹോം\' ബട്ടണുകൾ സ്പർശിച്ച് പിടിക്കുക"
+ "ഈ സ്ക്രീൻ അൺപിൻ ചെയ്യാൻ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്ത് പിടിക്കുക""മനസ്സിലായി""വേണ്ട, നന്ദി""സ്ക്രീൻ പിൻ ചെയ്തു"
diff --git a/packages/SystemUI/res/values-mn/config.xml b/packages/SystemUI/res/values-mn/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-mn/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 0803dcb7a37327fb918cee6dfefa3bed497c0896..085a0aeeb80ec85277c6037b7d23e9ff640243c4 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -124,6 +124,7 @@
"Таны царайг хайж байна""Царайг баталгаажууллаа""Баталгаажсан"
+ "Дуусгахын тулд баталгаажуулахыг товших""Хурууны хээ мэдрэгчид хүрэх""Хурууны хээний дүрс тэмдэг""Таныг хайж байна…"
@@ -399,7 +400,8 @@
"+%d""Яаралтай биш мэдэгдлүүдийг доор""Нээхийн тулд дахин товшино уу"
- "Түгжээг тайлах бол шудрана уу"
+ "Нээхийн тулд дээш шударна уу"
+ "Дахин оролдохын тулд дээш шударна уу""Энэ төхөөрөмжийг таны байгууллага удирдаж байна""Энэ төхөөрөмжийг %s удирддаг""Утсыг гаргахын тулд дүрс тэмдгээс шудрах"
@@ -543,6 +545,7 @@
"Таныг тогтоосныг болиулах хүртэл үүнийг харуулсан хэвээр байна. Тогтоосныг болиулахын тулд Нүүр хуудас товчлуурыг дараад хүлээнэ үү.""Энэ дэлгэцийг тогтоосныг болиулахын тулд Буцах, Тойм товчлуурыг дараад хүлээнэ үү""Энэ дэлгэцийг тогтоосныг болиулахын тулд Буцах, Нүүр хуудас товчлуурыг дараад хүлээнэ үү"
+ "Энэ дэлгэцийг тогтоосныг болиулахын тулд дээш шудраад хүлээнэ үү""Ойлголоо""Үгүй""Дэлгэцийг тогтоосон"
diff --git a/packages/SystemUI/res/values-mr/config.xml b/packages/SystemUI/res/values-mr/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-mr/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index e40f5aa57554ea0db8cc52eeaeeb25c3313d2a2c..4722ae9ef037a0cbf393e8cd80a04a8ef7d5c8e5 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -124,6 +124,7 @@
"तुमचा चेहरा शोधत आहे""चेहरा ऑथेंटिकेशन केलेला आहे""निश्चित केले"
+ "पूर्ण करण्यासाठी खात्री करा वर टॅप करा""फिंगरप्रिंट सेन्सरला स्पर्श करा""फिंगरप्रिंट आयकन""तुमच्यासाठी शोधत आहे…"
@@ -399,7 +400,8 @@
"+%d""खाली कमी तातडीच्या सूचना""उघडण्यासाठी पुन्हा टॅप करा"
- "अनलॉक करण्यासाठी स्वाइप करा"
+ "उघडण्यासाठी वर स्वाइप करा"
+ "पुन्हा प्रयत्न करण्यासाठी वर स्वाइप करा""हे डिव्हाइस तुमची संस्था व्यवस्थापित करते""हे डिव्हाइस %s ने व्यवस्थापित केले आहे""फोनसाठी चिन्हावरून स्वाइप करा"
@@ -543,6 +545,7 @@
"तुम्ही अनपिन करेपर्यंत हे त्यास दृश्यामध्ये ठेवते. अनपिन करण्यासाठी होमला स्पर्श करा आणि धरून ठेवा.""हा स्क्रीन अनपिन करण्यासाठी, मागे आणि अवलोकन बटणांना स्पर्श करून धरून ठेवा""हा स्क्रीन अनपिन करण्यासाठी, मागे आणि होम बटणांना स्पर्श करून धरून ठेवा"
+ "हा स्क्रीन अनपिन करण्यासाठी, वर स्वाइप करा आणि धरून ठेवा""समजले""नाही, नको""स्क्रीन पिन केला"
@@ -746,7 +749,7 @@
"डेटा सेव्हर""डेटा सेव्हर चालू आहे""डेटा सेव्हर बंद आहे"
- "चालू"
+ "सुरू""बंद""नॅव्हिगेशन बार""लेआउट"
diff --git a/packages/SystemUI/res/values-ms/config.xml b/packages/SystemUI/res/values-ms/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ms/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 871be05e444b5dd9c8c9a60fef5715136cb94986..1bc7ca94792cca8106aad970e98acf54824b7236 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -124,6 +124,7 @@
"Mencari wajah anda""Wajah disahkan""Disahkan"
+ "Ketik Sahkan untuk menyelesaikan""Sentuh penderia cap jari""Ikon cap jari""Mencari anda…"
@@ -399,7 +400,8 @@
"+%d""Pemberitahuan kurang penting di bawah""Ketik lagi untuk membuka"
- "Leret ke atas untuk membuka kunci"
+ "Leret ke atas untuk buka"
+ "Leret ke atas untuk mencuba lagi""Peranti ini diurus oleh organisasi anda""Peranti ini diurus oleh %s""Leret dari ikon untuk telefon"
@@ -543,6 +545,7 @@
"Tindakan ini memastikan skrin kelihatan sehingga anda menyahsemat. Sentuh & tahan Skrin Utama untuk menyahsemat.""Untuk menyahsemat skrin ini, sentuh & tahan butang Kembali dan Ikhtisar""Untuk menyahsemat skrin ini, sentuh & tahan butang Kembali dan Skrin Utama"
+ "Untuk menyahsemat skrin ini, leret ke atas & tahan""Faham""Tidak""Skrin disemat"
diff --git a/packages/SystemUI/res/values-my/config.xml b/packages/SystemUI/res/values-my/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-my/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index d8a9a64ba5c001207c64fda4f24afe27f933bf39..51aaaa2ae9545dfa681a283ea4022782afb9fb61 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -124,6 +124,7 @@
"သင့်မျက်နှာကို ရှာနေသည်""မျက်နှာ အထောက်အထားစိစစ်ပြီးပြီ""အတည်ပြုပြီးပြီ"
+ "အပြီးသတ်ရန်အတွက် \'အတည်ပြုရန်\' ကို တို့ပါ""လက်ဗွေအာရုံခံကိရိယာကို တို့ပါ""လက်ဗွေ သင်္ကေတ""သင့်ကို ရှာဖွေနေသည်…"
@@ -399,7 +400,8 @@
"+%d""အရေးပါမှု နည်းသည့် အကြောင်းကြားချက်များ အောက်မှာ""ဖွင့်ရန် ထပ်ပြီး ပုတ်ပါ"
- "သော့ဖွင့်ရန် အပေါ်သို့ ပွတ်ဆွဲပါ"
+ "ဖွင့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ"
+ "ထပ်စမ်းကြည့်ရန် အပေါ်သို့ပွတ်ဆွဲပါ""ဤစက်ပစ္စည်းကို သင်၏အဖွဲ့အစည်းက စီမံခန့်ခွဲထားပါသည်""ဤစက်ပစ္စည်းကို %s က စီမံခန့်ခွဲထားပါသည်""ဖုန်းအတွက် သင်္ကေတပုံအား ပွတ်ဆွဲပါ"
@@ -543,6 +545,7 @@
"သင်က ပင်မဖြုတ်မချင်း ၎င်းကိုပြသထားပါမည်။ ပင်ဖြုတ်ရန် \'ပင်မ\' ခလုတ်ကို တို့၍ဖိထားပါ။""ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန်အတွက် \'နောက်သို့\' နှင့် \'အနှစ်ချုပ်\' ခလုတ်တို့ကို တို့၍ဖိထားပါ""ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန်အတွက် \'နောက်သို့\' နှင့် \'ပင်မ\' ခလုတ်တို့ကို တို့၍ဖိထားပါ"
+ "ဤမျက်နှာပြင်ကို ပင်ဖြုတ်ရန် အပေါ်သို့ ပွတ်ဆွဲပြီး ဖိထားပါ""ရပါပြီ""မလိုတော့ပါ""မျက်နှာပြင်ကို ပင်ထိုးထားသည်"
diff --git a/packages/SystemUI/res/values-nb/config.xml b/packages/SystemUI/res/values-nb/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-nb/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 3d00633d13dd68021c74c5a783c090197993fbd1..ce611e03ad6aee0a55d6a395607ead8ffd97d8ee 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -124,6 +124,7 @@
"Ser etter ansiktet ditt""Ansiktet er autentisert""Bekreftet"
+ "Trykk på Bekreft for å fullføre""Trykk på fingeravtrykkssensoren""Ikon for fingeravtrykk""Ser etter deg …"
@@ -399,7 +400,8 @@
"+%d""Mindre presserende varsler nedenfor""Trykk på nytt for å åpne"
- "Sveip oppover for å låse opp"
+ "Sveip opp for å åpne"
+ "Sveip opp for å prøve igjen""Denne enheten administreres av organisasjonen din""Denne enheten administreres av %s""Sveip ikonet for å åpne telefon"
@@ -543,6 +545,7 @@
"På denne måten blir skjermen synlig frem til du løsner den. Trykk og hold inne Startside for å løsne den.""For å løsne denne skjermen, trykk på og hold inne Tilbake- og Oversikt-knappene""For å løsne denne skjermen, trykk på og hold inne Tilbake- og Startside-knappene"
+ "For å løsne denne skjermen, sveip opp og hold""Skjønner""Nei takk""Skjermen er festet"
diff --git a/packages/SystemUI/res/values-ne/config.xml b/packages/SystemUI/res/values-ne/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ne/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index ccf5037d62f5136435ee7d8cf5581e4327f17215..a3a3da3c2fb031aa2a526c085f804eda55019bd5 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -124,6 +124,7 @@
"तपाईंको अनुहार खोज्दै""अनुहार प्रमाणीकरण गरियो""पुष्टि भयो"
+ "पूरा गर्नका लागि पुष्टि गर्नुहोस् नामक विकल्पमा ट्याप गर्नुहोस्""फिंगरप्रिन्ट सेन्सरमा छुनुहोस्""फिंगरप्रिन्ट जनाउने आइकन""तपाईंलाई खोज्दै…"
@@ -399,7 +400,8 @@
"+%d""तल कम जरुरी सूचनाहरू""खोल्न पुनः ट्याप गर्नुहोस्"
- "अनलक गर्न स्वाप गर्नुहोस्"
+ "खोल्न माथितिर स्वाइप गर्नुहोस्"
+ "फेरि प्रयास गर्न माथितिर स्वाइप गर्नुहोस्""तपाईंको संगठनले यस यन्त्रलाई व्यवस्थापन गर्दछ""यो यन्त्र %s द्वारा व्यवस्थापन गरिएको छ""फोनको लागि आइकनबाट स्वाइप गर्नुहोस्"
@@ -542,7 +544,8 @@
"तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न परिदृश्य बटनलाई छोइराख्नुहोस्।""तपाईंले अनपिन नगरेसम्म यसले त्यसलाई दृश्यमा कायम राख्छ। अनपिन गर्न गृह नामक बटनलाई छोइराख्नुहोस्।""यस स्क्रिनलाई अनपनि गर्न पछाडि र परिदृश्य नामक बटनहरूलाई छोइराख्नुहोस्"
- "यस स्क्रिनलाई अनपनि गर्न पछाडि र गृह नामक बटनहरूलाई छोइराख्नुहोस्"
+ "यस स्क्रिनलाई अनपिन गर्न पछाडि र गृह नामक बटनहरूलाई छोइराख्नुहोस्"
+ "यो स्क्रिन अनपिन गर्न माथितिर स्वाइप गरी थिचिराख्नुहोस्""बुझेँ""धन्यवाद पर्दैन""स्क्रिन पिन गरियो"
diff --git a/packages/SystemUI/res/values-nl/config.xml b/packages/SystemUI/res/values-nl/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-nl/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index ae0149205bfd76fe0fcad2f0d9f0f6594c9b7d44..305b46a2feb608d6edc4adae39f3e2cbf263f9a1 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -124,6 +124,7 @@
"Er wordt naar je gezicht gezocht""Gezicht geverifieerd""Bevestigd"
+ "Tik op Bevestigen om te voltooien""Raak de vingerafdruksensor aan""Vingerafdrukpictogram""Jouw gezicht zoeken…"
@@ -399,7 +400,8 @@
"+%d""Minder urgente meldingen onderaan""Tik nog eens om te openen"
- "Veeg omhoog om te ontgrendelen"
+ "Veeg omhoog om te openen"
+ "Veeg omhoog om het opnieuw te proberen""Dit apparaat wordt beheerd door je organisatie""Dit apparaat wordt beheerd door %s""Vegen voor telefoon"
@@ -543,6 +545,7 @@
"Het scherm blijft zichtbaar totdat je het losmaakt. Tik op Home en houd dit vast om het scherm los te maken.""Tik op Terug en Overzicht en houd deze knoppen vast om dit scherm los te maken""Tik op Terug en Home en houd deze knoppen vast om dit scherm los te maken"
+ "Veeg omhoog en houd vast om dit scherm los te maken""Ik snap het""Nee, bedankt""Scherm vastgezet"
diff --git a/packages/SystemUI/res/values-or/config.xml b/packages/SystemUI/res/values-or/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-or/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 6646b8d30e104bdc79f042c94efd34107991b475..e9b150c1a66e2caf97cccd86ec050ae739eec9b8 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -124,6 +124,7 @@
"ଆପଣଙ୍କର ମୁହଁକୁ ପ୍ରମାଣ କରୁଛି""ମୁହଁ ପ୍ରାମାଣିକତା ହୋଇଛି""ସୁନିଶ୍ଚିତ କରାଯାଇଛି"
+ "ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ସୁନିଶ୍ଚିତ କରନ୍ତୁରେ ଟାପ୍ କରନ୍ତୁ""ଟିପଚିହ୍ନ ସେନସର୍କୁ ଛୁଅଁନ୍ତୁ""ଆଙ୍ଗୁଠି ଚିହ୍ନ ଆଇକନ୍""ଆପଣଙ୍କୁ ଚିହ୍ନଟ କରୁଛି…"
@@ -249,9 +250,9 @@
"ପ୍ୟାନେଲ୍ ବନ୍ଦ କରନ୍ତୁ।""ଅଧିକ ସମୟ।""କମ୍ ସମୟ।"
- "ଫ୍ଲାଶ୍ଲାଇଟ୍ ଅଫ୍ ଅଛି।"
+ "ଫ୍ଲାସ୍ଲାଇଟ୍ ବନ୍ଦ ଅଛି।""ଟର୍ଚ୍ଚ ଲାଇଟ୍ ଅନୁପଲବ୍ଧ।"
- "ଫ୍ଲାଶ୍ଲାଇଟ୍ ଅନ୍ ଅଛି।"
+ "ଫ୍ଲାସ୍ଲାଇଟ୍ ଚାଲୁଅଛି।""ଟର୍ଚ୍ଚ ଲାଇଟ୍ ବନ୍ଦ ଅଛି।""ଟର୍ଚ୍ଚ ଲାଇଟ୍ ଅନ୍ ଅଛି।""ରଙ୍ଗ ବିପରୀତିକରଣକୁ ବନ୍ଦ କରିଦିଆଗଲା।"
@@ -361,7 +362,7 @@
%d ଡିଭାଇସ୍"ବିଜ୍ଞପ୍ତି"
- "ଫ୍ଲାଶ୍ଲାଇଟ"
+ "ଫ୍ଲାସ୍ଲାଇଟ୍""ମୋବାଇଲ୍ ଡାଟା""ଡାଟାର ବ୍ୟବହାର""ଅବଶିଷ୍ଟ ଡାଟା"
@@ -399,7 +400,8 @@
"+%d""ନିମ୍ନରେ କମ୍ ଜରୁରୀ ବିଜ୍ଞପ୍ତି""ଖୋଲିବା ପାଇଁ ପୁଣି ଟାପ୍ କରନ୍ତୁ"
- "ଅନଲକ୍ କରିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"
+ "ଖୋଲିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"
+ "ପୁଣି ଚେଷ୍ଟା କରିବା ପାଇଁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ""ଏହି ଡିଭାଇସ୍ ଆପଣଙ୍କ ସଂସ୍ଥା ଦ୍ୱାରା ପରିଚାଳିତ।""ଏହି ଡିଭାଇସ୍ %s ଦ୍ୱାରା ପରିଚାଳିତ ହେଉଛି""ଫୋନ୍ ପାଇଁ ଆଇକନରୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ"
@@ -543,6 +545,7 @@
"ଆପଣ ଅନପିନ୍ ନକରିବା ପର୍ଯ୍ୟନ୍ତ ଏହା ଦେଖାଉଥିବ। ଅନପିନ୍ କରିବା ପର୍ଯ୍ୟନ୍ତ ହୋମ୍କୁ ଦାବିଧରନ୍ତୁ।""ଏହି ସ୍କ୍ରୀନ୍କୁ ଅନପିନ୍ କରିବା ପାଇଁ, ବ୍ୟାକ୍ ଏବଂ ଓଭରଭ୍ୟୁ ବଟନ୍କୁ ଦାବିଧରନ୍ତୁ""ଏହି ସ୍କ୍ରୀନ୍କୁ ଅନପିନ୍ କରିବା ପାଇଁ, ବ୍ୟାକ୍ ଏବଂ ହୋମ୍ ବଟନ୍କୁ ଦାବିଧରନ୍ତୁ"
+ "ଏହି ସ୍କ୍ରୀନ୍କୁ ଅନପିନ୍ କରିବା ପାଇଁ, ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ ଏବଂ ଧରି ରଖନ୍ତୁ""ବୁଝିଲି""ନାହିଁ, ଥାଉ""ସ୍କ୍ରୀନ୍କୁ ପିନ୍ କରାଗଲା"
diff --git a/packages/SystemUI/res/values-pa/config.xml b/packages/SystemUI/res/values-pa/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-pa/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 393469ee0d9e277a6931725b6523309850e7ab3a..fe426c44acc3126b18955ff17b8d9e7121c699ca 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -124,6 +124,7 @@
"ਤੁਹਾਡਾ ਚਿਹਰਾ ਲੱਭਿਆ ਜਾ ਰਿਹਾ ਹੈ""ਚਿਹਰਾ ਪ੍ਰਮਾਣੀਕਿਰਤ ਹੋਇਆ""ਪੁਸ਼ਟੀ ਕੀਤੀ ਗਈ"
+ "ਪੂਰਾ ਕਰਨ ਲਈ ਪੁਸ਼ਟੀ ਕਰੋ \'ਤੇ ਟੈਪ ਕਰੋ""ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ""ਫਿੰਗਰਪ੍ਰਿੰਟ ਦਾ ਪ੍ਰਤੀਕ""ਤੁਹਾਡੀ ਪਛਾਣ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ…"
@@ -399,7 +400,8 @@
"+%d""ਹੇਠਾਂ ਘੱਟ ਲਾਜ਼ਮੀ ਸੂਚਨਾਵਾਂ""ਖੋਲ੍ਹਣ ਲਈ ਦੁਬਾਰਾ ਟੈਪ ਕਰੋ"
- "ਅਣਲਾਕ ਕਰਨ ਲਈ ਉੱਪਰ ਸਵਾਈਪ ਕਰੋ।"
+ "ਖੋਲ੍ਹਣ ਲਈ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ"
+ "ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰਨ ਲਈ ਉੱਤੇ ਵੱਲ ਸਵਾਈਪ ਕਰੋ""ਇਸ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ ਤੁਹਾਡੇ ਸੰਗਠਨ ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ""ਇਹ ਡੀਵਾਈਸ %s ਵੱਲੋਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਗਿਆ ਹੈ""ਫ਼ੋਨ ਲਈ ਪ੍ਰਤੀਕ ਤੋਂ ਸਵਾਈਪ ਕਰੋ"
@@ -543,6 +545,7 @@
"ਤੁਹਾਡੇ ਵੱਲੋਂ ਅਨਪਿੰਨ ਨਾ ਕੀਤੇ ਜਾਣ ਤੱਕ ਇਸਨੂੰ ਦਿਖਾਇਆ ਜਾਂਦਾ ਹੈ। ਅਨਪਿੰਨ ਕਰਨ ਲਈ \'ਹੋਮ\' ਨੂੰ ਸਪੱਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ।""ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, \'ਪਿੱਛੇ\' ਅਤੇ \'ਰੂਪ-ਰੇਖਾ\' ਬਟਨਾਂ ਨੂੰ ਸਪੱਰਸ਼ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ""ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, \'ਪਿੱਛੇ\' ਅਤੇ \'ਹੋਮ\' ਬਟਨਾਂ ਨੂੰ ਸਪੱਰਸ਼ ਕਰੋ ਅਤੇ ਦਬਾਈ ਰੱਖੋ"
+ "ਇਸ ਸਕ੍ਰੀਨ ਨੂੰ ਅਨਪਿੰਨ ਕਰਨ ਲਈ, ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਰੱਖੋ""ਸਮਝ ਲਿਆ""ਨਹੀਂ ਧੰਨਵਾਦ""ਸਕ੍ਰੀਨ ਪਿੰਨ ਕੀਤੀ ਗਈ"
diff --git a/packages/SystemUI/res/values-pl/config.xml b/packages/SystemUI/res/values-pl/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-pl/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 51c76a518de46acbaef7d5f29e52c01f776e517c..4be1a0f3aa174a0340336e1f1cc6f667d9a442d1 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -124,6 +124,7 @@
"Szukam Twojej twarzy""Twarz rozpoznana""Potwierdzono"
+ "Aby zakończyć, kliknij Potwierdź""Dotknij czytnika linii papilarnych""Ikona odcisku palca""Szukam Cię…"
@@ -405,7 +406,8 @@
"+%d""Poniżej widać mniej pilne powiadomienia""Kliknij ponownie, by otworzyć"
- "Przesuń w górę, by odblokować"
+ "Przesuń w górę, by otworzyć"
+ "Przesuń w górę, by spróbować ponownie""Tym urządzeniem zarządza Twoja organizacja""Tym urządzeniem zarządza %s""Aby włączyć telefon, przesuń palcem od ikony"
@@ -463,10 +465,10 @@
"Podczas nagrywania lub przesyłania usługa udostępniająca tę funkcję może rejestrować wszelkie informacje poufne wyświetlane na ekranie lub odtwarzane na urządzeniu takie jak dźwięki czy podawane hasła, informacje o płatnościach, zdjęcia i wiadomości.""Ujawnianie poufnych informacji podczas przesyłania/nagrywania""Nie pokazuj ponownie"
- "Ukryj wszystkie"
+ "Usuń wszystkie""Zarządzaj"
- "Powiadomienia ciche"
- "Wyczyść wszystkie ciche powiadomienia"
+ "Ciche powiadomienia"
+ "Usuń wszystkie ciche powiadomienia""Powiadomienia wstrzymane przez tryb Nie przeszkadzać""Rozpocznij teraz""Brak powiadomień"
@@ -551,6 +553,7 @@
"Ekran będzie widoczny, dopóki go nie odepniesz. Aby to zrobić, naciśnij i przytrzymaj Ekran główny.""Aby odpiąć ten ekran, naciśnij i przytrzymaj przyciski Wstecz oraz Przegląd""Aby odpiąć ten ekran, naciśnij i przytrzymaj przyciski Wstecz oraz Ekran główny"
+ "Aby odpiąć ten ekran, przesuń w górę i przytrzymaj""OK""Nie, dziękuję""Ekran przypięty"
diff --git a/packages/SystemUI/res/values-pt-rBR/config.xml b/packages/SystemUI/res/values-pt-rBR/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-pt-rBR/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 2e74881ff8472395c3efd32b960068f240d86d63..543571e89d3e44f827ad96f27f1a8c88941354fa 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -124,6 +124,7 @@
"Procurando seu rosto""Rosto autenticado""Confirmada"
+ "Toque em \"Confirmar\" para concluir""Toque no sensor de impressão digital""Ícone de impressão digital""Procurando você…"
@@ -399,7 +400,8 @@
"+%d""Notificações menos urgentes abaixo""Toque novamente para abrir"
- "Deslize para cima para desbloquear"
+ "Deslize para cima para abrir"
+ "Deslize para cima para tentar novamente""Este dispositivo é gerenciado pela sua organização""Este dispositivo é gerenciado por %s""Deslize a partir do ícone do telefone"
@@ -542,7 +544,8 @@
"Ela é mantida à vista até que seja liberada. Toque em Visão geral e mantenha essa opção pressionada para liberar.""Ela é mantida à vista até que seja liberada. Toque em Início e mantenha essa opção pressionada para liberar.""Para liberar esta tela, mantenha os botões Voltar e Visão geral pressionados"
- "Para liberar essa tela, toque nos botões Voltar e Início e mantenha-os pressionados"
+ "Para liberar esta tela, mantenha os botões Voltar e Início pressionados"
+ "Para liberar esta tela, deslize para cima e pressione""Entendi""Não, obrigado""Tela fixada"
diff --git a/packages/SystemUI/res/values-pt-rPT/config.xml b/packages/SystemUI/res/values-pt-rPT/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-pt-rPT/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index f6ee81ec932a27f84df94e5e7879b50f7745f7a7..14aaca293c040ae8d7c1ea52866185e6bccd33be 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -68,7 +68,7 @@
"Saiba mais""Zoom para preencher o ecrã""Esticar p. caber em ec. int."
- "Captura de ecrã"
+ "Capt. ecrã""A guardar captura de ecrã...""A guardar captura de ecrã...""Captura de ecrã guardada"
@@ -124,6 +124,7 @@
"A procurar o seu rosto…""Rosto autenticado""Confirmado"
+ "Toque em Confirmar para concluir.""Toque no sensor de impressões digitais.""Ícone de impressão digital""À sua procura…"
@@ -399,7 +400,8 @@
"+%d""Notificações menos urgentes abaixo""Toque novamente para abrir"
- "Deslizar rapidamente com o dedo para cima para desbloquear"
+ "Deslize rapidamente para cima para abrir"
+ "Deslize rapidamente para cima para tentar novamente.""Este dispositivo é gerido pela sua entidade""Este dispositivo é gerido por %s""Deslize rapid. a partir do ícone para aceder ao telemóvel"
@@ -543,6 +545,7 @@
"Esta opção mantém o item visível até o soltar. Toque sem soltar em Página inicial para soltar.""Para soltar este ecrã, toque sem soltar nos botões Anterior e Vista geral.""Para soltar este ecrã, toque sem soltar nos botões Anterior e Página inicial."
+ "Para soltar este ecrã, deslize rapidamente para cima sem soltar.""Compreendi""Não, obrigado""Ecrã fixo"
diff --git a/packages/SystemUI/res/values-pt/config.xml b/packages/SystemUI/res/values-pt/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-pt/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 2e74881ff8472395c3efd32b960068f240d86d63..543571e89d3e44f827ad96f27f1a8c88941354fa 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -124,6 +124,7 @@
"Procurando seu rosto""Rosto autenticado""Confirmada"
+ "Toque em \"Confirmar\" para concluir""Toque no sensor de impressão digital""Ícone de impressão digital""Procurando você…"
@@ -399,7 +400,8 @@
"+%d""Notificações menos urgentes abaixo""Toque novamente para abrir"
- "Deslize para cima para desbloquear"
+ "Deslize para cima para abrir"
+ "Deslize para cima para tentar novamente""Este dispositivo é gerenciado pela sua organização""Este dispositivo é gerenciado por %s""Deslize a partir do ícone do telefone"
@@ -542,7 +544,8 @@
"Ela é mantida à vista até que seja liberada. Toque em Visão geral e mantenha essa opção pressionada para liberar.""Ela é mantida à vista até que seja liberada. Toque em Início e mantenha essa opção pressionada para liberar.""Para liberar esta tela, mantenha os botões Voltar e Visão geral pressionados"
- "Para liberar essa tela, toque nos botões Voltar e Início e mantenha-os pressionados"
+ "Para liberar esta tela, mantenha os botões Voltar e Início pressionados"
+ "Para liberar esta tela, deslize para cima e pressione""Entendi""Não, obrigado""Tela fixada"
diff --git a/packages/SystemUI/res/values-ro/config.xml b/packages/SystemUI/res/values-ro/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ro/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 78c8ed2ff6a15e6b39f402cb7c572c0719cc87e1..e897f1645a45dfdea960c49afe462ab9f94121f7 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -124,6 +124,7 @@
"Se caută chipul""Chip autentificat""Confirmat"
+ "Atingeți Confirmați pentru a finaliza""Atingeți senzorul de amprente""Pictograma amprentă""Vă căutăm…"
@@ -401,7 +402,8 @@
"+%d""Notificările mai puțin urgente mai jos""Atingeți din nou pentru a deschide"
- "Glisați în sus pentru a debloca"
+ "Glisați în sus pentru a deschide"
+ "Glisați pentru a încerca din nou""Acest dispozitiv este gestionat de organizația dvs.""Acest dispozitiv este gestionat de %s""Glisați dinspre telefon"
@@ -546,6 +548,7 @@
"Astfel rămâne afișat până anulați fixarea. Atingeți lung opțiunea Acasă pentru a anula fixarea.""Pentru a anula fixarea acestui ecran, atingeți lung butoanele Înapoi și Recente""Pentru a anula fixarea acestui ecran, atingeți lung butoanele Înapoi și Acasă"
+ "Pentru a anula fixarea acestui ecran, glisați în sus și mențineți""Am înțeles""Nu, mulțumesc""Ecran fixat"
diff --git a/packages/SystemUI/res/values-ru/config.xml b/packages/SystemUI/res/values-ru/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ru/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index bcb6837bdb46c540ae1730578a7a236a9d0ed93e..8fec7f60b19a21ecaa38e696bd0a5c36652a5fdf 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -124,6 +124,7 @@
"Распознавание лица""Лицо распознано""Подтверждено"
+ "Нажмите \"Подтвердить\"""Прикоснитесь к сканеру отпечатков пальцев.""Значок отпечатка пальца""Поиск лица…"
@@ -403,7 +404,8 @@
"+%d""Показать менее важные уведомления""Нажмите ещё раз, чтобы открыть"
- "Проведите вверх, чтобы разблокировать"
+ "Проведите вверх, чтобы открыть"
+ "Чтобы повторить попытку, проведите вверх""Этим устройством управляет ваша организация""Этим устройством управляет компания \"%s\"""Телефон: проведите от значка"
@@ -547,8 +549,9 @@
"Экран будет зафиксирован, пока вы не отмените блокировку (для этого нужно провести вверх и удерживать).""Приложение останется активным, пока вы не отмените блокировку, нажав и удерживая кнопку \"Обзор\".""Приложение останется активным, пока вы не отмените блокировку, нажав и удерживая кнопку \"Главный экран\"."
- "Чтобы отменить блокировку, нажмите и удерживайте кнопки \"Назад\" и \"Обзор\""
- "Чтобы отменить блокировку, нажмите и удерживайте кнопки \"Назад\" и \"Главный экран\""
+ "Чтобы открепить экран, нажмите и удерживайте кнопки \"Назад\" и \"Обзор\"."
+ "Чтобы открепить экран, нажмите и удерживайте кнопки \"Назад\" и \"Главный экран\"."
+ "Чтобы открепить этот экран, проведите по нему вверх и задержите руку в крайнем положении.""ОК""Нет, спасибо""Блокировка включена"
diff --git a/packages/SystemUI/res/values-si/config.xml b/packages/SystemUI/res/values-si/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-si/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 7bfa250f80d0c5ebb71a6fd5a91c71def39ac27d..2c54218778b979572b0a6392cbf896b6b8f379dc 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -124,6 +124,7 @@
"ඔබේ මුහුණ සොයනු ලැබේ""මුහුණ සත්යාපන කළා""තහවුරු කළා"
+ "සම්පූර්ණ කිරීමට තහවුරු කරන්න තට්ටු කර.""ඇඟිලි සලකුණු සංවේදකය ස්පර්ශ කරන්න""ඇඟිලි සලකුණු නිරූපකය""ඔබව සොයමින්…"
@@ -399,7 +400,8 @@
"+%d""හදිසිය අඩු දැනුම් දීම් පහත""විවෘත කිරීමට නැවත තට්ටු කරන්න"
- "අගුළු ඇරීමට ස්වයිප් කරන්න."
+ "විවෘත කිරීමට ස්වයිප් කරන්න"
+ "නැවත උත්සාහ කිරීමට ඉහළට ස්වයිප් කරන්න""මෙම උපාංගය ඔබගේ සංවිධානය විසින් කළමනාකරණය කරනු ලැබේ""මෙම උපාංගය %s මගින් කළමනාකරණය කෙරේ""දුරකථනය සඳහා නිරූපකය වෙතින් ස්වයිප් කරන්න"
@@ -543,6 +545,7 @@
"මෙය ඔබ ගලවන තෙක් එය දසුන තුළ තබයි. ගැලවීමට මුල් පිටුව ස්පර්ශ කර අල්ලාගෙන සිටින්න.""මෙම තිර ඇමුණුම ගැලවීමට, දළ විශ්ලේෂණය බොත්තම් ස්පර්ශ කර අල්ලා ගෙන සිටින්න""මෙම තිරය ඇමුණුම ගැලවීමට, මුල් පිටුව බොත්තම් ස්පර්ශ කර අල්ලා ගෙන සිටින්න"
+ "මෙම තිරය ගැලවීමට, ඉහළට ස්වයිප් කර අල්ලාගෙන සිටින්න""හරි, තේරුණා""එපා ස්තූතියි""තිරය අමුණා ඇත"
diff --git a/packages/SystemUI/res/values-sk/config.xml b/packages/SystemUI/res/values-sk/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sk/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index cff792cb93167d734dbe9714be5ae07cae045c23..a6a41e16e1d0b0514174d0817fb96d66b1251651 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -124,6 +124,7 @@
"Hľadá sa vaša tvár""Tvár bola overená""Potvrdené"
+ "Overenie dokončíte klepnutím na Potvrdiť""Dotknite sa senzora odtlačkov prstov""Ikona odtlačku prsta""Hľadáme vás…"
@@ -403,7 +404,8 @@
"+%d""Menej naliehavé upozornenia sa nachádzajú nižšie""Upozornenie otvoríte opätovným klepnutím"
- "Odomknete prejdením prstom nahor"
+ "Otvorte potiahnutím prstom nahor"
+ "Potiahnutím nahor to skúste znova""Toto zariadenie spravuje vaša organizácia""Toto zariadenie spravuje organizácia %s""Telefón otvoríte prejdením prstom od ikony"
@@ -549,6 +551,7 @@
"Obsah bude pripnutý v zobrazení, dokým ho neuvoľníte. Uvoľníte ho pridržaním tlačidla Domov.""Ak chcete odopnúť túto obrazovku, pridržte tlačidlá Späť a Prehľad""Ak chcete odopnúť túto obrazovku, pridržte tlačidlá Späť a Prehľad"
+ "Túto obrazovku odopnete potiahnutím prsta nahor a pridržaním""Dobre""Nie, vďaka""Obrazovka bola pripnutá"
diff --git a/packages/SystemUI/res/values-sl/config.xml b/packages/SystemUI/res/values-sl/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sl/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index dd3b1c544188649a066c995175f429060ea4a1ce..63358babeb13437525cbf338b9b5caabc980b702 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -124,6 +124,7 @@
"Iskanje obraza""Pristnost obraza je potrjena""Potrjeno"
+ "Za dokončanje se dotaknite »Potrdite«""Dotaknite se tipala prstnih odtisov""Ikona prstnih odtisov""Preverjanje vašega obraza …"
@@ -403,7 +404,8 @@
"+%d""Manj nujna obvestila spodaj""Znova se dotaknite, da odprete"
- "Povlecite, da odklenete"
+ "Povlecite navzgor, da odprete"
+ "Povlecite navzgor za vnovičen poskus""To napravo upravlja vaša organizacija""To napravo upravlja %s""Povlecite z ikone za telefon"
@@ -549,6 +551,7 @@
"S tem ostane zaslon viden, dokler ga ne odpnete. Če ga želite odpeti, pridržite gumb za začetni zaslon.""Če želite odpeti ta zaslon, hkrati pridržite gumba za nazaj in za pregled.""Če želite odpeti ta zaslon, hkrati pridržite gumba za nazaj in za začetni zaslon."
+ "Če želite odpeti ta zaslon, povlecite navzgor in pridržite""Razumem""Ne, hvala""Zaslon je pripet"
diff --git a/packages/SystemUI/res/values-sq/config.xml b/packages/SystemUI/res/values-sq/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sq/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 7e97a3decf3296d1f75b65c32e25b3a9acadaeef..388e1ed4e06022a240fd96a39df77493fe4df451 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -96,7 +96,7 @@
"Opsionet e transferimit të dosjeve të USB-së""Lidh si një lexues \"media\" (MTP)""Montoje si kamerë (PTP)"
- "Instalo apl. \"Transferimi i skedarëve\" për \"Mac\""
+ "Instalo \"Transferimi i skedarëve të Android\" për Mac""Prapa""Faqja bazë""Menyja"
@@ -124,6 +124,7 @@
"Po kërkon për fytyrën tënde""Fytyra u vërtetua""Konfirmuar"
+ "Trokit \"Konfirmo\" për ta përfunduar""Prek sensorin e gjurmës së gishtit""Ikona e gjurmës së gishtit""Po të kërkojmë…"
@@ -297,7 +298,7 @@
"\"Kutia e ëmbëlsirës\"""Mbrojtësi i ekranit""Eternet"
- "Trokit dhe mbaj prekur ikonat për më shumë opsione"
+ "Trokit dhe mbaj të shtypur ikonat për më shumë opsione""Mos shqetëso""Vetëm me prioritet""Vetëm alarmet"
@@ -399,7 +400,8 @@
"+%d""Njoftimet më pak urgjente, më poshtë!""Trokit përsëri për ta hapur"
- "Rrëshqit për të shkyçur"
+ "Rrëshqit lart për ta hapur"
+ "Rrëshqit lart për të provuar përsëri""Kjo pajisje menaxhohet nga organizata jote""Kjo pajisje menaxhohet nga %s""Rrëshqit për të hapur telefonin"
@@ -543,7 +545,8 @@
"Kjo e ruan në pamje deri sa ta heqësh nga gozhdimi. Prek dhe mbaj të shtypur \"Kreu\" për ta hequr nga gozhdimi.""Për të hequr gozhdimin e këtij ekrani, prek dhe mbaj butonat \"Prapa\" dhe \"Përmbledhja\".""Për të hequr gozhdimin e këtij ekrani, prek dhe mbaj butonat \"Prapa\" dhe \"Kreu\"."
- "E kuptova!"
+ "Për të hequr gozhdimin e këtij ekrani, rrëshqit shpejt lart dhe mbaje të shtypur"
+ "E kuptova""Jo, faleminderit!""Ekrani u gozhdua""Ekrani u hoq nga gozhdimi"
@@ -613,7 +616,7 @@
"Të hiqet Sintonizuesi i Sistemit të Ndërfaqes së Përdoruesit nga Cilësimet dhe të ndërpritet përdorimi i të gjitha funksioneve të tij?""Aplikacioni nuk është instaluar në pajisjen tënde.""Trego sekondat e orës"
- "Trego sekondat e orës në shiritin e statusit. Mund të ndikojë te jeta e baterisë."
+ "Trego sekondat e orës në shiritin e statusit. Mund të ndikojë te kohëzgjatja e baterisë.""Risistemo Cilësimet e shpejta""Shfaq ndriçimin te Cilësimet e shpejta""Eksperimentale"
diff --git a/packages/SystemUI/res/values-sr/config.xml b/packages/SystemUI/res/values-sr/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sr/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index fe9109150050f186745d87c71b2f3a0e6dd9677f..4d289dc2b42827688f1584eb3ebd8cf615bcd847 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -124,6 +124,7 @@
"Тражи се ваше лице""Лице је потврђено""Потврђено"
+ "Додирните Потврди да бисте завршили""Додирните сензор за отисак прста""Икона отиска прста""Тражимо вас…"
@@ -401,7 +402,8 @@
"+%d""Мање хитна обавештења су у наставку""Додирните поново да бисте отворили"
- "Превуците нагоре да бисте откључали"
+ "Превуците нагоре да бисте отворили"
+ "Превуците нагоре да бисте пробали поново""Овим уређајем управља организација""Овим уређајем управља %s""Превуците од иконе за телефон"
@@ -546,6 +548,7 @@
"На овај начин се ово стално приказује док га не откачите. Додирните и задржите Почетна да бисте га откачили.""Да бисте откачили овај екран, додирните и задржите дугмад Назад и Преглед""Да бисте откачили овај екран, додирните и задржите дугмад Назад и Почетна"
+ "Да бисте откачили овај екран, превуците нагоре и задржите""Важи""Не, хвала""Екран је закачен"
diff --git a/packages/SystemUI/res/values-sv/config.xml b/packages/SystemUI/res/values-sv/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sv/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index b848c6c0bc81f80fa7dc9dc5576873528d8e4f2e..b891b93822689b8c968cbde768456bc9ebd4894c 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -124,6 +124,7 @@
"Söker efter ditt ansikte""Ansiktet har autentiserats""Bekräftat"
+ "Slutför genom att trycka på Bekräfta""Tryck på fingeravtryckssensorn""Ikon för fingeravtryck""Håller utkik efter dig …"
@@ -399,7 +400,8 @@
"+%d""Mindre brådskande aviseringar nedan""Tryck igen för att öppna"
- "Svep uppåt för att låsa upp"
+ "Öppna genom att svepa uppåt"
+ "Svep uppåt om du vill försöka igen""Den här enheten hanteras av organisationen""Den här enheten hanteras av %s""Svep från ikonen och öppna telefonen"
@@ -543,6 +545,7 @@
"Skärmen visas tills du lossar den. Tryck länge på Startsida om du vill lossa skärmen.""Om du vill lossa skärmen trycker du länge på knapparna Tillbaka och Översikt""Om du vill lossa skärmen trycker du länge på knapparna Tillbaka och Startsida"
+ "Svep uppåt och håll kvar fingret om du vill lossa skärmen""OK""Nej tack""Skärmen är fäst"
diff --git a/packages/SystemUI/res/values-sw/config.xml b/packages/SystemUI/res/values-sw/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-sw/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 328b6eaaf46a3bcf0f8a6f7579f1ccc2238914fa..b37405aa19eb98f9efe264f0e9554f772ca7db06 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -124,6 +124,7 @@
"Inatafuta uso wako""Uso umethibitishwa""Imethibitishwa"
+ "Gusa Thibitisha ili ukamilishe""Gusa kitambua alama ya kidole""Aikoni ya alama ya kidole""Inakutafuta…"
@@ -399,7 +400,8 @@
"%d+""Arifa zisizo za dharura sana ziko hapo chini""Gusa tena ili ufungue"
- "Telezesha kidole ili ufungue"
+ "Telezesha kidole juu ili ufungue"
+ "Telezesha kidole juu ili ujaribu tena""Kifaa hiki kinasimamiwa na shirika lako""Kifaa hiki kinadhibitiwa na %s""Telezesha kidole kutoka kwa aikoni ili ufikie simu"
@@ -415,7 +417,7 @@
"%2$s • Inachaji bila kutumia waya (imebakisha %1$s ili ijae)""%2$s • Inachaji (Imebakisha %1$s ili ijae)""%2$s • Inachaji kwa kasi (Imebakisha %1$s ili ijae)"
- "%2$s • Inachaji pole pole (Imebakisha %1$s ili ijae)"
+ "%2$s • Inachaji pole pole (Imebakisha %1$s ijae)""Badili mtumiaji""Badili mtumiaji, mtumiaji wa sasa %s""Mtumiaji wa sasa %s"
@@ -543,6 +545,7 @@
"Hali hii huifanya ionekane hadi utakapoibandua. Gusa na ushikilie kitufe cha Mwanzo ili ubandue.""Ili ubandue skrini hii, gusa na ushikilie kitufe cha Nyuma na Muhtasari""Ili ubandue skrini hii, gusa na ushikilie vitufe vya Nyuma na Mwanzo"
+ "Ili ubandue skrini hii, telezesha kidole juu na ushikilie""Nimeelewa""Hapana, asante""Skrini imebandikwa"
diff --git a/packages/SystemUI/res/values-ta/config.xml b/packages/SystemUI/res/values-ta/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ta/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index fbf851e9895dfd599946ff79ddeb9ef4f8f17e1b..27cd17aa56da2d6bea87b355ed3f85e474f92f25 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -124,6 +124,7 @@
"உங்கள் முகத்தை அங்கீகரிக்கிறது""முகம் அங்கீகரிக்கப்பட்டது""உறுதிப்படுத்தப்பட்டது"
+ "முடிக்க \'உறுதிப்படுத்து\' என்பதை தட்டவும்""கைரேகை சென்சாரைத் தொடவும்""கைரேகை ஐகான்""உங்கள் முகத்தைத் தேடுகிறது…"
@@ -399,7 +400,8 @@
"+%d""அவசர நிலைக் குறைவான அறிவிப்புகள் கீழே உள்ளன""திறக்க, மீண்டும் தட்டவும்"
- "திறக்க, மேலே ஸ்வைப் செய்யவும்"
+ "திறப்பதற்கு மேல் நோக்கி ஸ்வைப் செய்யவும்"
+ "மீண்டும் முயல மேல்நோக்கி ஸ்வைப் செய்யவும்""இந்தச் சாதனத்தை உங்கள் நிறுவனம் நிர்வகிக்கிறது""இந்தச் சாதனத்தை நிர்வகிப்பது: %s""ஃபோனிற்கு ஐகானிலிருந்து ஸ்வைப் செய்யவும்"
@@ -495,29 +497,29 @@
"உங்கள் நிறுவனம், பணிக் கணக்கில் சான்றிதழ் அங்கீகாரத்தை நிறுவியுள்ளது. உங்களின் பாதுகாப்பான நெட்வொர்க் ட்ராஃபிக் கண்காணிக்கப்படலாம் அல்லது மாற்றப்படலாம்.""இந்தச் சாதனத்தில் சான்றிதழ் அங்கீகாரம் நிறுவப்பட்டுள்ளது. உங்களின் பாதுகாப்பான நெட்வொர்க் ட்ராஃபிக் கண்காணிக்கப்படலாம் அல்லது மாற்றப்படலாம்.""உங்கள் நிர்வாகி, நெட்வொர்க் பதிவெடுத்தலை இயக்கியுள்ளார். இது சாதனத்தில் ட்ராஃபிக்கைக் கண்காணிக்கும்."
- "மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
- "மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s மற்றும் %2$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
- "மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் உங்கள் பணிக் கணக்கு இணைக்கப்பட்டுள்ளது."
- "மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் உங்களின் தனிப்பட்ட சுயவிவரம் இணைக்கப்பட்டுள்ளது."
+ "மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
+ "மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s மற்றும் %2$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
+ "மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் உங்கள் பணிக் கணக்கு இணைக்கப்பட்டுள்ளது."
+ "மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் உங்களின் தனிப்பட்ட சுயவிவரம் இணைக்கப்பட்டுள்ளது.""உங்கள் சாதனத்தை நிர்வகிப்பது: %1$s.""உங்கள் சாதனத்தை நிர்வகிக்க, %2$s ஆப்ஸை %1$s பயன்படுத்தும்.""உங்கள் நிர்வாகியால் அமைப்புகள், நிறுவன அணுகல், ஆப்ஸ், சாதனத்துடன் தொடர்புடைய டேட்டா, சாதன இருப்பிடத் தகவல் ஆகியவற்றைக் கண்காணிக்கவும் நிர்வகிக்கவும் முடியும்."" ""மேலும் அறிக"
- "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்தப் பயன்பாட்டால் மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."
+ "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்த ஆப்ஸால் மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."" ""VPN அமைப்புகளைத் திற"" ""நம்பகமான அனுமதிச் சான்றுகளைத் திற""உங்கள் நிர்வாகி நெட்வொர்க் பதிவெடுத்தலை இயக்கியுள்ளார், இது சாதனத்தில் ட்ராஃபிக்கைக் கண்காணிக்கும்.\n\nமேலும் தகவலுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்."
- "VPN இணைப்பை அமைக்க, பயன்பாட்டிற்கு அனுமதி வழங்கியுள்ளீர்கள்.\n\nஇந்தப் பயன்பாட்டால் மின்னஞ்சல்கள், பயன்பாடுகள் மற்றும் இணையதளங்கள் உட்பட, உங்கள் சாதனத்தையும் நெட்வொர்க் செயல்பாட்டையும் கண்காணிக்க முடியும்."
- "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது.\n\nஉங்கள் நிர்வாகியால் பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்.\n\nமேலும் தகவலுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.\n\nஉங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய VPN உடனும் இணைக்கப்பட்டுள்ளீர்கள்."
+ "VPN இணைப்பை அமைக்க, பயன்பாட்டிற்கு அனுமதி வழங்கியுள்ளீர்கள்.\n\nஇந்த ஆப்ஸால் மின்னஞ்சல்கள், ஆப்ஸ் மற்றும் இணையதளங்கள் உட்பட, உங்கள் சாதனத்தையும் நெட்வொர்க் செயல்பாட்டையும் கண்காணிக்க முடியும்."
+ "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது.\n\nஉங்கள் நிர்வாகியால் ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்.\n\nமேலும் தகவலுக்கு, உங்கள் நிர்வாகியைத் தொடர்புகொள்ளவும்.\n\nஉங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய VPN உடனும் இணைக்கப்பட்டுள்ளீர்கள்.""VPN"
- "மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
- "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்தப் பயன்பாட்டால், மின்னஞ்சல்கள், பயன்பாடுகள் மற்றும் இணையதளங்கள் உட்பட உங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."
- "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்தப் பயன்பாட்டால் மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."
- "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %2$s உடன் அது இணைக்கப்பட்டுள்ளது.\n\nமேலும் தகவலுக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."
- "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது. மின்னஞ்சல்கள், பயன்பாடுகள், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %2$s உடன் அது இணைக்கப்பட்டுள்ளது.\n\nஉங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %3$s உடனும் இணைக்கப்பட்டுள்ளீர்கள்."
+ "மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %1$s உடன் இணைக்கப்பட்டுள்ளீர்கள்."
+ "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்த ஆப்ஸால், மின்னஞ்சல்கள், ஆப்ஸ் மற்றும் இணையதளங்கள் உட்பட உங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."
+ "%1$s உடன் இணைக்கப்பட்டுள்ளீர்கள். இந்த ஆப்ஸால் மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்க முடியும்."
+ "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது. மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %2$s உடன் அது இணைக்கப்பட்டுள்ளது.\n\nமேலும் தகவலுக்கு, நிர்வாகியைத் தொடர்புகொள்ளவும்."
+ "உங்கள் பணிக் கணக்கை %1$s நிர்வகிக்கிறது. மின்னஞ்சல்கள், ஆப்ஸ், இணையதளங்கள் உட்பட உங்கள் பணி நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %2$s உடன் அது இணைக்கப்பட்டுள்ளது.\n\nஉங்கள் தனிப்பட்ட நெட்வொர்க் செயல்பாட்டைக் கண்காணிக்கக்கூடிய %3$s உடனும் இணைக்கப்பட்டுள்ளீர்கள்.""TrustAgent இதைத் திறந்தே வைத்துள்ளது""நீங்கள் கைமுறையாகத் திறக்கும் வரை, சாதனம் பூட்டப்பட்டிருக்கும்""விரைவாக அறிவிப்புகளைப் பெறுதல்"
@@ -543,6 +545,7 @@
"இதற்கான பின்னை அகற்றும் வரை, இந்தப் பயன்முறை செயல்பாட்டிலேயே இருக்கும். அகற்றுவதற்கு, முகப்புப் பொத்தானைத் தொட்டுப் பிடிக்கவும்.""இந்தத் திரையின் பின்னை அகற்ற, முந்தையது மற்றும் மேலோட்டப் பார்வைப் பொத்தான்களைத் தொட்டுப் பிடிக்கவும்""இந்தத் திரையின் பின்னை அகற்ற, முந்தையது மற்றும் முகப்புப் பொத்தான்களைத் தொட்டுப் பிடிக்கவும்"
+ "இந்தத் திரையை அகற்ற மேல்நோக்கி ஸ்வைப் செய்தவாறு பிடித்திருக்கவும்""புரிந்தது""வேண்டாம்""திரை பின் செய்யப்பட்டது"
@@ -760,7 +763,7 @@
"ஏதுமில்லை"
- "இயல்பானது"
+ "சராசரி""சுருக்கமானது""இடப்புறம் சாய்ந்தது""வலப்புறம் சாய்ந்தது"
@@ -842,7 +845,7 @@
"முந்தையதற்குச் செல்""வெப்பத்தினால் ஃபோன் ஆஃப் செய்யப்பட்டது""இப்போது உங்கள் ஃபோன் இயல்புநிலையில் இயங்குகிறது"
- "உங்கள் ஃபோன் அதிகமாகச் சூடானதால், அதன் சூட்டைக் குறைக்க, ஆஃப் செய்யப்பட்டது. இப்போது உங்கள் ஃபோன் இயல்புநிலையில் இயங்குகிறது.\n\nபின்வருவனவற்றைச் செய்தால், ஃபோன் சூடாகலாம்:\n • அதிகளவு தரவைப் பயன்படுத்தும் பயன்பாடுகளை (எ.கா: கேமிங், வீடியோ (அ) வழிகாட்டுதல் பயன்பாடுகள்) பயன்படுத்துவது\n • பெரிய கோப்புகளைப் பதிவிறக்குவது/பதிவேற்றுவது\n • அதிக வெப்பநிலையில் ஃபோனைப் பயன்படுத்துவது"
+ "உங்கள் ஃபோன் அதிகமாகச் சூடானதால், அதன் சூட்டைக் குறைக்க, ஆஃப் செய்யப்பட்டது. இப்போது உங்கள் ஃபோன் இயல்புநிலையில் இயங்குகிறது.\n\nபின்வருவனவற்றைச் செய்தால், ஃபோன் சூடாகலாம்:\n • அதிகளவு தரவைப் பயன்படுத்தும் ஆப்ஸை (எ.கா: கேமிங், வீடியோ (அ) வழிகாட்டுதல் ஆப்ஸ்) பயன்படுத்துவது\n • பெரிய கோப்புகளைப் பதிவிறக்குவது/பதிவேற்றுவது\n • அதிக வெப்பநிலையில் ஃபோனைப் பயன்படுத்துவது""மொபைல் சூடாகிறது""மொபைலின் வெப்ப அளவு குறையும் போது, சில அம்சங்களைப் பயன்படுத்த முடியாது""உங்கள் மொபைலின் வெப்ப அளவு தானாகவே குறையும். தொடர்ந்து நீங்கள் மொபைலைப் பயன்படுத்தலாம், ஆனால் அதன் வேகம் குறைவாக இருக்கக்கூடும்.\n\nமொபைலின் வெப்ப அளவு குறைந்தவுடன், அது இயல்பு நிலையில் இயங்கும்."
@@ -887,7 +890,7 @@
"%s வரை""வைத்திரு""மாற்று"
- "பின்னணியில் இயங்கும் பயன்பாடுகள்"
+ "பின்னணியில் இயங்கும் ஆப்ஸ்""பேட்டரி மற்றும் டேட்டா உபயோக விவரங்களைக் காண, தட்டவும்""மொபைல் டேட்டாவை ஆஃப் செய்யவா?""%s மூலம் டேட்டா அல்லது இணையத்தை உங்களால் பயன்படுத்த முடியாது. வைஃபை வழியாக மட்டுமே இணையத்தைப் பயன்படுத்த முடியும்."
diff --git a/packages/SystemUI/res/values-te/config.xml b/packages/SystemUI/res/values-te/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-te/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 0b92b7822cac4975eb83fcbb28f6cb0edba731f6..350ccc6e27879c009780a821de6aebd4251ed3ad 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -124,6 +124,7 @@
"మీ ముఖాన్ని క్యాప్చర్ చేస్తోంది""ముఖం ప్రామాణీకరించబడింది""నిర్ధారించబడింది"
+ "పూర్తి చేయడానికి \"నిర్ధారించు\" నొక్కండి""వేలిముద్ర సెన్సార్ను తాకండి""వేలిముద్ర చిహ్నం""మీ కోసం చూస్తోంది…"
@@ -399,7 +400,8 @@
"+%d""తక్కువ అత్యవసర నోటిఫికేషన్లు దిగువన""తెరవడానికి మళ్లీ నొక్కండి"
- "అన్లాక్ చేయడానికి ఎగువకు స్వైప్ చేయండి"
+ "తెరవడానికి, పైకి స్వైప్ చేయండి"
+ "మళ్ళీ ప్రయత్నించడానికి పైకి స్వైప్ చేయండి""ఈ పరికరాన్ని మీ సంస్థ నిర్వహిస్తోంది""ఈ పరికరం %s నిర్వహణలో ఉంది""ఫోన్ కోసం చిహ్నాన్ని స్వైప్ చేయండి"
@@ -543,6 +545,7 @@
"దీని వలన మీరు అన్పిన్ చేసే వరకు ఇది వీక్షణలో ఉంచబడుతుంది. అన్పిన్ చేయడానికి హోమ్ని తాకి & అలాగే పట్టుకోండి.""ఈ స్క్రీన్ను అన్పిన్ చేయడానికి, వెనుకకు మరియు అవలోకనం బటన్లను తాకి & అలాగే పట్టుకోండి""ఈ స్క్రీన్ను అన్పిన్ చేయడానికి, వెనుకకు మరియు హోమ్ బటన్లను తాకి & అలాగే పట్టుకోండి"
+ "ఈ స్క్రీన్ను అన్పిన్ చేయడానికి, పైకి స్వైప్ చేసి & అలాగే పట్టుకోండి""అర్థమైంది""వద్దు, ధన్యవాదాలు""స్క్రీన్ పిన్ చేయబడింది"
diff --git a/packages/SystemUI/res/values-th/config.xml b/packages/SystemUI/res/values-th/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-th/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index fcaf280c0495e94177a8532f31a9c900feaaa88b..9d39859c27a029c409b156c10b440cd7a23b6c91 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -124,6 +124,7 @@
"กำลังมองหาใบหน้าของคุณ""ตรวจสอบสิทธิ์ใบหน้าแล้ว""ยืนยันแล้ว"
+ "แตะยืนยันเพื่อดำเนินการให้เสร็จสมบูรณ์""แตะเซ็นเซอร์ลายนิ้วมือ""ไอคอนลายนิ้วมือ""กำลังหาใบหน้าคุณ…"
@@ -399,7 +400,8 @@
"+%d""การแจ้งเตือนที่เร่งด่วนน้อยด้านล่าง""แตะอีกครั้งเพื่อเปิด"
- "เลื่อนเพื่อปลดล็อก"
+ "เลื่อนขึ้นเพื่อเปิด"
+ "เลื่อนขึ้นเพื่อลองอีกครั้ง""อุปกรณ์นี้จัดการโดยองค์กรของคุณ""อุปกรณ์เครื่องนี้จัดการโดย %s""เลื่อนไอคอนโทรศัพท์"
@@ -543,6 +545,7 @@
"การดำเนินการนี้จะแสดงหน้าจอนี้ไว้เสมอจนกว่าคุณจะเลิกตรึง แตะ \"หน้าแรก\" ค้างไว้เพื่อเลิกตรึง""หากต้องการเลิกตรึงหน้าจอนี้ ให้แตะปุ่ม \"กลับ\" และ \"ภาพรวม\" ค้างไว้""หากต้องการเลิกตรึงหน้าจอนี้ ให้แตะปุ่ม \"กลับ\" และ \"หน้าแรก\" ค้างไว้"
+ "หากต้องการเลิกตรึงหน้าจอนี้ ให้เลื่อนขึ้นค้างไว้""รับทราบ""ไม่เป็นไร ขอบคุณ""ตรึงหน้าจอแล้ว"
diff --git a/packages/SystemUI/res/values-tl/config.xml b/packages/SystemUI/res/values-tl/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-tl/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index f209a6896f74d346963f79cc51b72011d95b5442..56da2329ab5c0f4d18b1366a61cdb5c309c3195a 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -124,6 +124,7 @@
"Hinahanap ang iyong mukha""Na-authenticate ang mukha""Nakumpirma"
+ "I-tap ang Kumpirmahin para kumpletuhin""Pindutin ang fingerprint sensor""Icon ng fingerprint""Hinahanap ka…"
@@ -399,7 +400,8 @@
"+%d""Nasa ibaba ang mga notification na hindi masyadong mahalaga""I-tap ulit upang buksan"
- "I-swipe pataas upang i-unlock"
+ "Mag-swipe pataas para buksan"
+ "Mag-swipe pataas para subukan ulit""Ang device na ito ay pinamamahalaan ng iyong organisasyon""Pinamamahalaan ng %s ang device na ito""Mag-swipe mula sa icon para sa telepono"
@@ -543,6 +545,7 @@
"Pinapanatili nitong nakikita ito hanggang sa mag-unpin ka. Pindutin nang matagal ang Home upang mag-unpin.""Upang i-unpin ang screen na ito, pindutin nang matagal ang mga button na Bumalik at Overview""Upang i-unpin ang screen na ito, pindutin nang matagal ang mga button na Bumalik at Home"
+ "Para i-unpin ang screen na ito, mag-swipe pataas at pumindot nang matagal""Nakuha ko""Hindi, salamat na lang""Na-pin ang screen"
diff --git a/packages/SystemUI/res/values-tr/config.xml b/packages/SystemUI/res/values-tr/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-tr/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 3e2ccae4c901df9c4e02039e7bfba39da6356324..257b9decaeb2973c22ece452dff5791bcf4f1b6d 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -124,6 +124,7 @@
"Yüzünüz aranıyor""Yüz kimliği doğrulandı""Onaylandı"
+ "Tamamlamak için Onayla\'ya dokunun""Parmak izi sensörüne dokunun""Parmak izi simgesi""Yüzünüz tanınmaya çalışılıyor…"
@@ -399,7 +400,8 @@
"+%d""Daha az acil bildirimler aşağıdadır""Açmak için tekrar dokunun"
- "Kilidi açmak için hızlıca yukarı kaydırın"
+ "Açmak için yukarı kaydırın"
+ "Tekrar denemek için yukarı kaydırın""Bu cihaz kuruluşunuz tarafından yönetiliyor""Bu cihaz %s tarafından yönetilmektedir.""Telefon için, simgeden hızlıca kaydırın"
@@ -543,6 +545,7 @@
"Bu işlem, siz sabitlemeyi kaldırana kadar ekranı görünür durumda tutar. Sabitlemeyi kaldırmak için Ana sayfaya dokunup basılı tutun.""Bu ekranın sabitlemesini kaldırmak için Geri ve Genel Bakış düğmelerine dokunup basılı tutun""Bu ekranın sabitlemesini kaldırmak için Geri ve Ana sayfa düğmelerine dokunup basılı tutun"
+ "Bu ekranın sabitlemesini kaldırmak için hızlıca yukarı kaydırıp tutun""Anladım""Hayır, teşekkürler""Ekran sabitlendi"
diff --git a/packages/SystemUI/res/values-uk/config.xml b/packages/SystemUI/res/values-uk/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-uk/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 28eec2b17ce6194be2332efeab09ab3bcf1a364b..d82acf7de9af621cc9b8da5d543327015e78522c 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -124,6 +124,7 @@
"Триває розпізнавання обличчя""Обличчя автентифіковано""Підтверджено"
+ "Щоб завершити, натисніть \"Підтвердити\"""Торкніться сканера відбитків пальців""Значок відбитка пальця""Пошук обличчя…"
@@ -403,7 +404,8 @@
"+%d""Менше термінових сповіщень нижче""Торкніться знову, щоб відкрити"
- "Проведіть пальцем угору, щоб розблокувати"
+ "Проведіть пальцем угору, щоб відкрити"
+ "Проведіть пальцем угору, щоб повторити спробу""Цим пристроєм керує адміністратор вашої організації""Цим пристроєм керує організація %s""Телефон: проведіть пальцем від значка"
@@ -549,6 +551,7 @@
"Ви бачитимете цей екран, доки не відкріпите його. Для цього натисніть і утримуйте кнопку \"Головний екран\".""Щоб відкріпити цей екран, натисніть і утримуйте кнопки \"Назад\" та \"Огляд\"""Щоб відкріпити цей екран, натисніть і утримуйте кнопки \"Назад\" та \"Головний екран\""
+ "Щоб відкріпити цей екран, проведіть пальцем вгору й утримуйте""Зрозуміло""Ні, дякую""Екран закріплено"
diff --git a/packages/SystemUI/res/values-ur/config.xml b/packages/SystemUI/res/values-ur/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-ur/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 669982e857a0ad131f6a9f36caed3337090f0eeb..7d4f177b6c1c2bfb269813c793f1c442f663a08e 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -124,6 +124,7 @@
"آپ کا چہرہ تلاش کیا جا رہا ہے""چہرے کی تصدیق ہو گئی""تصدیق شدہ"
+ "مکمل کرنے کیلئے \'تصدیق کریں\' تھپتھپائیں""فنگر پرنٹ سینسر پر ٹچ کریں""فنگر پرنٹ آئیکن""آپ کے لیے تلاش کیا جا رہا ہے…"
@@ -399,7 +400,8 @@
"+%d""کم اہم اطلاعات ذیل میں ہیں""کھولنے کیلئے دوبارہ تھپتھپائیں"
- "غیر مقفل کرنے کیلئے اوپر سوائپ کریں"
+ "کھولنے کے لیے اوپر سوائپ کريں"
+ "دوبارہ کوشش کرنے کے لیے اوپر سوائپ کريں""یہ آلہ آپ کی تنظیم کے زیر انتظام ہے""یہ آلہ %s کے زیر انتظام ہے""فون کیلئے آئیکن سے سوائپ کریں"
@@ -543,6 +545,7 @@
"یہ اس کو اس وقت تک مد نظر رکھتا ہے جب تک آپ اس سے پن نہیں ہٹا دیتے۔ پن ہٹانے کیلئے \"ہوم\" بٹن کو ٹچ کریں اور دبائے رکھیں۔""اس اسکرین سے پن ہٹانے کیلئے، \"پیچھے\" اور \"مجموعی جائزہ\" بٹنز کو ٹچ کریں اور دبائے رکھیں""اس اسکرین سے پن ہٹانے کیلئے، \"پیچھے\" اور \"ہوم\" بٹنز کو ٹچ کریں اور دبائے رکھیں"
+ "اس اسکرین سے پن ہٹانے کے لیے، اوپر کی طرف سوائپ کریں: دبائیں رکھیں""سمجھ آ گئی""نہیں شکریہ""اسکرین کو پن کر دیا گیا"
diff --git a/packages/SystemUI/res/values-uz/config.xml b/packages/SystemUI/res/values-uz/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-uz/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index a1b88bddc66a743f4ec79d5c2d78660481a0c38b..9bda6e7aa5b39fde78c0d66beb366c9b626a08f5 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -60,7 +60,7 @@
"Doimo ushbu kompyuterdan ruxsat berilsin""Ruxsat berish""USB orqali nosozliklarni tuzatishga ruxsat berilmagan"
- "Ayni paytda ushbu qurilmaga o‘z hisobi bilan kirgan foydalanuvchi USB orqali nosozliklarni tuzatish funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun asosiy foydalanuvchi profiliga o‘ting."
+ "Ayni paytda ushbu qurilmaga o‘z hisobi bilan kirgan foydalanuvchi USB orqali nosozliklarni aniqlash funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun asosiy foydalanuvchi profiliga o‘ting.""USB port faolsizlashtirildi""Qurilmangizni suyuqlik va turli parchalardan himoya qilish uchun USB port faolsizlashtiriladi va hech qanday aksessuarni aniqlay olmaydi.\n\nUSB portdan xavfsiz foydalanish mumkin boʻlganda, sizga xabar beriladi.""Quvvatlash moslamalari va aksessuarlarni aniqlash uchun USB port yoqildi"
@@ -124,6 +124,7 @@
"Yuz tekshirilmoqda""Yuzingiz aniqlandi""Tasdiqlangan"
+ "Tasdiqlash uchun tegining""Barmoq izi skaneriga tegining""Barmoq izi belgisi""Yuzingiz tekshirilmoqda…"
@@ -399,7 +400,8 @@
"+%d""Kam ahamiyatli bildirishnomalarni pastda ko‘rsatish""Ochish uchun yana bosing"
- "Qulfdan chiqarish uchun tepaga suring"
+ "Ochish uchun tepaga suring"
+ "Qayta urinish uchun tepaga suring""Bu – tashkilotingiz tomonidan boshqariladigan qurilma""Bu – %s tomonidan boshqariladigan qurilma""Telefonni ochish uchun suring"
@@ -457,7 +459,7 @@
"Boshqa ko‘rsatilmasin""Hammasini tozalash""Boshqarish"
- "Ovozsiz bildirishnomalar"
+ "Sokin bildirishnomalar""Barcha tovushsiz bildirishnomalarni tozalash""Bezovta qilinmasin rejimida bildirishnomalar pauza qilingan""Boshlash"
@@ -543,6 +545,7 @@
"Ekran yechib olinmagunicha u mahkamlangan holatda qoladi. Uni yechish uchun Orqaga va Asosiy tugmlarni birga bosib turing.""Bu ekrandan chiqish uchun Orqaga va Menyu tugmalarini bosib turing""Bu ekrandan chiqish uchun Orqaga va Boshi tugmalarini bosib turing"
+ "Bu ekrandan chiqish uchun tepaga surib, bosib turing""OK""Yo‘q, kerakmas""Ekran mahkamlandi"
diff --git a/packages/SystemUI/res/values-vi/config.xml b/packages/SystemUI/res/values-vi/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-vi/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 395af14b6e4037aea28f90fa2d72c264f0733b0c..d3caa2b2c75d0b5f53947d5f7a0df46db11bb428 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -55,11 +55,11 @@
"Xem""Luôn mở %1$s khi kết nối %2$s""Luôn mở %1$s khi kết nối %2$s"
- "Cho phép gỡ lỗi USB?"
+ "Cho phép gỡ lỗi qua USB?""Tệp tham chiếu khóa RSA của máy tính là:\n%1$s""Luôn cho phép từ máy tính này""Cho phép"
- "Tính năng gỡ lỗi USB không được phép"
+ "Không cho phép chế độ gỡ lỗi qua USB""Người dùng hiện đã đăng nhập vào thiết bị này không thể bật tính năng gỡ lỗi USB. Để sử dụng tính năng này, hãy chuyển sang người dùng chính.""Đã tắt cổng USB""Để bảo vệ thiết bị của bạn khỏi chất lỏng hay mảnh vỡ, cổng USB sẽ tắt và không phát hiện được bất kỳ phụ kiện nào.\n\nBạn sẽ nhận được thông báo khi có thể sử dụng lại cổng USB."
@@ -124,6 +124,7 @@
"Đang tìm khuôn mặt của bạn""Đã xác thực khuôn mặt""Ðã xác nhận"
+ "Nhấn vào Xác nhận để hoàn tất""Chạm vào cảm biến vân tay""Biểu tượng vân tay""Đang tìm kiếm bạn…"
@@ -399,7 +400,8 @@
"+%d""Thông báo ít khẩn cấp hơn bên dưới""Nhấn lại để mở"
- "Vuốt lên để mở khóa"
+ "Vuốt lên để mở"
+ "Vuốt lên để thử lại""Thiết bị này do tổ chức của bạn quản lý""Thiết bị này được %s quản lý""Vuốt từ biểu tượng để mở điện thoại"
@@ -543,6 +545,7 @@
"Thao tác này sẽ duy trì hiển thị màn hình cho đến khi bạn bỏ ghim. Hãy chạm và giữ nút Màn hình chính để bỏ ghim.""Để bỏ ghim màn hình này, hãy chạm và giữ nút Quay lại và nút Tổng quan""Để bỏ ghim màn hình này, hãy chạm và giữ nút Quay lại và nút Màn hình chính"
+ "Để bỏ ghim màn hình này, hãy vuốt lên và giữ""Ok""Không, cảm ơn""Đã ghim màn hình"
@@ -740,7 +743,7 @@
"Pin""Đồng hồ""Tai nghe"
- "Mở cài đặt"
+ "Mở phần cài đặt""Đã kết nối tai nghe""Đã kết nối tai nghe""Trình tiết kiệm dữ liệu"
@@ -816,7 +819,7 @@
"Ứng dụng không hỗ trợ chia đôi màn hình.""Ứng dụng có thể không hoạt động trên màn hình phụ.""Ứng dụng không hỗ trợ khởi chạy trên màn hình phụ."
- "Mở cài đặt."
+ "Mở phần cài đặt.""Mở cài đặt nhanh.""Đóng cài đặt nhanh.""Đã đặt báo thức."
diff --git a/packages/SystemUI/res/values-zh-rCN/config.xml b/packages/SystemUI/res/values-zh-rCN/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-zh-rCN/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 8fdced67d0ef0d8964f2bfe83df5c29d1abb9d55..3bcc87775ea4e8df98491e8eff83b97e433657ab 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -124,6 +124,7 @@
"正在查找您的面孔""面孔身份验证成功""已确认"
+ "点按“确认”即可完成""请触摸指纹传感器""指纹图标""正在查找您的面孔…"
@@ -375,7 +376,7 @@
"在日出时关闭""在%s 开启""直到%s"
- "深色主题背景"
+ "深色主题""深色主题背景\n省电模式""NFC""NFC 已停用"
@@ -399,7 +400,8 @@
"+%d""不太紧急的通知会显示在下方""再次点按即可打开"
- "向上滑动即可解锁"
+ "向上滑动即可打开"
+ "向上滑动即可重试""此设备由您所属单位管理""此设备是由%s托管""滑动图标即可拨打电话"
@@ -543,6 +545,7 @@
"这将会固定显示此屏幕,直到您取消固定为止。触摸并按住“主屏幕”即可取消固定屏幕。""要取消固定此屏幕,请触摸并按住“返回”和“概览”按钮""要取消固定此屏幕,请触摸并按住“返回”和“主屏幕”按钮"
+ "要取消固定此屏幕,请向上滑动并按住""知道了""不用了""已固定屏幕"
diff --git a/packages/SystemUI/res/values-zh-rHK/config.xml b/packages/SystemUI/res/values-zh-rHK/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-zh-rHK/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 189145fef3b1ed07b30c2bb5dc1b9223a4ce6839..f57a072b38546d9ed3c5b3186a2881ab931e8de5 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -124,6 +124,7 @@
"正在尋找您的臉孔""臉孔已經驗證""已確認"
+ "輕按 [確定] 以完成""請輕觸指紋感應器""指紋圖示""正在搜尋您的臉孔…"
@@ -399,7 +400,8 @@
"還有 %d 則通知""不太緊急的通知會在下方顯示""再次輕按即可開啟"
- "向上滑動即可解鎖"
+ "向上滑動即可開啟"
+ "請向上滑動以再試一次""此裝置由您的機構管理""此裝置由%s管理""從圖示滑動即可使用手機功能"
@@ -543,6 +545,7 @@
"畫面將會繼續顯示,直至您取消固定為止。按住主按鈕即可取消固定。""如要取消固定此畫面,請按住 [返回] 按鈕和 [概覽] 按鈕""如要取消固定此畫面,請按住 [返回] 按鈕和主按鈕"
+ "如要取消固定此畫面,請向上滑動然後按住""知道了""不用了,謝謝""已固定畫面"
diff --git a/packages/SystemUI/res/values-zh-rTW/config.xml b/packages/SystemUI/res/values-zh-rTW/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-zh-rTW/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 53a311d9e8c0aa6b6a278b549d0330b364b3eb2d..9773dc49c7441bbe61b895b2eaee8bc04368ae5f 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -69,13 +69,13 @@
"放大為全螢幕""放大為全螢幕""擷取螢幕畫面"
- "正在儲存螢幕擷取畫面…"
- "正在儲存螢幕擷取畫面…"
- "螢幕擷取畫面已儲存"
- "輕觸即可查看螢幕擷取畫面"
- "無法儲存螢幕擷取畫面"
- "請再次嘗試拍攝螢幕擷取畫面"
- "由於儲存空間有限,因此無法儲存螢幕擷取畫面"
+ "正在儲存螢幕截圖…"
+ "正在儲存螢幕截圖…"
+ "螢幕截圖已儲存"
+ "輕觸即可查看螢幕截圖"
+ "無法儲存螢幕截圖"
+ "請再次嘗試拍攝螢幕截圖"
+ "由於儲存空間有限,因此無法儲存螢幕截圖""這個應用程式或貴機構不允許擷取螢幕畫面""錄製螢幕畫面""持續顯示螢幕畫面錄製工作階段通知"
@@ -124,6 +124,7 @@
"正在尋找你的臉孔""臉孔驗證成功""確認完畢"
+ "輕觸 [確認] 完成驗證設定""請輕觸指紋感應器""指紋圖示""正在尋找你的臉孔…"
@@ -263,8 +264,8 @@
"工作模式已開啟。""工作模式已關閉。""工作模式已開啟。"
- "Data Saver 已關閉。"
- "Data Saver 已開啟。"
+ "數據節省模式已關閉。"
+ "數據節省模式已開啟。""已關閉感應器隱私設定。""已開啟感應器隱私設定。""螢幕亮度"
@@ -399,7 +400,8 @@
"還有 %d 則通知""較不緊急的通知會顯示在下方""再次輕觸即可開啟"
- "向上滑動即可解鎖"
+ "向上滑動即可開啟"
+ "向上滑動即可重試""這個裝置是由貴機構所管理""這個裝置是由 %s 所管理""滑動手機圖示即可啟用"
@@ -457,8 +459,8 @@
"不要再顯示""全部清除""管理"
- "無聲通知"
- "清除所有無聲通知"
+ "靜音通知"
+ "清除所有靜音通知""「零打擾」模式已將通知設為暫停""立即開始""沒有通知"
@@ -543,6 +545,7 @@
"這會讓應用程式顯示在螢幕上,直到取消固定為止。按住主螢幕按鈕即可取消固定。""如要取消固定這個螢幕畫面,請按住「返回」按鈕和「總覽」按鈕""如要取消固定這個螢幕畫面,請按住「返回」按鈕和主螢幕按鈕"
+ "如要取消固定畫面,請向上滑動並按住""知道了""不用了,謝謝""已固定螢幕畫面"
@@ -642,7 +645,7 @@
"封鎖""繼續顯示""最小化"
- "無聲"
+ "靜音""繼續顯示通知但不發出音效""快訊""繼續顯示通知"
@@ -744,8 +747,8 @@
"已與耳機連線""已與耳機連線""數據節省模式"
- "Data Saver 已開啟"
- "Data Saver 已關閉"
+ "數據節省模式已開啟"
+ "數據節省模式已關閉""開啟""關閉""導覽列"
@@ -865,7 +868,7 @@
"「%1$s」應用程式""快訊""電池"
- "螢幕擷取畫面"
+ "螢幕截圖""一般訊息""儲存空間""提示"
diff --git a/packages/SystemUI/res/values-zu/config.xml b/packages/SystemUI/res/values-zu/config.xml
deleted file mode 100644
index 5309563e39861aca1ac767b7fee53064fa155041..0000000000000000000000000000000000000000
--- a/packages/SystemUI/res/values-zu/config.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-
-
-
-
-
-
-
-
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index f930b7d4a1b6d65bddecc62ee1ca928d31df8061..2306e4ab23fa8fe884984f5c4232892c2c233032 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -124,6 +124,7 @@
"Ifuna ubuso bakho""Ubuso bufakazelwe ubuqiniso""Kuqinisekisiwe"
+ "Thepha okuthi Qinisekisa ukuze uqedele""Thinta inzwa yesigxivizo somunwe""Isithonjana sezigxivizo zeminwe""Kufunwa wena…"
@@ -399,7 +400,8 @@
"+%d""Izaziso ezingasheshi kakhulu ezingezansi""Thepha futhi ukuze uvule"
- "Swayiphela phezulu ukuze uvule"
+ "Swayiphela phezulu ukuze uvule"
+ "Swayiphela phezulu ukuze uzame futhi""Le divayisi iphethwe inhlangano yakho""Le divayisi iphethwe yi-%s""Swayiphela ifoni kusukela kusithonjana"
@@ -543,6 +545,7 @@
"Lokhu kuyigcina ibukeka uze ususe ukuphina. Thinta uphinde ubambe okuthi Ekhaya ukuze ususe ukuphina.""Ukuze ususe ukuphina lesi sikrini, thinta uphinde ubambe izinkinobho zokubuyela emuva nezokubuka konke""Ukuze ususe ukuphina lesi sikrini, thinta uphinde ubambe izinkinobho nezithi Emuva nethi Ekhaya"
+ "Ukuze ususe ukuphina lesi sikrini, swayiphela phezulu futhi ubambe""Ngiyitholile""Cha ngiyabonga""Isikrini siphiniwe"
diff --git a/packages/SystemUI/res/values/attrs.xml b/packages/SystemUI/res/values/attrs.xml
index f124d89070bfe42172253d118cd4a9ca9b43637c..6becd21984b98eaf997d95ba9bd2fa3e1dab3c55 100644
--- a/packages/SystemUI/res/values/attrs.xml
+++ b/packages/SystemUI/res/values/attrs.xml
@@ -75,14 +75,15 @@
-
+
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index e7a1a660abc27635512918342d3d969028ef6e3a..61816f60d0bafb85a0c82afe48ced74bb92066d6 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -116,6 +116,9 @@
#E5FFFFFF
+ #EBffffff
+ #99000000
+
#30000000
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index dba3dd76b02165fda3f28a492ecc00f9be153d07..35f2d04f4449d83fd2ee810f9e77290b4a9c8f79 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -40,8 +40,8 @@
false
-
- false
+
+ 10000
@@ -141,6 +141,9 @@
5000
+
+ 3000
+
60000
@@ -151,15 +154,8 @@
700
-
- 10000
-
-
- 2000
-
- 6000
+ 10000
@@ -200,25 +196,6 @@
2000
-
- false
-
-
-
-
@@ -296,7 +273,6 @@
- com.android.systemui.Dependency$DependencyCreatorcom.android.systemui.util.NotificationChannelscom.android.systemui.statusbar.CommandQueue$CommandQueueStartcom.android.systemui.keyguard.KeyguardViewMediator
@@ -327,7 +303,6 @@
- com.android.systemui.Dependency$DependencyCreatorcom.android.systemui.util.NotificationChannels
@@ -500,4 +475,13 @@
com.android.wallpaper
+
+ "M8,0C3.6,0,0,3.6,0,8"
+
+
+ -1
+
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index 4cb282b2b90ecd63ca66c204a82933e6316e44bf..c2990f318faa6bdca8441ed222974df8aca40348 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -112,7 +112,7 @@
17dp
- 106dp
+ @*android:dimen/notification_min_height146dp
@@ -183,6 +183,9 @@
12sp
+
+ 16dp
+
5
@@ -258,8 +261,8 @@
@*android:dimen/notification_header_icon_size_ambient
-
- 16dp
+
+ 16dp90%
@@ -382,22 +385,16 @@
@dimen/notification_panel_width
- 8dp
+ 4dp20dp8dp
-
- 8dp
-
64dp116dp
- 252dp
-
64dp20dp
@@ -414,8 +411,6 @@
8dp
- 16dp
-
9dp76dp
@@ -1107,18 +1102,23 @@
6dp8dp
-
- 0dp
-
- 8dp
+
+ 16dp
- 52dp
+ 60dp
+
+ 52dp
+
+ 12dp
- 56dp
+ 52dp16dp4dp
+
+ 8dp180dp
@@ -1127,10 +1127,8 @@
6dp16dp
-
- 48dp
-
- 24dp
+
+ 48dp100dp
@@ -1143,12 +1141,10 @@
4dp5dp
-
- 5dp
+
+ 9dp
- 100dp
-
- 48dp
+ 96dp8dp
@@ -1157,6 +1153,7 @@
snap to the dismiss target. -->
40dp20dp
+
10sp
diff --git a/packages/SystemUI/res/values/ids.xml b/packages/SystemUI/res/values/ids.xml
index e97055f08e32d269325c2e0e9644d8becc5b19e8..372718139886c59d5e3a37ad4d2e8c10f503f7e3 100644
--- a/packages/SystemUI/res/values/ids.xml
+++ b/packages/SystemUI/res/values/ids.xml
@@ -94,6 +94,16 @@
+
+
+
+
+
+
+
+
+
+
@@ -127,6 +137,7 @@
+
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index e09d386237b75f61096f0d3da2e3699677ed9bdc..f9a8d0f910605f1131c07bfa3b17875bbdfe2ca8 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -303,6 +303,8 @@
Face authenticatedConfirmed
+
+ Tap Confirm to completeTouch the fingerprint sensor
@@ -438,6 +440,9 @@
5Ge
+
+ <i>5G <small>E</small></i>
+
5G
@@ -953,8 +958,11 @@
Tap again to open
-
- Swipe up to unlock
+
+ Swipe up to open
+
+
+ Swipe up to try againThis device is managed by your organization
@@ -1381,6 +1389,8 @@
buttons
To unpin this screen, touch & hold Back
and Home buttons
+
+ To unpin this screen, swipe up & holdGot it
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 2f1770a39f0228da95a7e4225cb95a78813695a5..6374191c4d7bb11fdc2b2e7d56c7b92cfd4cac1c 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -366,11 +366,13 @@
@color/light_mode_icon_color_dual_tone_background@color/light_mode_icon_color_dual_tone_fill@color/light_mode_icon_color_single_tone
+ @color/navigation_bar_home_handle_light_color