Merge "Merge "Remove unused strings." into rvc-dev am: 124f3e883c am: 32c47c3102" into rvc-d1-dev-plus-aosp am: b08c5b72f0 am: 87973bb551
Change-Id: I3ef224cce21fc511988ded919fa2c9cecf14ab79
diff --git a/Android.bp b/Android.bp
index 32207ca..053ba6d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -281,6 +281,7 @@
filegroup {
name: "framework-updatable-sources",
srcs: [
+ ":framework-appsearch-sources",
":framework-mediaprovider-sources",
":framework-permission-sources",
":framework-sdkextensions-sources",
@@ -295,6 +296,7 @@
java_library {
name: "framework-updatable-stubs-module_libs_api",
static_libs: [
+ "framework-appsearch-stubs", // TODO: Update to module_libs_api when there is one.
"framework-media-stubs-module_libs_api",
"framework-mediaprovider-stubs-module_libs_api",
"framework-permission-stubs-module_libs_api",
@@ -503,6 +505,7 @@
visibility: [
"//frameworks/base",
// TODO(b/147128803) remove the below lines
+ "//frameworks/base/apex/appsearch/framework",
"//frameworks/base/apex/blobstore/framework",
"//frameworks/base/apex/jobscheduler/framework",
"//frameworks/base/packages/Tethering/tests/unit",
@@ -524,6 +527,8 @@
installable: false, // this lib is a build-only library
static_libs: [
"framework-minus-apex",
+ // TODO(b/146218515): should be removed
+ "framework-appsearch",
// TODO (b/147688669) should be removed
"framework-telephony",
"framework-updatable-stubs-module_libs_api",
@@ -541,6 +546,7 @@
"exoplayer2-extractor",
"android.hardware.wifi-V1.0-java-constants",
],
+ libs: ["icing-java-proto-lite"],
apex_available: ["//apex_available:platform"],
visibility: [
// DO NOT ADD ANY MORE ENTRIES TO THIS LIST
@@ -559,6 +565,7 @@
libs: [
"app-compat-annotations",
"ext",
+ "icing-java-proto-lite",
"unsupportedappusage",
],
@@ -1134,16 +1141,6 @@
output: "framework-aidl-mappings.txt",
}
-genrule {
- name: "framework-annotation-proc-index",
- srcs: [":framework-annotation-proc"],
- cmd: "unzip -qp $(in) unsupportedappusage/unsupportedappusage_index.csv > $(out)",
- out: ["unsupportedappusage_index.csv"],
- dist: {
- targets: ["droidcore"],
- },
-}
-
// Avoid including Parcelable classes as we don't want to have two copies of
// Parcelable cross the libraries. This is used by telephony-common (frameworks/opt/telephony)
// and TeleService app (packages/services/Telephony).
diff --git a/apct-tests/perftests/autofill/AndroidManifest.xml b/apct-tests/perftests/autofill/AndroidManifest.xml
index 1e3532b..57595a2 100644
--- a/apct-tests/perftests/autofill/AndroidManifest.xml
+++ b/apct-tests/perftests/autofill/AndroidManifest.xml
@@ -18,7 +18,8 @@
<application>
<uses-library android:name="android.test.runner" />
- <activity android:name="android.perftests.utils.PerfTestActivity">
+ <activity android:name="android.perftests.utils.PerfTestActivity"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.perftests.core.PERFTEST" />
</intent-filter>
@@ -27,7 +28,8 @@
<service
android:name="android.view.autofill.MyAutofillService"
android:label="PERF AutofillService"
- android:permission="android.permission.BIND_AUTOFILL_SERVICE" >
+ android:permission="android.permission.BIND_AUTOFILL_SERVICE"
+ android:exported="true">
<intent-filter>
<action android:name="android.service.autofill.AutofillService" />
</intent-filter>
diff --git a/apct-tests/perftests/core/AndroidManifest.xml b/apct-tests/perftests/core/AndroidManifest.xml
index 290f178..3608899 100644
--- a/apct-tests/perftests/core/AndroidManifest.xml
+++ b/apct-tests/perftests/core/AndroidManifest.xml
@@ -13,7 +13,8 @@
<application>
<uses-library android:name="android.test.runner" />
- <activity android:name="android.perftests.utils.PerfTestActivity">
+ <activity android:name="android.perftests.utils.PerfTestActivity"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.perftests.core.PERFTEST" />
</intent-filter>
@@ -23,7 +24,8 @@
<service
android:name="android.view.autofill.MyAutofillService"
android:label="PERF AutofillService"
- android:permission="android.permission.BIND_AUTOFILL_SERVICE" >
+ android:permission="android.permission.BIND_AUTOFILL_SERVICE"
+ android:exported="true">
<intent-filter>
<action android:name="android.service.autofill.AutofillService" />
</intent-filter>
diff --git a/apct-tests/perftests/packagemanager/AndroidManifest.xml b/apct-tests/perftests/packagemanager/AndroidManifest.xml
index 520f4b5..4bcd557 100644
--- a/apct-tests/perftests/packagemanager/AndroidManifest.xml
+++ b/apct-tests/perftests/packagemanager/AndroidManifest.xml
@@ -76,7 +76,8 @@
<application>
<uses-library android:name="android.test.runner" />
- <activity android:name="android.perftests.utils.PerfTestActivity">
+ <activity android:name="android.perftests.utils.PerfTestActivity"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.perftests.packagemanager.PERFTEST" />
</intent-filter>
diff --git a/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
index e2cfa04..977c1dc 100644
--- a/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
+++ b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
@@ -18,7 +18,8 @@
package="com.android.perftests.appenumeration">
<application android:hasCode="false" >
- <activity android:name="android.perftests.utils.PerfTestActivity">
+ <activity android:name="android.perftests.utils.PerfTestActivity"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.perftests.packagemanager.PERFTEST" />
</intent-filter>
@@ -78,4 +79,4 @@
<package android:name="com.android.perftests.appenumeration49" />
</queries>
-</manifest>
\ No newline at end of file
+</manifest>
diff --git a/apex/appsearch/Android.bp b/apex/appsearch/Android.bp
new file mode 100644
index 0000000..b014fdc
--- /dev/null
+++ b/apex/appsearch/Android.bp
@@ -0,0 +1,37 @@
+// 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.
+
+apex {
+ name: "com.android.appsearch",
+ manifest: "apex_manifest.json",
+ java_libs: [
+ "framework-appsearch",
+ "service-appsearch",
+ ],
+ key: "com.android.appsearch.key",
+ certificate: ":com.android.appsearch.certificate",
+}
+
+apex_key {
+ name: "com.android.appsearch.key",
+ public_key: "com.android.appsearch.avbpubkey",
+ private_key: "com.android.appsearch.pem",
+}
+
+android_app_certificate {
+ name: "com.android.appsearch.certificate",
+ // This will use com.android.appsearch.x509.pem (the cert) and
+ // com.android.appsearch.pk8 (the private key)
+ certificate: "com.android.appsearch",
+}
diff --git a/apex/appsearch/apex_manifest.json b/apex/appsearch/apex_manifest.json
new file mode 100644
index 0000000..39a2d38
--- /dev/null
+++ b/apex/appsearch/apex_manifest.json
@@ -0,0 +1,4 @@
+{
+ "name": "com.android.appsearch",
+ "version": 300000000
+}
diff --git a/apex/appsearch/com.android.appsearch.avbpubkey b/apex/appsearch/com.android.appsearch.avbpubkey
new file mode 100644
index 0000000..4e5acae9
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.avbpubkey
Binary files differ
diff --git a/apex/appsearch/com.android.appsearch.pem b/apex/appsearch/com.android.appsearch.pem
new file mode 100644
index 0000000..4ed5945
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.pem
@@ -0,0 +1,51 @@
+-----BEGIN RSA PRIVATE KEY-----
+MIIJKQIBAAKCAgEAro9f/jvoIsj6ywuRmuUQS8UtprhohJitrovDMfm/T2R/WQvy
+AvUxgetyF4XvBPCDRqCsGxXCJMQOn1furrAeTmWbGHPhA0PI1Ys/qtfNMbh9THyn
+70I2c4X70CUQ+8/Y8BJ8CAB4iER/s9QtD28QLvM2BBUzRoKUSBGUYNMlYobjgRdK
+57V7yg48LkvUIg1fzIW3M5gCgOXa0u1xOadKX3m7tzCboHcXp5anfWX5PH1+okRu
+jzdI8OjtUq23qhoRw5Skz0Vbf4a+8t3kT3slF/Q7O8LoRPwpZsvIcvTyCGAqlra7
+2L2LN4H1p+u2ko3r/QmRbJn2eXW07elkyrggXMyn2rTxibQgk53wYfSavMyNd/E7
++de/uJ60l2aPa+5KUaR8eYwchXEELdqQ+zRgSZ2711xCaY4glEj7DT6VlEEdr26x
+akX0ra7e2sVGv1um/dvSyVO5aFKKjVvo4LqhWKWO8yvDMxmDDTNatvWhY2Bhd3RA
+0hilYpWQFb9Tv5f4E0tZmfvlddgux7sw++Y/RIimBFoSyf5AezAUIFYYoYvEzytB
+muq1/ecNHr+Z2tZMxN88sJVhzRzD9tKUyXhvxOV2Lg9TIeVTWGwQqgSnHWtIe+1p
+cw8inPfYEhP4Q+3W/RlPvNdu75x8Nj2aG7bxZnhoQDRDw5ddgma27I+a8esCAwEA
+AQKCAgBsNh9I6HRAVBz8kCBkSEnw3rwtFTZdtJQ+lw+bRHpvShqT5g7R/JQDOSTS
+JkoE4uBOgT4P0E45Inz6FLW2/yDacqxR3UwJDRVMI/WFACCJCRhLuR8V+BLvTIjN
+AJ1lrPSL5rmS8E/IEcakgQyp+6ypnkXHBCl0NXCcuKEl4N7VFE+mb/0UZPHnUSnH
+fWR085uGmwH17u7mXxdnGKDPH8DALSPMLUrcj9dPIdqUpwl5kUZWa1uqVphWF98/
+GMe5oE2Q0+3TO+i7xplKz3lAOFPHZLTvmCUK1tMHkZ6ifOwpewwLwB30/5N1BpB1
+126nrWk0xKCtFUixBOHzdnLwJHKSbi7chQU5q39oAJoTfxdmAJlaG0zQHUQZ44MQ
+gemzSA7uJbtoAOAZVF1K14xbIpnfidqTB7N3RCmiJE+/Hpkq6PxgPfu5rqocPbPC
+t0FgJ4NXNmKOAuJllSlrrHATcUOhF4g5pX7tvOc8X4y7bvfwOmtw5ez3INKMF0q6
+/y0vVCi6N1Z7CTa9eY8feZ1PImk/Fkq4NInSPyx7ZE3pLYmsvuJjliFrWo9TRVae
+Dt5vvBKBOpAfhDiHkeXbX7Raj2B6c6adF4no/3SAVlAjIq1iBVjfQWyHAGUoEW1O
+u3LdHTIb6gSTLJ4AfryEKrOE+1VMlYt92GwX692KKXMaJjytSQKCAQEA3pYbl8HD
+Y++UyEN5VzWAQedT3//GDwpDfgdERe2E4smYrkVNJ2WAG2SqY1A35DIl8be3eHvl
+soaL38j48ailfDYY9tI+IlapNh+VOLej+HiOytaPlLhcv2FpSC2qZT4EiU6IBXLo
++l6FrmD/VQXTjvoktzsDB/n1t4Dfa3Ogf+lLf1Jxr94YpEnDh18V5ofj78SplVLm
+NrzsHxAafE4Ni2a7dyWjcDYIuL7FTShT+0K4W45tRr+CGxThxu7LEe7zw4Z1IagU
+jJNtXjvDD/Zw4UTqI6RwWGZsu6UjPS6LHhOqnWqflWmFRIfMbDkuWvnGZTM9DkVg
+kk1+BNi1PECZXwKCAQEAyMOjbVo6XV3lFN0X8TpHyg/z9ar00/SE7WEJHqPSuzYT
+rSfU4vDDlaPAwkYvGi9ZKi9VM+R3CyBNxnK9Yq6NurHhhrYcAwdS/hGLT1K2o0Y8
+Pgv7gZCFb+SIwLBhlUG9otGULcBzLneqgVUqyMG6IoCjuC2LRyB71Xc2UMyg6n/f
+XpV2RTMb8f+26cgm6nj0SDAfgpr8HV6uNV80c6l1A8gq86nUWwiVAEUdmExSDe7J
+shsfWAj8RSErqDXf1BtEdPLJUSIPX5VXkzAXOXIkengwVno0vv0dBN8uraS8iQSG
+0JsJLLcw9b5kvnh6FEbE7POsIqKyCZV9VADwO6YW9QKCAQBYQsdwNqoGv6KMgozj
+8tgHyfWtVduwbQ50M+dznwpZbzz2pY5Bd/MDabhSpyVyfBwlrAa5ZM+hKc7fDu7/
+zDLKfR0LCjUPIrP4PS/LjK4dQZjFf6zxeOV2EedQcqMlgCEGXTh8iKMvXDm/+sBk
+c2n/QNs8OM8r44b2m8h78B6NefGw6/0ekn/M7V72F9M0VWAh3Cauim+09tbePmFy
+NvUR+MuPJEKZpSNyNltADCS49izqSSC1tAygNniMjHXDh6/rMS7TCLYVRARTIHlp
+o/wAp3X8aiEOPJcTFRlTElihtYSq5POgqHXqxbpek5H5CyALUvT76rCvcsDspQ3A
+dZEbAoIBAQCoLEmP5o8Rev/UdEgECB/uwWJIngYsLp3TAv/SrMRvkiL1X3JTD/+m
+L9/eXVBDjPoR/khPCcg2h77ex2qhaTrL8wnKAG6CkvYQYb3impTnPIRmLT9nDxrX
+2gY78wQrNUCXTRvlH1rcx90KLb+DH9S95ig+tdf/otRYwl27XU5GYQtJfcXuvZth
+IiWku8btjpiCh909WHpsV81yY+faI08j9d8U8WQzRYMbEMpzsyrhBO/rxBCDfDNl
+7R1W8JooYRb9KAs/bVqXZNBROW2a72RjOp6zMfdRLVHLrPC7AE32MNaFk/khfesD
+T5OwgdcxeP6oxo2hDcw5fwHXBlo2fTCpAoIBAQChgjv5AfQ50spqvHy6MNem4tV0
+L0IsxmNLsi8X2a6s4kStwUzOxDA8c/e54XabxQNZ0ERU1q+bgbG7PWC4twDMPR8i
+2DO6rgqSK4MjGOTgAoeDuy3mElFQmCLRs04Wf4jh8kPi217WFlYBynh2HmBKbh42
+JmIrLetbKEK13FXRvMkgZcX4OIDrT5TOvev4VZArU8PTRlWv3sqsKAVXjX0clGHf
+I0/2kSsr2qq1UY7JrYWZsZ9uqz2ZH0pF19a6O/Cq4uqTYoL+sYzFTSeFmChRjV1g
+ancTvTn9lcBqECDMgq5DE/p96Oxg/t8elalR6WDUlysafphVz3nTuyMTh7ka
+-----END RSA PRIVATE KEY-----
diff --git a/apex/appsearch/com.android.appsearch.pk8 b/apex/appsearch/com.android.appsearch.pk8
new file mode 100644
index 0000000..77e98b2
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.pk8
Binary files differ
diff --git a/apex/appsearch/com.android.appsearch.x509.pem b/apex/appsearch/com.android.appsearch.x509.pem
new file mode 100644
index 0000000..e37c4b9
--- /dev/null
+++ b/apex/appsearch/com.android.appsearch.x509.pem
@@ -0,0 +1,35 @@
+-----BEGIN CERTIFICATE-----
+MIIGETCCA/mgAwIBAgIUGl+MIvpEi0+TWzj0ieh6WtjXmP8wDQYJKoZIhvcNAQEL
+BQAwgZYxCzAJBgNVBAYTAlVTMRMwEQYDVQQIDApDYWxpZm9ybmlhMRYwFAYDVQQH
+DA1Nb3VudGFpbiBWaWV3MRAwDgYDVQQKDAdBbmRyb2lkMRAwDgYDVQQLDAdBbmRy
+b2lkMRIwEAYDVQQDDAlhcHBzZWFyY2gxIjAgBgkqhkiG9w0BCQEWE2FuZHJvaWRA
+YW5kcm9pZC5jb20wIBcNMTkxMTIwMjMxNTM1WhgPNDc1NzEwMTYyMzE1MzVaMIGW
+MQswCQYDVQQGEwJVUzETMBEGA1UECAwKQ2FsaWZvcm5pYTEWMBQGA1UEBwwNTW91
+bnRhaW4gVmlldzEQMA4GA1UECgwHQW5kcm9pZDEQMA4GA1UECwwHQW5kcm9pZDES
+MBAGA1UEAwwJYXBwc2VhcmNoMSIwIAYJKoZIhvcNAQkBFhNhbmRyb2lkQGFuZHJv
+aWQuY29tMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAsyPlp3q3P9Xg
+W1WhIwQiF9em9oqaGQ/3dbIxickAy591qcRbpHb4lDTZusRECfqlV215mV+lv5x4
+EhOnId3uPKBAJ/YDtL7zUW6TWL7to7zEnUqSIKTcoQzNF2EiCeGuRhrtgYvAD3HQ
+dwr4xrbSADbDArF04A49voLpsmq1fyNgl86VISiMRqoSLJnA6eghlduuOt+nf252
+6WgxDs/JrO/eK70q0+RwmWzVJ/tVr+36a65N4EHhfL4t2hdV0k0XFob7hBn7XWzC
+QrSR3jCvE3yAfAr3tq5c19/WWBA7V45nEHzXyAvBUHWubYvDi+vm/yzqU2rQwScC
+bzp4zK4CnhBHqb4gHoy0+kfFIwJ1A3GT2pl3ba/NsIYgliMtPQfkDV5PE5RTNcwH
+21ewH7vm2+spQv5Z/2TEV2lEHlp2vuAliyn2AT4u1ginr6vtBRFLmpPeziFcfB0y
+7h04GctZpX8odz+XI7aMDe47RNu9XyJX0vulntxmlDF76k8Z9DIXg02hY+yc/i7+
+2ztnj1eXL51p+HyhK5VbvJWbKkVaMQijlbuIMYNzMA6L0WHWRc2Cux9UDODMGoiC
+w09JpqudCS/95I/F1xaWJ/Kh3vKeQshHAz0hrL7v7wpjmfeXf6NGsWJGy+giCwZj
+ABtn9nFQoesgi7M1LeazD5Q/4v4AMaUCAwEAAaNTMFEwHQYDVR0OBBYEFJpHCy2Y
+3qaL6cLpE9fe53L61KEEMB8GA1UdIwQYMBaAFJpHCy2Y3qaL6cLpE9fe53L61KEE
+MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIBAGDYAcOhbOYcDB2K
+WDZka+FCORFFvz4nLQGE7Z9TAn1g7XusM2KbXlb2drIN6CWOFlnKQrUsNsAHrc+s
+tl+A1vC3/NfYKKBVuizPx/kHUgz3k/UIJzbzEu/uCJd86idcJoUTqC/qEJAeeQqM
+XpsNP1Yg7oyzZT8sFlUAKeDeXJ7fIDXR6nduUQ6uJXkee/5JF3VedHdgHAUsC19/
+KHhyVU3MLDUNBdAmM79+DsdVYi2Pw31jojMu95Zz1MYTRBcgQAiEw5nncr38k6ac
+Gy+JffgJR68FzI4QLBSxnDRFD2zXJ09lpP6Sjb1FVcDzk7Bi/EQDLBkrkbeLsk5F
+a0xz9VoJ3kM7Cc4R9MXN4ZWuePjdJwgasnHmllsXn45R9odgJgmfzuUwtgNw/XKQ
+QcQl7Q9QUrBCqIoHijxscUZCBSmIHVNBBDckRAmSXHeWMRlO3uBR4IA/Jfrt//4f
+uc7CNUp+LQ6EzBXJOVFrXRtau6Oj+jM1+fzxKo1uV2+T+GdVEE5jeF/6nB3qna6h
+2NmyLqbqeqp2QxgzBWSGy8Ugs6zg4wItJBqOoRLKKFxTJu5OAzJ4fUA+g7WFXNhR
+kG56SJ863LZoORKHWE72oXYeIW98Tq0qKLH3NzH5L4tfX8DeBTq+APezHetH1ljA
+D0avPy62g0i643bbpwZgezBgRIKL
+-----END CERTIFICATE-----
diff --git a/apex/appsearch/framework/Android.bp b/apex/appsearch/framework/Android.bp
new file mode 100644
index 0000000..24309d7
--- /dev/null
+++ b/apex/appsearch/framework/Android.bp
@@ -0,0 +1,83 @@
+// 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.
+
+filegroup {
+ name: "framework-appsearch-sources",
+ srcs: [
+ "java/**/*.java",
+ "java/**/*.aidl",
+ ],
+ path: "java",
+}
+
+java_library {
+ name: "framework-appsearch",
+ installable: true,
+ sdk_version: "core_platform", // TODO(b/146218515) should be core_current
+ srcs: [":framework-appsearch-sources"],
+ hostdex: true, // for hiddenapi check
+ libs: [
+ "framework-minus-apex", // TODO(b/146218515) should be framework-system-stubs
+ ],
+ static_libs: ["icing-java-proto-lite"],
+ visibility: [
+ // TODO(b/146218515) remove this when framework is built with the stub of appsearch
+ "//frameworks/base",
+ "//frameworks/base/apex/appsearch:__subpackages__",
+ ],
+ permitted_packages: ["android.app.appsearch"],
+ apex_available: ["com.android.appsearch"],
+}
+
+metalava_appsearch_docs_args =
+ "--hide-package com.android.server " +
+ "--error UnhiddenSystemApi " +
+ "--hide RequiresPermission " +
+ "--hide MissingPermission " +
+ "--hide BroadcastBehavior " +
+ "--hide HiddenSuperclass " +
+ "--hide DeprecationMismatch " +
+ "--hide UnavailableSymbol " +
+ "--hide SdkConstant " +
+ "--hide HiddenTypeParameter " +
+ "--hide Todo --hide Typo " +
+ "--hide HiddenTypedefConstant " +
+ "--show-annotation android.annotation.SystemApi "
+
+droidstubs {
+ name: "framework-appsearch-stubs-srcs",
+ srcs: [
+ ":framework-annotations",
+ ":framework-appsearch-sources",
+ ],
+ aidl: {
+ include_dirs: ["frameworks/base/core/java"],
+ },
+ args: metalava_appsearch_docs_args,
+ sdk_version: "core_current",
+ libs: ["android_system_stubs_current"],
+}
+
+java_library {
+ name: "framework-appsearch-stubs",
+ srcs: [":framework-appsearch-stubs-srcs"],
+ aidl: {
+ export_include_dirs: [
+ "java",
+ ],
+ },
+ sdk_version: "core_current",
+ libs: ["android_system_stubs_current"],
+ installable: false,
+}
diff --git a/apex/appsearch/framework/java/android/app/TEST_MAPPING b/apex/appsearch/framework/java/android/app/TEST_MAPPING
new file mode 100644
index 0000000..12188f8
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+ "imports": [
+ {
+ "path": "frameworks/base/apex/appsearch/service/java/com/android/server/appsearch"
+ }
+ ]
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
new file mode 100644
index 0000000..dc75825
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchBatchResult.java
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.ArrayMap;
+
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Provides access to multiple {@link AppSearchResult}s from a batch operation accepting multiple
+ * inputs.
+ *
+ * @param <KeyType> The type of the keys for {@link #getSuccesses} and {@link #getFailures}.
+ * @param <ValueType> The type of result objects associated with the keys.
+ * @hide
+ */
+public class AppSearchBatchResult<KeyType, ValueType> implements Parcelable {
+ @NonNull private final Map<KeyType, ValueType> mSuccesses;
+ @NonNull private final Map<KeyType, AppSearchResult<ValueType>> mFailures;
+
+ private AppSearchBatchResult(
+ @NonNull Map<KeyType, ValueType> successes,
+ @NonNull Map<KeyType, AppSearchResult<ValueType>> failures) {
+ mSuccesses = successes;
+ mFailures = failures;
+ }
+
+ private AppSearchBatchResult(@NonNull Parcel in) {
+ mSuccesses = Collections.unmodifiableMap(in.readHashMap(/*loader=*/ null));
+ mFailures = Collections.unmodifiableMap(in.readHashMap(/*loader=*/ null));
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeMap(mSuccesses);
+ dest.writeMap(mFailures);
+ }
+
+ /** Returns {@code true} if this {@link AppSearchBatchResult} has no failures. */
+ public boolean isSuccess() {
+ return mFailures.isEmpty();
+ }
+
+ /**
+ * Returns a {@link Map} of all successful keys mapped to the successful {@link ValueType}
+ * values they produced.
+ *
+ * <p>The values of the {@link Map} will not be {@code null}.
+ */
+ @NonNull
+ public Map<KeyType, ValueType> getSuccesses() {
+ return mSuccesses;
+ }
+
+ /**
+ * Returns a {@link Map} of all failed keys mapped to the failed {@link AppSearchResult}s they
+ * produced.
+ *
+ * <p>The values of the {@link Map} will not be {@code null}.
+ */
+ @NonNull
+ public Map<KeyType, AppSearchResult<ValueType>> getFailures() {
+ return mFailures;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Creator<AppSearchBatchResult> CREATOR =
+ new Creator<AppSearchBatchResult>() {
+ @NonNull
+ @Override
+ public AppSearchBatchResult createFromParcel(@NonNull Parcel in) {
+ return new AppSearchBatchResult(in);
+ }
+
+ @NonNull
+ @Override
+ public AppSearchBatchResult[] newArray(int size) {
+ return new AppSearchBatchResult[size];
+ }
+ };
+
+ /**
+ * Builder for {@link AppSearchBatchResult} objects.
+ *
+ * @param <KeyType> The type of keys.
+ * @param <ValueType> The type of result objects associated with the keys.
+ * @hide
+ */
+ public static final class Builder<KeyType, ValueType> {
+ private final Map<KeyType, ValueType> mSuccesses = new ArrayMap<>();
+ private final Map<KeyType, AppSearchResult<ValueType>> mFailures = new ArrayMap<>();
+
+ /** Creates a new {@link Builder} for this {@link AppSearchBatchResult}. */
+ public Builder() {}
+
+ /**
+ * Associates the {@code key} with the given successful return value.
+ *
+ * <p>Any previous mapping for a key, whether success or failure, is deleted.
+ */
+ public Builder setSuccess(@NonNull KeyType key, @Nullable ValueType result) {
+ return setResult(key, AppSearchResult.newSuccessfulResult(result));
+ }
+
+ /**
+ * Associates the {@code key} with the given failure code and error message.
+ *
+ * <p>Any previous mapping for a key, whether success or failure, is deleted.
+ */
+ public Builder setFailure(
+ @NonNull KeyType key,
+ @AppSearchResult.ResultCode int resultCode,
+ @Nullable String errorMessage) {
+ return setResult(key, AppSearchResult.newFailedResult(resultCode, errorMessage));
+ }
+
+ /**
+ * Associates the {@code key} with the given {@code result}.
+ *
+ * <p>Any previous mapping for a key, whether success or failure, is deleted.
+ */
+ @NonNull
+ public Builder setResult(@NonNull KeyType key, @NonNull AppSearchResult<ValueType> result) {
+ if (result.isSuccess()) {
+ mSuccesses.put(key, result.getResultValue());
+ mFailures.remove(key);
+ } else {
+ mFailures.put(key, result);
+ mSuccesses.remove(key);
+ }
+ return this;
+ }
+
+ /** Builds an {@link AppSearchBatchResult} from the contents of this {@link Builder}. */
+ @NonNull
+ public AppSearchBatchResult<KeyType, ValueType> build() {
+ return new AppSearchBatchResult<>(mSuccesses, mFailures);
+ }
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java
new file mode 100644
index 0000000..6ac0956
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchDocument.java
@@ -0,0 +1,694 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.CurrentTimeMillisLong;
+import android.annotation.DurationMillisLong;
+import android.annotation.IntRange;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.util.ArrayMap;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.Preconditions;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.protobuf.ByteString;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * Represents a document unit.
+ *
+ * <p>Documents are constructed via {@link AppSearchDocument.Builder}.
+ * @hide
+ */
+public class AppSearchDocument {
+ private static final String TAG = "AppSearchDocument";
+
+ /**
+ * The maximum number of elements in a repeatable field. Will reject the request if exceed
+ * this limit.
+ */
+ private static final int MAX_REPEATED_PROPERTY_LENGTH = 100;
+
+ /**
+ * The maximum {@link String#length} of a {@link String} field. Will reject the request if
+ * {@link String}s longer than this.
+ */
+ private static final int MAX_STRING_LENGTH = 20_000;
+
+ /**
+ * Contains {@link AppSearchDocument} basic information (uri, schemaType etc) and properties
+ * ordered by keys.
+ */
+ @NonNull
+ private final DocumentProto mProto;
+
+ /** Contains all properties in {@link #mProto} to support getting properties via keys. */
+ @NonNull
+ private final Map<String, Object> mProperties;
+
+ /**
+ * Creates a new {@link AppSearchDocument}.
+ * @param proto Contains {@link AppSearchDocument} basic information (uri, schemaType etc) and
+ * properties ordered by keys.
+ * @param propertiesMap Contains all properties in {@link #mProto} to support get properties
+ * via keys.
+ */
+ private AppSearchDocument(@NonNull DocumentProto proto,
+ @NonNull Map<String, Object> propertiesMap) {
+ mProto = proto;
+ mProperties = propertiesMap;
+ }
+
+ /**
+ * Creates a new {@link AppSearchDocument} from an existing instance.
+ *
+ * <p>This method should be only used by constructor of a subclass.
+ */
+ protected AppSearchDocument(@NonNull AppSearchDocument document) {
+ this(document.mProto, document.mProperties);
+ }
+
+ /** @hide */
+ AppSearchDocument(@NonNull DocumentProto documentProto) {
+ this(documentProto, new ArrayMap<>());
+ for (int i = 0; i < documentProto.getPropertiesCount(); i++) {
+ PropertyProto property = documentProto.getProperties(i);
+ String name = property.getName();
+ if (property.getStringValuesCount() > 0) {
+ String[] values = new String[property.getStringValuesCount()];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = property.getStringValues(j);
+ }
+ mProperties.put(name, values);
+ } else if (property.getInt64ValuesCount() > 0) {
+ long[] values = new long[property.getInt64ValuesCount()];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = property.getInt64Values(j);
+ }
+ mProperties.put(property.getName(), values);
+ } else if (property.getDoubleValuesCount() > 0) {
+ double[] values = new double[property.getDoubleValuesCount()];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = property.getDoubleValues(j);
+ }
+ mProperties.put(property.getName(), values);
+ } else if (property.getBooleanValuesCount() > 0) {
+ boolean[] values = new boolean[property.getBooleanValuesCount()];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = property.getBooleanValues(j);
+ }
+ mProperties.put(property.getName(), values);
+ } else if (property.getBytesValuesCount() > 0) {
+ byte[][] values = new byte[property.getBytesValuesCount()][];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = property.getBytesValues(j).toByteArray();
+ }
+ mProperties.put(name, values);
+ } else if (property.getDocumentValuesCount() > 0) {
+ AppSearchDocument[] values =
+ new AppSearchDocument[property.getDocumentValuesCount()];
+ for (int j = 0; j < values.length; j++) {
+ values[j] = new AppSearchDocument(property.getDocumentValues(j));
+ }
+ mProperties.put(name, values);
+ } else {
+ throw new IllegalStateException("Unknown type of value: " + name);
+ }
+ }
+ }
+
+ /**
+ * Returns the {@link DocumentProto} of the {@link AppSearchDocument}.
+ *
+ * <p>The {@link DocumentProto} contains {@link AppSearchDocument}'s basic information and all
+ * properties ordered by keys.
+ * @hide
+ */
+ @NonNull
+ @VisibleForTesting
+ public DocumentProto getProto() {
+ return mProto;
+ }
+
+ /** Returns the URI of the {@link AppSearchDocument}. */
+ @NonNull
+ public String getUri() {
+ return mProto.getUri();
+ }
+
+ /** Returns the schema type of the {@link AppSearchDocument}. */
+ @NonNull
+ public String getSchemaType() {
+ return mProto.getSchema();
+ }
+
+ /**
+ * Returns the creation timestamp in milliseconds of the {@link AppSearchDocument}. Value will
+ * be in the {@link System#currentTimeMillis()} time base.
+ */
+ @CurrentTimeMillisLong
+ public long getCreationTimestampMillis() {
+ return mProto.getCreationTimestampMs();
+ }
+
+ /**
+ * Returns the TTL (Time To Live) of the {@link AppSearchDocument}, in milliseconds.
+ *
+ * <p>The default value is 0, which means the document is permanent and won't be auto-deleted
+ * until the app is uninstalled.
+ */
+ @DurationMillisLong
+ public long getTtlMillis() {
+ return mProto.getTtlMs();
+ }
+
+ /**
+ * Returns the score of the {@link AppSearchDocument}.
+ *
+ * <p>The score is a query-independent measure of the document's quality, relative to other
+ * {@link AppSearchDocument}s of the same type.
+ *
+ * <p>The default value is 0.
+ */
+ public int getScore() {
+ return mProto.getScore();
+ }
+
+ /**
+ * Retrieve a {@link String} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@link String} associated with the given key or {@code null} if there
+ * is no such key or the value is of a different type.
+ */
+ @Nullable
+ public String getPropertyString(@NonNull String key) {
+ String[] propertyArray = getPropertyStringArray(key);
+ if (ArrayUtils.isEmpty(propertyArray)) {
+ return null;
+ }
+ warnIfSinglePropertyTooLong("String", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /**
+ * Retrieve a {@code long} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@code long} associated with the given key or default value {@code 0} if
+ * there is no such key or the value is of a different type.
+ */
+ public long getPropertyLong(@NonNull String key) {
+ long[] propertyArray = getPropertyLongArray(key);
+ if (ArrayUtils.isEmpty(propertyArray)) {
+ return 0;
+ }
+ warnIfSinglePropertyTooLong("Long", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /**
+ * Retrieve a {@code double} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@code double} associated with the given key or default value {@code 0.0}
+ * if there is no such key or the value is of a different type.
+ */
+ public double getPropertyDouble(@NonNull String key) {
+ double[] propertyArray = getPropertyDoubleArray(key);
+ // TODO(tytytyww): Add support double array to ArraysUtils.isEmpty().
+ if (propertyArray == null || propertyArray.length == 0) {
+ return 0.0;
+ }
+ warnIfSinglePropertyTooLong("Double", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /**
+ * Retrieve a {@code boolean} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@code boolean} associated with the given key or default value
+ * {@code false} if there is no such key or the value is of a different type.
+ */
+ public boolean getPropertyBoolean(@NonNull String key) {
+ boolean[] propertyArray = getPropertyBooleanArray(key);
+ if (ArrayUtils.isEmpty(propertyArray)) {
+ return false;
+ }
+ warnIfSinglePropertyTooLong("Boolean", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /**
+ * Retrieve a {@code byte[]} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@code byte[]} associated with the given key or {@code null} if there
+ * is no such key or the value is of a different type.
+ */
+ @Nullable
+ public byte[] getPropertyBytes(@NonNull String key) {
+ byte[][] propertyArray = getPropertyBytesArray(key);
+ if (ArrayUtils.isEmpty(propertyArray)) {
+ return null;
+ }
+ warnIfSinglePropertyTooLong("ByteArray", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /**
+ * Retrieve a {@link AppSearchDocument} value by key.
+ *
+ * @param key The key to look for.
+ * @return The first {@link AppSearchDocument} associated with the given key or {@code null} if
+ * there is no such key or the value is of a different type.
+ */
+ @Nullable
+ public AppSearchDocument getPropertyDocument(@NonNull String key) {
+ AppSearchDocument[] propertyArray = getPropertyDocumentArray(key);
+ if (ArrayUtils.isEmpty(propertyArray)) {
+ return null;
+ }
+ warnIfSinglePropertyTooLong("Document", key, propertyArray.length);
+ return propertyArray[0];
+ }
+
+ /** Prints a warning to logcat if the given propertyLength is greater than 1. */
+ private static void warnIfSinglePropertyTooLong(
+ @NonNull String propertyType, @NonNull String key, int propertyLength) {
+ if (propertyLength > 1) {
+ Log.w(TAG, "The value for \"" + key + "\" contains " + propertyLength
+ + " elements. Only the first one will be returned from "
+ + "getProperty" + propertyType + "(). Try getProperty" + propertyType
+ + "Array().");
+ }
+ }
+
+ /**
+ * Retrieve a repeated {@link String} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@code String[]} associated with the given key, or {@code null} if no value
+ * is set or the value is of a different type.
+ */
+ @Nullable
+ public String[] getPropertyStringArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, String[].class);
+ }
+
+ /**
+ * Retrieve a repeated {@code long} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@code long[]} associated with the given key, or {@code null} if no value is
+ * set or the value is of a different type.
+ */
+ @Nullable
+ public long[] getPropertyLongArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, long[].class);
+ }
+
+ /**
+ * Retrieve a repeated {@code double} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@code double[]} associated with the given key, or {@code null} if no value
+ * is set or the value is of a different type.
+ */
+ @Nullable
+ public double[] getPropertyDoubleArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, double[].class);
+ }
+
+ /**
+ * Retrieve a repeated {@code boolean} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@code boolean[]} associated with the given key, or {@code null} if no value
+ * is set or the value is of a different type.
+ */
+ @Nullable
+ public boolean[] getPropertyBooleanArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, boolean[].class);
+ }
+
+ /**
+ * Retrieve a {@code byte[][]} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@code byte[][]} associated with the given key, or {@code null} if no value
+ * is set or the value is of a different type.
+ */
+ @Nullable
+ public byte[][] getPropertyBytesArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, byte[][].class);
+ }
+
+ /**
+ * Retrieve a repeated {@link AppSearchDocument} property by key.
+ *
+ * @param key The key to look for.
+ * @return The {@link AppSearchDocument[]} associated with the given key, or {@code null} if no
+ * value is set or the value is of a different type.
+ */
+ @Nullable
+ public AppSearchDocument[] getPropertyDocumentArray(@NonNull String key) {
+ return getAndCastPropertyArray(key, AppSearchDocument[].class);
+ }
+
+ /**
+ * Gets a repeated property of the given key, and casts it to the given class type, which
+ * must be an array class type.
+ */
+ @Nullable
+ private <T> T getAndCastPropertyArray(@NonNull String key, @NonNull Class<T> tClass) {
+ Object value = mProperties.get(key);
+ if (value == null) {
+ return null;
+ }
+ try {
+ return tClass.cast(value);
+ } catch (ClassCastException e) {
+ Log.w(TAG, "Error casting to requested type for key \"" + key + "\"", e);
+ return null;
+ }
+ }
+
+ @Override
+ public boolean equals(@Nullable Object other) {
+ // Check only proto's equality is sufficient here since all properties in
+ // mProperties are ordered by keys and stored in proto.
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof AppSearchDocument)) {
+ return false;
+ }
+ AppSearchDocument otherDocument = (AppSearchDocument) other;
+ return this.mProto.equals(otherDocument.mProto);
+ }
+
+ @Override
+ public int hashCode() {
+ // Hash only proto is sufficient here since all properties in mProperties are ordered by
+ // keys and stored in proto.
+ return mProto.hashCode();
+ }
+
+ @Override
+ public String toString() {
+ return mProto.toString();
+ }
+
+ /**
+ * The builder class for {@link AppSearchDocument}.
+ *
+ * @param <BuilderType> Type of subclass who extend this.
+ */
+ public static class Builder<BuilderType extends Builder> {
+
+ private final Map<String, Object> mProperties = new ArrayMap<>();
+ private final DocumentProto.Builder mProtoBuilder = DocumentProto.newBuilder();
+ private final BuilderType mBuilderTypeInstance;
+
+ /**
+ * Creates a new {@link AppSearchDocument.Builder}.
+ *
+ * <p>The URI is a unique string opaque to AppSearch.
+ *
+ * @param uri The uri of {@link AppSearchDocument}.
+ * @param schemaType The schema type of the {@link AppSearchDocument}. The passed-in
+ * {@code schemaType} must be defined using {@link AppSearchManager#setSchema} prior
+ * to inserting a document of this {@code schemaType} into the AppSearch index using
+ * {@link AppSearchManager#putDocuments(List)}. Otherwise, the document will be
+ * rejected by {@link AppSearchManager#putDocuments(List)}.
+ */
+ public Builder(@NonNull String uri, @NonNull String schemaType) {
+ mBuilderTypeInstance = (BuilderType) this;
+ mProtoBuilder.setUri(uri).setSchema(schemaType);
+ // Set current timestamp for creation timestamp by default.
+ setCreationTimestampMillis(System.currentTimeMillis());
+ }
+
+ /**
+ * Sets the score of the {@link AppSearchDocument}.
+ *
+ * <p>The score is a query-independent measure of the document's quality, relative to
+ * other {@link AppSearchDocument}s of the same type.
+ *
+ * @throws IllegalArgumentException If the provided value is negative.
+ */
+ @NonNull
+ public BuilderType setScore(@IntRange(from = 0, to = Integer.MAX_VALUE) int score) {
+ if (score < 0) {
+ throw new IllegalArgumentException("Document score cannot be negative.");
+ }
+ mProtoBuilder.setScore(score);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Set the creation timestamp in milliseconds of the {@link AppSearchDocument}. Should be
+ * set using a value obtained from the {@link System#currentTimeMillis()} time base.
+ */
+ @NonNull
+ public BuilderType setCreationTimestampMillis(
+ @CurrentTimeMillisLong long creationTimestampMillis) {
+ mProtoBuilder.setCreationTimestampMs(creationTimestampMillis);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Set the TTL (Time To Live) of the {@link AppSearchDocument}, in milliseconds.
+ *
+ * <p>After this many milliseconds since the {@link #setCreationTimestampMillis(long)}
+ * creation timestamp}, the document is deleted.
+ *
+ * @param ttlMillis A non-negative duration in milliseconds.
+ * @throws IllegalArgumentException If the provided value is negative.
+ */
+ @NonNull
+ public BuilderType setTtlMillis(@DurationMillisLong long ttlMillis) {
+ Preconditions.checkArgumentNonNegative(
+ ttlMillis, "Document ttlMillis cannot be negative.");
+ mProtoBuilder.setTtlMs(ttlMillis);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@code String} values for a property, replacing its previous
+ * values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@code String} values of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull String... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@code boolean} values for a property, replacing its previous
+ * values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@code boolean} values of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull boolean... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@code long} values for a property, replacing its previous
+ * values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@code long} values of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull long... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@code double} values for a property, replacing its previous
+ * values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@code double} values of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull double... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@code byte[]} for a property, replacing its previous values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@code byte[]} of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull byte[]... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ /**
+ * Sets one or multiple {@link AppSearchDocument} values for a property, replacing its
+ * previous values.
+ *
+ * @param key The key associated with the {@code values}.
+ * @param values The {@link AppSearchDocument} values of the property.
+ */
+ @NonNull
+ public BuilderType setProperty(@NonNull String key, @NonNull AppSearchDocument... values) {
+ putInPropertyMap(key, values);
+ return mBuilderTypeInstance;
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull String[] values)
+ throws IllegalArgumentException {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ validateRepeatedPropertyLength(key, values.length);
+ for (int i = 0; i < values.length; i++) {
+ if (values[i] == null) {
+ throw new IllegalArgumentException("The String at " + i + " is null.");
+ } else if (values[i].length() > MAX_STRING_LENGTH) {
+ throw new IllegalArgumentException("The String at " + i + " length is: "
+ + values[i].length() + ", which exceeds length limit: "
+ + MAX_STRING_LENGTH + ".");
+ }
+ }
+ mProperties.put(key, values);
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull boolean[] values) {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ validateRepeatedPropertyLength(key, values.length);
+ mProperties.put(key, values);
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull double[] values) {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ validateRepeatedPropertyLength(key, values.length);
+ mProperties.put(key, values);
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull long[] values) {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ validateRepeatedPropertyLength(key, values.length);
+ mProperties.put(key, values);
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull byte[][] values) {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ validateRepeatedPropertyLength(key, values.length);
+ mProperties.put(key, values);
+ }
+
+ private void putInPropertyMap(@NonNull String key, @NonNull AppSearchDocument[] values) {
+ Objects.requireNonNull(key);
+ Objects.requireNonNull(values);
+ for (int i = 0; i < values.length; i++) {
+ if (values[i] == null) {
+ throw new IllegalArgumentException("The document at " + i + " is null.");
+ }
+ }
+ validateRepeatedPropertyLength(key, values.length);
+ mProperties.put(key, values);
+ }
+
+ private static void validateRepeatedPropertyLength(@NonNull String key, int length) {
+ if (length == 0) {
+ throw new IllegalArgumentException("The input array is empty.");
+ } else if (length > MAX_REPEATED_PROPERTY_LENGTH) {
+ throw new IllegalArgumentException(
+ "Repeated property \"" + key + "\" has length " + length
+ + ", which exceeds the limit of "
+ + MAX_REPEATED_PROPERTY_LENGTH);
+ }
+ }
+
+ /** Builds the {@link AppSearchDocument} object. */
+ @NonNull
+ public AppSearchDocument build() {
+ // Build proto by sorting the keys in mProperties to exclude the influence of
+ // order. Therefore documents will generate same proto as long as the contents are
+ // same. Note that the order of repeated fields is still preserved.
+ ArrayList<String> keys = new ArrayList<>(mProperties.keySet());
+ Collections.sort(keys);
+ for (int i = 0; i < keys.size(); i++) {
+ String name = keys.get(i);
+ Object values = mProperties.get(name);
+ PropertyProto.Builder propertyProto = PropertyProto.newBuilder().setName(name);
+ if (values instanceof boolean[]) {
+ for (boolean value : (boolean[]) values) {
+ propertyProto.addBooleanValues(value);
+ }
+ } else if (values instanceof long[]) {
+ for (long value : (long[]) values) {
+ propertyProto.addInt64Values(value);
+ }
+ } else if (values instanceof double[]) {
+ for (double value : (double[]) values) {
+ propertyProto.addDoubleValues(value);
+ }
+ } else if (values instanceof String[]) {
+ for (String value : (String[]) values) {
+ propertyProto.addStringValues(value);
+ }
+ } else if (values instanceof AppSearchDocument[]) {
+ for (AppSearchDocument value : (AppSearchDocument[]) values) {
+ propertyProto.addDocumentValues(value.getProto());
+ }
+ } else if (values instanceof byte[][]) {
+ for (byte[] value : (byte[][]) values) {
+ propertyProto.addBytesValues(ByteString.copyFrom(value));
+ }
+ } else {
+ throw new IllegalStateException(
+ "Property \"" + name + "\" has unsupported value type \""
+ + values.getClass().getSimpleName() + "\"");
+ }
+ mProtoBuilder.addProperties(propertyProto);
+ }
+ return new AppSearchDocument(mProtoBuilder.build(), mProperties);
+ }
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java
new file mode 100644
index 0000000..b13dd9f
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchEmail.java
@@ -0,0 +1,256 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.appsearch.AppSearchSchema.PropertyConfig;
+
+/**
+ * Encapsulates a {@link AppSearchDocument} that represent an email.
+ *
+ * <p>This class is a higher level implement of {@link AppSearchDocument}.
+ *
+ * <p>This class will eventually migrate to Jetpack, where it will become public API.
+ *
+ * @hide
+ */
+public class AppSearchEmail extends AppSearchDocument {
+ private static final String KEY_FROM = "from";
+ private static final String KEY_TO = "to";
+ private static final String KEY_CC = "cc";
+ private static final String KEY_BCC = "bcc";
+ private static final String KEY_SUBJECT = "subject";
+ private static final String KEY_BODY = "body";
+
+ /** The name of the schema type for {@link AppSearchEmail} documents.*/
+ public static final String SCHEMA_TYPE = "builtin:Email";
+
+ public static final AppSearchSchema SCHEMA = new AppSearchSchema.Builder(SCHEMA_TYPE)
+ .addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_FROM)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_TO)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_CC)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_BCC)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_SUBJECT)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder(KEY_BODY)
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .build()
+
+ ).build();
+
+ /**
+ * Creates a new {@link AppSearchEmail} from the contents of an existing
+ * {@link AppSearchDocument}.
+ *
+ * @param document The {@link AppSearchDocument} containing the email content.
+ * @hide
+ */
+ public AppSearchEmail(@NonNull AppSearchDocument document) {
+ super(document);
+ }
+
+ /**
+ * Get the from address of {@link AppSearchEmail}.
+ *
+ * @return Returns the subject of {@link AppSearchEmail} or {@code null} if it's not been set
+ * yet.
+ * @hide
+ */
+ @Nullable
+ public String getFrom() {
+ return getPropertyString(KEY_FROM);
+ }
+
+ /**
+ * Get the destination addresses of {@link AppSearchEmail}.
+ *
+ * @return Returns the destination addresses of {@link AppSearchEmail} or {@code null} if it's
+ * not been set yet.
+ * @hide
+ */
+ @Nullable
+ public String[] getTo() {
+ return getPropertyStringArray(KEY_TO);
+ }
+
+ /**
+ * Get the CC list of {@link AppSearchEmail}.
+ *
+ * @return Returns the CC list of {@link AppSearchEmail} or {@code null} if it's not been set
+ * yet.
+ * @hide
+ */
+ @Nullable
+ public String[] getCc() {
+ return getPropertyStringArray(KEY_CC);
+ }
+
+ /**
+ * Get the BCC list of {@link AppSearchEmail}.
+ *
+ * @return Returns the BCC list of {@link AppSearchEmail} or {@code null} if it's not been set
+ * yet.
+ * @hide
+ */
+ @Nullable
+ public String[] getBcc() {
+ return getPropertyStringArray(KEY_BCC);
+ }
+
+ /**
+ * Get the subject of {@link AppSearchEmail}.
+ *
+ * @return Returns the value subject of {@link AppSearchEmail} or {@code null} if it's not been
+ * set yet.
+ * @hide
+ */
+ @Nullable
+ public String getSubject() {
+ return getPropertyString(KEY_SUBJECT);
+ }
+
+ /**
+ * Get the body of {@link AppSearchEmail}.
+ *
+ * @return Returns the body of {@link AppSearchEmail} or {@code null} if it's not been set yet.
+ * @hide
+ */
+ @Nullable
+ public String getBody() {
+ return getPropertyString(KEY_BODY);
+ }
+
+ /**
+ * The builder class for {@link AppSearchEmail}.
+ * @hide
+ */
+ public static class Builder extends AppSearchDocument.Builder<AppSearchEmail.Builder> {
+
+ /**
+ * Create a new {@link AppSearchEmail.Builder}
+ * @param uri The Uri of the Email.
+ * @hide
+ */
+ public Builder(@NonNull String uri) {
+ super(uri, SCHEMA_TYPE);
+ }
+
+ /**
+ * Set the from address of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setFrom(@NonNull String from) {
+ setProperty(KEY_FROM, from);
+ return this;
+ }
+
+ /**
+ * Set the destination address of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setTo(@NonNull String... to) {
+ setProperty(KEY_TO, to);
+ return this;
+ }
+
+ /**
+ * Set the CC list of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setCc(@NonNull String... cc) {
+ setProperty(KEY_CC, cc);
+ return this;
+ }
+
+ /**
+ * Set the BCC list of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setBcc(@NonNull String... bcc) {
+ setProperty(KEY_BCC, bcc);
+ return this;
+ }
+
+ /**
+ * Set the subject of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setSubject(@NonNull String subject) {
+ setProperty(KEY_SUBJECT, subject);
+ return this;
+ }
+
+ /**
+ * Set the body of {@link AppSearchEmail}
+ * @hide
+ */
+ @NonNull
+ public AppSearchEmail.Builder setBody(@NonNull String body) {
+ setProperty(KEY_BODY, body);
+ return this;
+ }
+
+ /**
+ * Builds the {@link AppSearchEmail} object.
+ *
+ * @hide
+ */
+ @NonNull
+ @Override
+ public AppSearchEmail build() {
+ return new AppSearchEmail(super.build());
+ }
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
new file mode 100644
index 0000000..f91773a
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManager.java
@@ -0,0 +1,363 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.os.RemoteException;
+
+import com.android.internal.infra.AndroidFuture;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.SearchSpecProto;
+import com.google.android.icing.proto.StatusProto;
+import com.google.android.icing.protobuf.InvalidProtocolBufferException;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+
+/**
+ * This class provides access to the centralized AppSearch index maintained by the system.
+ *
+ * <p>Apps can index structured text documents with AppSearch, which can then be retrieved through
+ * the query API.
+ *
+ * @hide
+ */
+// TODO(b/148046169): This class header needs a detailed example/tutorial.
+@SystemService(Context.APP_SEARCH_SERVICE)
+public class AppSearchManager {
+ private final IAppSearchManager mService;
+
+ /** @hide */
+ public AppSearchManager(@NonNull IAppSearchManager service) {
+ mService = service;
+ }
+
+ /**
+ * Sets the schema being used by documents provided to the {@link #putDocuments} method.
+ *
+ * <p>The schema provided here is compared to the stored copy of the schema previously supplied
+ * to {@link #setSchema}, if any, to determine how to treat existing documents. The following
+ * types of schema modifications are always safe and are made without deleting any existing
+ * documents:
+ * <ul>
+ * <li>Addition of new types
+ * <li>Addition of new
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL
+ * OPTIONAL} or
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REPEATED
+ * REPEATED} properties to a type
+ * <li>Changing the cardinality of a data type to be less restrictive (e.g. changing an
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL
+ * OPTIONAL} property into a
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REPEATED
+ * REPEATED} property.
+ * </ul>
+ *
+ * <p>The following types of schema changes are not backwards-compatible:
+ * <ul>
+ * <li>Removal of an existing type
+ * <li>Removal of a property from a type
+ * <li>Changing the data type ({@code boolean}, {@code long}, etc.) of an existing property
+ * <li>For properties of {@code AppSearchDocument} type, changing the schema type of
+ * {@code AppSearchDocument}s of that property
+ * <li>Changing the cardinality of a data type to be more restrictive (e.g. changing an
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_OPTIONAL
+ * OPTIONAL} property into a
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REQUIRED
+ * REQUIRED} property).
+ * <li>Adding a
+ * {@link android.app.appsearch.AppSearchSchema.PropertyConfig#CARDINALITY_REQUIRED
+ * REQUIRED} property.
+ * </ul>
+ * <p>Supplying a schema with such changes will result in this call returning an
+ * {@link AppSearchResult} with a code of {@link AppSearchResult#RESULT_INVALID_SCHEMA} and an
+ * error message describing the incompatibility. In this case the previously set schema will
+ * remain active.
+ *
+ * <p>If you need to make non-backwards-compatible changes as described above, instead use the
+ * {@link #setSchema(List, boolean)} method with the {@code forceOverride} parameter set to
+ * {@code true}.
+ *
+ * <p>It is a no-op to set the same schema as has been previously set; this is handled
+ * efficiently.
+ *
+ * @param schemas The schema configs for the types used by the calling app.
+ * @return the result of performing this operation.
+ *
+ * @hide
+ */
+ @NonNull
+ public AppSearchResult<Void> setSchema(@NonNull AppSearchSchema... schemas) {
+ return setSchema(Arrays.asList(schemas), /*forceOverride=*/false);
+ }
+
+ /**
+ * Sets the schema being used by documents provided to the {@link #putDocuments} method.
+ *
+ * <p>This method is similar to {@link #setSchema(AppSearchSchema...)}, except for the
+ * {@code forceOverride} parameter. If a backwards-incompatible schema is specified but the
+ * {@code forceOverride} parameter is set to {@code true}, instead of returning an
+ * {@link AppSearchResult} with the {@link AppSearchResult#RESULT_INVALID_SCHEMA} code, all
+ * documents which are not compatible with the new schema will be deleted and the incompatible
+ * schema will be applied.
+ *
+ * @param schemas The schema configs for the types used by the calling app.
+ * @param forceOverride Whether to force the new schema to be applied even if there are
+ * incompatible changes versus the previously set schema. Documents which are incompatible
+ * with the new schema will be deleted.
+ * @return the result of performing this operation.
+ *
+ * @hide
+ */
+ @NonNull
+ public AppSearchResult<Void> setSchema(
+ @NonNull List<AppSearchSchema> schemas, boolean forceOverride) {
+ // Prepare the merged schema for transmission.
+ SchemaProto.Builder schemaProtoBuilder = SchemaProto.newBuilder();
+ for (AppSearchSchema schema : schemas) {
+ schemaProtoBuilder.addTypes(schema.getProto());
+ }
+
+ // Serialize and send the schema.
+ // TODO: This should use com.android.internal.infra.RemoteStream or another mechanism to
+ // avoid binder limits.
+ byte[] schemaBytes = schemaProtoBuilder.build().toByteArray();
+ AndroidFuture<AppSearchResult> future = new AndroidFuture<>();
+ try {
+ mService.setSchema(schemaBytes, forceOverride, future);
+ } catch (RemoteException e) {
+ future.completeExceptionally(e);
+ }
+ return getFutureOrThrow(future);
+ }
+
+ /**
+ * Index {@link AppSearchDocument}s into AppSearch.
+ *
+ * <p>You should not call this method directly; instead, use the
+ * {@code AppSearch#putDocuments()} API provided by JetPack.
+ *
+ * <p>Each {@link AppSearchDocument}'s {@code schemaType} field must be set to the name of a
+ * schema type previously registered via the {@link #setSchema} method.
+ *
+ * @param documents {@link AppSearchDocument}s that need to be indexed.
+ * @return An {@link AppSearchBatchResult} mapping the document URIs to {@link Void} if they
+ * were successfully indexed, or a {@link Throwable} describing the failure if they could
+ * not be indexed.
+ * @hide
+ */
+ public AppSearchBatchResult<String, Void> putDocuments(
+ @NonNull List<AppSearchDocument> documents) {
+ // TODO(b/146386470): Transmit these documents as a RemoteStream instead of sending them in
+ // one big list.
+ List<byte[]> documentsBytes = new ArrayList<>(documents.size());
+ for (AppSearchDocument document : documents) {
+ documentsBytes.add(document.getProto().toByteArray());
+ }
+ AndroidFuture<AppSearchBatchResult> future = new AndroidFuture<>();
+ try {
+ mService.putDocuments(documentsBytes, future);
+ } catch (RemoteException e) {
+ future.completeExceptionally(e);
+ }
+ return getFutureOrThrow(future);
+ }
+
+ /**
+ * Retrieves {@link AppSearchDocument}s by URI.
+ *
+ * <p>You should not call this method directly; instead, use the
+ * {@code AppSearch#getDocuments()} API provided by JetPack.
+ *
+ * @param uris URIs of the documents to look up.
+ * @return An {@link AppSearchBatchResult} mapping the document URIs to
+ * {@link AppSearchDocument} values if they were successfully retrieved, a {@code null}
+ * failure if they were not found, or a {@link Throwable} failure describing the problem if
+ * an error occurred.
+ */
+ public AppSearchBatchResult<String, AppSearchDocument> getDocuments(
+ @NonNull List<String> uris) {
+ // TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
+ // them in one big list.
+ AndroidFuture<AppSearchBatchResult> future = new AndroidFuture<>();
+ try {
+ mService.getDocuments(uris, future);
+ } catch (RemoteException e) {
+ future.completeExceptionally(e);
+ }
+
+ // Deserialize the protos into Document objects
+ AppSearchBatchResult<String, byte[]> protoResults = getFutureOrThrow(future);
+ AppSearchBatchResult.Builder<String, AppSearchDocument> documentResultBuilder =
+ new AppSearchBatchResult.Builder<>();
+
+ // Translate successful results
+ for (Map.Entry<String, byte[]> protoResult : protoResults.getSuccesses().entrySet()) {
+ DocumentProto documentProto;
+ try {
+ documentProto = DocumentProto.parseFrom(protoResult.getValue());
+ } catch (InvalidProtocolBufferException e) {
+ documentResultBuilder.setFailure(
+ protoResult.getKey(), AppSearchResult.RESULT_IO_ERROR, e.getMessage());
+ continue;
+ }
+ AppSearchDocument document;
+ try {
+ document = new AppSearchDocument(documentProto);
+ } catch (Throwable t) {
+ // These documents went through validation, so how could this fail? We must have
+ // done something wrong.
+ documentResultBuilder.setFailure(
+ protoResult.getKey(),
+ AppSearchResult.RESULT_INTERNAL_ERROR,
+ t.getMessage());
+ continue;
+ }
+ documentResultBuilder.setSuccess(protoResult.getKey(), document);
+ }
+
+ // Translate failed results
+ for (Map.Entry<String, AppSearchResult<byte[]>> protoResult :
+ protoResults.getFailures().entrySet()) {
+ documentResultBuilder.setFailure(
+ protoResult.getKey(),
+ protoResult.getValue().getResultCode(),
+ protoResult.getValue().getErrorMessage());
+ }
+
+ return documentResultBuilder.build();
+ }
+
+ /**
+ * Searches a document based on a given query string.
+ *
+ * <p>You should not call this method directly; instead, use the {@code AppSearch#query()} API
+ * provided by JetPack.
+ *
+ * <p>Currently we support following features in the raw query format:
+ * <ul>
+ * <li>AND
+ * <p>AND joins (e.g. “match documents that have both the terms ‘dog’ and
+ * ‘cat’”).
+ * Example: hello world matches documents that have both ‘hello’ and ‘world’
+ * <li>OR
+ * <p>OR joins (e.g. “match documents that have either the term ‘dog’ or
+ * ‘cat’”).
+ * Example: dog OR puppy
+ * <li>Exclusion
+ * <p>Exclude a term (e.g. “match documents that do
+ * not have the term ‘dog’”).
+ * Example: -dog excludes the term ‘dog’
+ * <li>Grouping terms
+ * <p>Allow for conceptual grouping of subqueries to enable hierarchical structures (e.g.
+ * “match documents that have either ‘dog’ or ‘puppy’, and either ‘cat’ or ‘kitten’”).
+ * Example: (dog puppy) (cat kitten) two one group containing two terms.
+ * <li>Property restricts
+ * <p> Specifies which properties of a document to specifically match terms in (e.g.
+ * “match documents where the ‘subject’ property contains ‘important’”).
+ * Example: subject:important matches documents with the term ‘important’ in the
+ * ‘subject’ property
+ * <li>Schema type restricts
+ * <p>This is similar to property restricts, but allows for restricts on top-level document
+ * fields, such as schema_type. Clients should be able to limit their query to documents of
+ * a certain schema_type (e.g. “match documents that are of the ‘Email’ schema_type”).
+ * Example: { schema_type_filters: “Email”, “Video”,query: “dog” } will match documents
+ * that contain the query term ‘dog’ and are of either the ‘Email’ schema type or the
+ * ‘Video’ schema type.
+ * </ul>
+ *
+ * @param queryExpression Query String to search.
+ * @param searchSpec Spec for setting filters, raw query etc.
+ * @hide
+ */
+ @NonNull
+ public AppSearchResult<SearchResults> query(
+ @NonNull String queryExpression, @NonNull SearchSpec searchSpec) {
+ // TODO(b/146386470): Transmit the result documents as a RemoteStream instead of sending
+ // them in one big list.
+ AndroidFuture<AppSearchResult> searchResultFuture = new AndroidFuture<>();
+ try {
+ SearchSpecProto searchSpecProto = searchSpec.getSearchSpecProto();
+ searchSpecProto = searchSpecProto.toBuilder().setQuery(queryExpression).build();
+ mService.query(
+ searchSpecProto.toByteArray(),
+ searchSpec.getResultSpecProto().toByteArray(),
+ searchSpec.getScoringSpecProto().toByteArray(),
+ searchResultFuture);
+ } catch (RemoteException e) {
+ searchResultFuture.completeExceptionally(e);
+ }
+
+ // Deserialize the protos into Document objects
+ AppSearchResult<byte[]> searchResultBytes = getFutureOrThrow(searchResultFuture);
+ if (!searchResultBytes.isSuccess()) {
+ return AppSearchResult.newFailedResult(
+ searchResultBytes.getResultCode(), searchResultBytes.getErrorMessage());
+ }
+ SearchResultProto searchResultProto;
+ try {
+ searchResultProto = SearchResultProto.parseFrom(searchResultBytes.getResultValue());
+ } catch (InvalidProtocolBufferException e) {
+ return AppSearchResult.newFailedResult(
+ AppSearchResult.RESULT_INTERNAL_ERROR, e.getMessage());
+ }
+ if (searchResultProto.getStatus().getCode() != StatusProto.Code.OK) {
+ // This should never happen; AppSearchManagerService should catch failed searchResults
+ // entries and transmit them as a failed AppSearchResult.
+ return AppSearchResult.newFailedResult(
+ AppSearchResult.RESULT_INTERNAL_ERROR,
+ searchResultProto.getStatus().getMessage());
+ }
+
+ return AppSearchResult.newSuccessfulResult(new SearchResults(searchResultProto));
+ }
+
+ /** Deletes all documents owned by the calling app. */
+ public AppSearchResult<Void> deleteAll() {
+ AndroidFuture<AppSearchResult> future = new AndroidFuture<>();
+ try {
+ mService.deleteAll(future);
+ } catch (RemoteException e) {
+ future.completeExceptionally(e);
+ }
+ return getFutureOrThrow(future);
+ }
+
+ private static <T> T getFutureOrThrow(@NonNull AndroidFuture<T> future) {
+ try {
+ return future.get();
+ } catch (Throwable e) {
+ if (e instanceof ExecutionException) {
+ e = e.getCause();
+ }
+ if (e instanceof RuntimeException) {
+ throw (RuntimeException) e;
+ }
+ if (e instanceof Error) {
+ throw (Error) e;
+ }
+ throw new RuntimeException(e);
+ }
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java
new file mode 100644
index 0000000..02cc967
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchManagerFrameworkInitializer.java
@@ -0,0 +1,43 @@
+/*
+ * 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.app.appsearch;
+
+import android.annotation.SystemApi;
+import android.app.SystemServiceRegistry;
+import android.content.Context;
+
+/**
+ * Class holding initialization code for the AppSearch module.
+ *
+ * @hide
+ */
+@SystemApi
+public class AppSearchManagerFrameworkInitializer {
+ private AppSearchManagerFrameworkInitializer() {}
+
+ /**
+ * Called by {@link SystemServiceRegistry}'s static initializer and registers all AppSearch
+ * services to {@link Context}, so that {@link Context#getSystemService} can return them.
+ *
+ * @throws IllegalStateException if this is called from anywhere besides
+ * {@link SystemServiceRegistry}
+ */
+ public static void initialize() {
+ SystemServiceRegistry.registerStaticService(
+ Context.APP_SEARCH_SERVICE, AppSearchManager.class,
+ (service) -> new AppSearchManager(IAppSearchManager.Stub.asInterface(service)));
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
new file mode 100644
index 0000000..7f38348
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchResult.java
@@ -0,0 +1,215 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * Information about the success or failure of an AppSearch call.
+ *
+ * @param <ValueType> The type of result object for successful calls.
+ * @hide
+ */
+public class AppSearchResult<ValueType> implements Parcelable {
+ /** Result codes from {@link AppSearchManager} methods. */
+ @IntDef(prefix = {"RESULT_"}, value = {
+ RESULT_OK,
+ RESULT_UNKNOWN_ERROR,
+ RESULT_INTERNAL_ERROR,
+ RESULT_INVALID_ARGUMENT,
+ RESULT_IO_ERROR,
+ RESULT_OUT_OF_SPACE,
+ RESULT_NOT_FOUND,
+ RESULT_INVALID_SCHEMA,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface ResultCode {}
+
+ /** The call was successful. */
+ public static final int RESULT_OK = 0;
+
+ /** An unknown error occurred while processing the call. */
+ public static final int RESULT_UNKNOWN_ERROR = 1;
+
+ /**
+ * An internal error occurred within AppSearch, which the caller cannot address.
+ *
+ * This error may be considered similar to {@link IllegalStateException}
+ */
+ public static final int RESULT_INTERNAL_ERROR = 2;
+
+ /**
+ * The caller supplied invalid arguments to the call.
+ *
+ * This error may be considered similar to {@link IllegalArgumentException}.
+ */
+ public static final int RESULT_INVALID_ARGUMENT = 3;
+
+ /**
+ * An issue occurred reading or writing to storage. The call might succeed if repeated.
+ *
+ * This error may be considered similar to {@link java.io.IOException}.
+ */
+ public static final int RESULT_IO_ERROR = 4;
+
+ /** Storage is out of space, and no more space could be reclaimed. */
+ public static final int RESULT_OUT_OF_SPACE = 5;
+
+ /** An entity the caller requested to interact with does not exist in the system. */
+ public static final int RESULT_NOT_FOUND = 6;
+
+ /** The caller supplied a schema which is invalid or incompatible with the previous schema. */
+ public static final int RESULT_INVALID_SCHEMA = 7;
+
+ private final @ResultCode int mResultCode;
+ @Nullable private final ValueType mResultValue;
+ @Nullable private final String mErrorMessage;
+
+ private AppSearchResult(
+ @ResultCode int resultCode,
+ @Nullable ValueType resultValue,
+ @Nullable String errorMessage) {
+ mResultCode = resultCode;
+ mResultValue = resultValue;
+ mErrorMessage = errorMessage;
+ }
+
+ private AppSearchResult(@NonNull Parcel in) {
+ mResultCode = in.readInt();
+ mResultValue = (ValueType) in.readValue(/*loader=*/ null);
+ mErrorMessage = in.readString();
+ }
+
+ @Override
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ dest.writeInt(mResultCode);
+ dest.writeValue(mResultValue);
+ dest.writeString(mErrorMessage);
+ }
+
+ /** Returns {@code true} if {@link #getResultCode} equals {@link AppSearchResult#RESULT_OK}. */
+ public boolean isSuccess() {
+ return getResultCode() == RESULT_OK;
+ }
+
+ /** Returns one of the {@code RESULT} constants defined in {@link AppSearchResult}. */
+ public @ResultCode int getResultCode() {
+ return mResultCode;
+ }
+
+ /**
+ * Returns the returned value associated with this result.
+ *
+ * <p>If {@link #isSuccess} is {@code false}, the result value is always {@code null}. The value
+ * may be {@code null} even if {@link #isSuccess} is {@code true}. See the documentation of the
+ * particular {@link AppSearchManager} call producing this {@link AppSearchResult} for what is
+ * returned by {@link #getResultValue}.
+ */
+ @Nullable
+ public ValueType getResultValue() {
+ return mResultValue;
+ }
+
+ /**
+ * Returns the error message associated with this result.
+ *
+ * <p>If {@link #isSuccess} is {@code true}, the error message is always {@code null}. The error
+ * message may be {@code null} even if {@link #isSuccess} is {@code false}. See the
+ * documentation of the particular {@link AppSearchManager} call producing this
+ * {@link AppSearchResult} for what is returned by {@link #getErrorMessage}.
+ */
+ @Nullable
+ public String getErrorMessage() {
+ return mErrorMessage;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ if (this == other) {
+ return true;
+ }
+ if (!(other instanceof AppSearchResult)) {
+ return false;
+ }
+ AppSearchResult<?> otherResult = (AppSearchResult) other;
+ return mResultCode == otherResult.mResultCode
+ && Objects.equals(mResultValue, otherResult.mResultValue)
+ && Objects.equals(mErrorMessage, otherResult.mErrorMessage);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mResultCode, mResultValue, mErrorMessage);
+ }
+
+ @Override
+ @NonNull
+ public String toString() {
+ if (isSuccess()) {
+ return "AppSearchResult [SUCCESS]: " + mResultValue;
+ }
+ return "AppSearchResult [FAILURE(" + mResultCode + ")]: " + mErrorMessage;
+ }
+
+ @Override
+ public int describeContents() {
+ return 0;
+ }
+
+ public static final Creator<AppSearchResult> CREATOR =
+ new Creator<AppSearchResult>() {
+ @NonNull
+ @Override
+ public AppSearchResult createFromParcel(@NonNull Parcel in) {
+ return new AppSearchResult(in);
+ }
+
+ @NonNull
+ @Override
+ public AppSearchResult[] newArray(int size) {
+ return new AppSearchResult[size];
+ }
+ };
+
+ /**
+ * Creates a new successful {@link AppSearchResult}.
+ * @hide
+ */
+ @NonNull
+ public static <ValueType> AppSearchResult<ValueType> newSuccessfulResult(
+ @Nullable ValueType value) {
+ return new AppSearchResult<>(RESULT_OK, value, /*errorMessage=*/ null);
+ }
+
+ /**
+ * Creates a new failed {@link AppSearchResult}.
+ * @hide
+ */
+ @NonNull
+ public static <ValueType> AppSearchResult<ValueType> newFailedResult(
+ @ResultCode int resultCode, @Nullable String errorMessage) {
+ return new AppSearchResult<>(resultCode, /*resultValue=*/ null, errorMessage);
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/AppSearchSchema.java b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSchema.java
new file mode 100644
index 0000000..4b0b41b
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/AppSearchSchema.java
@@ -0,0 +1,359 @@
+/*
+ * 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.app.appsearch;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.util.ArraySet;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
+import com.google.android.icing.proto.TermMatchType;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Set;
+
+/**
+ * The AppSearch Schema for a particular type of document.
+ *
+ * <p>For example, an e-mail message or a music recording could be a schema type.
+ *
+ * <p>The schema consists of type information, properties, and config (like tokenization type).
+ *
+ * @hide
+ */
+public final class AppSearchSchema {
+ private final SchemaTypeConfigProto mProto;
+
+ private AppSearchSchema(SchemaTypeConfigProto proto) {
+ mProto = proto;
+ }
+
+ /**
+ * Returns the {@link SchemaTypeConfigProto} populated by this builder.
+ * @hide
+ */
+ @NonNull
+ @VisibleForTesting
+ public SchemaTypeConfigProto getProto() {
+ return mProto;
+ }
+
+ @Override
+ public String toString() {
+ return mProto.toString();
+ }
+
+ /** Builder for {@link AppSearchSchema objects}. */
+ public static final class Builder {
+ private final SchemaTypeConfigProto.Builder mProtoBuilder =
+ SchemaTypeConfigProto.newBuilder();
+
+ /** Creates a new {@link AppSearchSchema.Builder}. */
+ public Builder(@NonNull String typeName) {
+ mProtoBuilder.setSchemaType(typeName);
+ }
+
+ /** Adds a property to the given type. */
+ @NonNull
+ public AppSearchSchema.Builder addProperty(@NonNull PropertyConfig propertyConfig) {
+ mProtoBuilder.addProperties(propertyConfig.mProto);
+ return this;
+ }
+
+ /**
+ * Constructs a new {@link AppSearchSchema} from the contents of this builder.
+ *
+ * <p>After calling this method, the builder must no longer be used.
+ */
+ @NonNull
+ public AppSearchSchema build() {
+ Set<String> propertyNames = new ArraySet<>();
+ for (PropertyConfigProto propertyConfigProto : mProtoBuilder.getPropertiesList()) {
+ if (!propertyNames.add(propertyConfigProto.getPropertyName())) {
+ throw new IllegalSchemaException(
+ "Property defined more than once: "
+ + propertyConfigProto.getPropertyName());
+ }
+ }
+ return new AppSearchSchema(mProtoBuilder.build());
+ }
+ }
+
+ /**
+ * Configuration for a single property (field) of a document type.
+ *
+ * <p>For example, an {@code EmailMessage} would be a type and the {@code subject} would be
+ * a property.
+ */
+ public static final class PropertyConfig {
+ /** Physical data-types of the contents of the property. */
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // com.google.android.icing.proto.PropertyConfigProto.DataType.Code.
+ @IntDef(prefix = {"DATA_TYPE_"}, value = {
+ DATA_TYPE_STRING,
+ DATA_TYPE_INT64,
+ DATA_TYPE_DOUBLE,
+ DATA_TYPE_BOOLEAN,
+ DATA_TYPE_BYTES,
+ DATA_TYPE_DOCUMENT,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface DataType {}
+
+ public static final int DATA_TYPE_STRING = 1;
+ public static final int DATA_TYPE_INT64 = 2;
+ public static final int DATA_TYPE_DOUBLE = 3;
+ public static final int DATA_TYPE_BOOLEAN = 4;
+
+ /** Unstructured BLOB. */
+ public static final int DATA_TYPE_BYTES = 5;
+
+ /**
+ * Indicates that the property itself is an Document, making it part a hierarchical
+ * Document schema. Any property using this DataType MUST have a valid
+ * {@code schemaType}.
+ */
+ public static final int DATA_TYPE_DOCUMENT = 6;
+
+ /** The cardinality of the property (whether it is required, optional or repeated). */
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // com.google.android.icing.proto.PropertyConfigProto.Cardinality.Code.
+ @IntDef(prefix = {"CARDINALITY_"}, value = {
+ CARDINALITY_REPEATED,
+ CARDINALITY_OPTIONAL,
+ CARDINALITY_REQUIRED,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface Cardinality {}
+
+ /** Any number of items (including zero) [0...*]. */
+ public static final int CARDINALITY_REPEATED = 1;
+
+ /** Zero or one value [0,1]. */
+ public static final int CARDINALITY_OPTIONAL = 2;
+
+ /** Exactly one value [1]. */
+ public static final int CARDINALITY_REQUIRED = 3;
+
+ /** Encapsulates the configurations on how AppSearch should query/index these terms. */
+ @IntDef(prefix = {"INDEXING_TYPE_"}, value = {
+ INDEXING_TYPE_NONE,
+ INDEXING_TYPE_EXACT_TERMS,
+ INDEXING_TYPE_PREFIXES,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface IndexingType {}
+
+ /**
+ * Content in this property will not be tokenized or indexed.
+ *
+ * <p>Useful if the data type is not made up of terms (e.g.
+ * {@link PropertyConfig#DATA_TYPE_DOCUMENT} or {@link PropertyConfig#DATA_TYPE_BYTES}
+ * type). All the properties inside the nested property won't be indexed regardless of the
+ * value of {@code indexingType} for the nested properties.
+ */
+ public static final int INDEXING_TYPE_NONE = 0;
+
+ /**
+ * Content in this property should only be returned for queries matching the exact tokens
+ * appearing in this property.
+ *
+ * <p>Ex. A property with "fool" should NOT match a query for "foo".
+ */
+ public static final int INDEXING_TYPE_EXACT_TERMS = 1;
+
+ /**
+ * Content in this property should be returned for queries that are either exact matches or
+ * query matches of the tokens appearing in this property.
+ *
+ * <p>Ex. A property with "fool" <b>should</b> match a query for "foo".
+ */
+ public static final int INDEXING_TYPE_PREFIXES = 2;
+
+ /** Configures how tokens should be extracted from this property. */
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // com.google.android.icing.proto.IndexingConfig.TokenizerType.Code.
+ @IntDef(prefix = {"TOKENIZER_TYPE_"}, value = {
+ TOKENIZER_TYPE_NONE,
+ TOKENIZER_TYPE_PLAIN,
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface TokenizerType {}
+
+ /**
+ * It is only valid for tokenizer_type to be 'NONE' if the data type is
+ * {@link PropertyConfig#DATA_TYPE_DOCUMENT}.
+ */
+ public static final int TOKENIZER_TYPE_NONE = 0;
+
+ /** Tokenization for plain text. */
+ public static final int TOKENIZER_TYPE_PLAIN = 1;
+
+ private final PropertyConfigProto mProto;
+
+ private PropertyConfig(PropertyConfigProto proto) {
+ mProto = proto;
+ }
+
+ @Override
+ public String toString() {
+ return mProto.toString();
+ }
+
+ /**
+ * Builder for {@link PropertyConfig}.
+ *
+ * <p>The following properties must be set, or {@link PropertyConfig} construction will
+ * fail:
+ * <ul>
+ * <li>dataType
+ * <li>cardinality
+ * </ul>
+ *
+ * <p>In addition, if {@code schemaType} is {@link #DATA_TYPE_DOCUMENT}, {@code schemaType}
+ * is also required.
+ */
+ public static final class Builder {
+ private final PropertyConfigProto.Builder mPropertyConfigProto =
+ PropertyConfigProto.newBuilder();
+ private final com.google.android.icing.proto.IndexingConfig.Builder
+ mIndexingConfigProto =
+ com.google.android.icing.proto.IndexingConfig.newBuilder();
+
+ /** Creates a new {@link PropertyConfig.Builder}. */
+ public Builder(@NonNull String propertyName) {
+ mPropertyConfigProto.setPropertyName(propertyName);
+ }
+
+ /**
+ * Type of data the property contains (e.g. string, int, bytes, etc).
+ *
+ * <p>This property must be set.
+ */
+ @NonNull
+ public PropertyConfig.Builder setDataType(@DataType int dataType) {
+ PropertyConfigProto.DataType.Code dataTypeProto =
+ PropertyConfigProto.DataType.Code.forNumber(dataType);
+ if (dataTypeProto == null) {
+ throw new IllegalArgumentException("Invalid dataType: " + dataType);
+ }
+ mPropertyConfigProto.setDataType(dataTypeProto);
+ return this;
+ }
+
+ /**
+ * The logical schema-type of the contents of this property.
+ *
+ * <p>Only required when {@link #setDataType(int)} is set to
+ * {@link #DATA_TYPE_DOCUMENT}. Otherwise, it is ignored.
+ */
+ @NonNull
+ public PropertyConfig.Builder setSchemaType(@NonNull String schemaType) {
+ mPropertyConfigProto.setSchemaType(schemaType);
+ return this;
+ }
+
+ /**
+ * The cardinality of the property (whether it is optional, required or repeated).
+ *
+ * <p>This property must be set.
+ */
+ @NonNull
+ public PropertyConfig.Builder setCardinality(@Cardinality int cardinality) {
+ PropertyConfigProto.Cardinality.Code cardinalityProto =
+ PropertyConfigProto.Cardinality.Code.forNumber(cardinality);
+ if (cardinalityProto == null) {
+ throw new IllegalArgumentException("Invalid cardinality: " + cardinality);
+ }
+ mPropertyConfigProto.setCardinality(cardinalityProto);
+ return this;
+ }
+
+ /**
+ * Configures how a property should be indexed so that it can be retrieved by queries.
+ */
+ @NonNull
+ public PropertyConfig.Builder setIndexingType(@IndexingType int indexingType) {
+ TermMatchType.Code termMatchTypeProto;
+ switch (indexingType) {
+ case INDEXING_TYPE_NONE:
+ termMatchTypeProto = TermMatchType.Code.UNKNOWN;
+ break;
+ case INDEXING_TYPE_EXACT_TERMS:
+ termMatchTypeProto = TermMatchType.Code.EXACT_ONLY;
+ break;
+ case INDEXING_TYPE_PREFIXES:
+ termMatchTypeProto = TermMatchType.Code.PREFIX;
+ break;
+ default:
+ throw new IllegalArgumentException("Invalid indexingType: " + indexingType);
+ }
+ mIndexingConfigProto.setTermMatchType(termMatchTypeProto);
+ return this;
+ }
+
+ /** Configures how this property should be tokenized (split into words). */
+ @NonNull
+ public PropertyConfig.Builder setTokenizerType(@TokenizerType int tokenizerType) {
+ com.google.android.icing.proto.IndexingConfig.TokenizerType.Code
+ tokenizerTypeProto =
+ com.google.android.icing.proto.IndexingConfig
+ .TokenizerType.Code.forNumber(tokenizerType);
+ if (tokenizerTypeProto == null) {
+ throw new IllegalArgumentException("Invalid tokenizerType: " + tokenizerType);
+ }
+ mIndexingConfigProto.setTokenizerType(tokenizerTypeProto);
+ return this;
+ }
+
+ /**
+ * Constructs a new {@link PropertyConfig} from the contents of this builder.
+ *
+ * <p>After calling this method, the builder must no longer be used.
+ *
+ * @throws IllegalSchemaException If the property is not correctly populated (e.g.
+ * missing {@code dataType}).
+ */
+ @NonNull
+ public PropertyConfig build() {
+ mPropertyConfigProto.setIndexingConfig(mIndexingConfigProto);
+ // TODO(b/147692920): Send the schema to Icing Lib for official validation, instead
+ // of partially reimplementing some of the validation Icing does here.
+ if (mPropertyConfigProto.getDataType()
+ == PropertyConfigProto.DataType.Code.UNKNOWN) {
+ throw new IllegalSchemaException("Missing field: dataType");
+ }
+ if (mPropertyConfigProto.getSchemaType().isEmpty()
+ && mPropertyConfigProto.getDataType()
+ == PropertyConfigProto.DataType.Code.DOCUMENT) {
+ throw new IllegalSchemaException(
+ "Missing field: schemaType (required for configs with "
+ + "dataType = DOCUMENT)");
+ }
+ if (mPropertyConfigProto.getCardinality()
+ == PropertyConfigProto.Cardinality.Code.UNKNOWN) {
+ throw new IllegalSchemaException("Missing field: cardinality");
+ }
+ return new PropertyConfig(mPropertyConfigProto.build());
+ }
+ }
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
new file mode 100644
index 0000000..b559c7d
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/IAppSearchManager.aidl
@@ -0,0 +1,83 @@
+/**
+ * Copyright 2020, The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package android.app.appsearch;
+
+import com.android.internal.infra.AndroidFuture;
+
+parcelable AppSearchResult;
+parcelable AppSearchBatchResult;
+
+/** {@hide} */
+interface IAppSearchManager {
+ /**
+ * Sets the schema.
+ *
+ * @param schemaBytes Serialized SchemaProto.
+ * @param forceOverride Whether to apply the new schema even if it is incompatible. All
+ * incompatible documents will be deleted.
+ * @param callback {@link AndroidFuture}<{@link AppSearchResult}<{@link Void}>>.
+ * The results of the call.
+ */
+ void setSchema(
+ in byte[] schemaBytes, boolean forceOverride, in AndroidFuture<AppSearchResult> callback);
+
+ /**
+ * Inserts documents into the index.
+ *
+ * @param documentsBytes {@link List}<byte[]> of serialized DocumentProtos.
+ * @param callback
+ * {@link AndroidFuture}<{@link AppSearchBatchResult}<{@link String}, {@link Void}>>.
+ * If the call fails to start, {@code callback} will be completed exceptionally. Otherwise,
+ * {@code callback} will be completed with an
+ * {@link AppSearchBatchResult}<{@link String}, {@link Void}>
+ * where the keys are document URIs, and the values are {@code null}.
+ */
+ void putDocuments(in List documentsBytes, in AndroidFuture<AppSearchBatchResult> callback);
+
+ /**
+ * Retrieves documents from the index.
+ *
+ * @param uris The URIs of the documents to retrieve
+ * @param callback
+ * {@link AndroidFuture}<{@link AppSearchBatchResult}<{@link String}, {@link byte[]}>>.
+ * If the call fails to start, {@code callback} will be completed exceptionally. Otherwise,
+ * {@code callback} will be completed with an
+ * {@link AppSearchBatchResult}<{@link String}, {@link byte[]}>
+ * where the keys are document URIs, and the values are serialized Document protos.
+ */
+ void getDocuments(in List<String> uris, in AndroidFuture<AppSearchBatchResult> callback);
+
+ /**
+ * Searches a document based on a given specifications.
+ *
+ * @param searchSpecBytes Serialized SearchSpecProto.
+ * @param resultSpecBytes Serialized SearchResultsProto.
+ * @param scoringSpecBytes Serialized ScoringSpecProto.
+ * @param callback {@link AndroidFuture}<{@link AppSearchResult}<{@link byte[]}>>
+ * Will be completed with a serialized {@link SearchResultsProto}.
+ */
+ void query(
+ in byte[] searchSpecBytes, in byte[] resultSpecBytes, in byte[] scoringSpecBytes,
+ in AndroidFuture<AppSearchResult> callback);
+
+ /**
+ * Deletes all documents belonging to the calling app.
+ *
+ * @param callback {@link AndroidFuture}<{@link AppSearchResult}<{@link Void}>>.
+ * Will be completed with the result of the call.
+ */
+ void deleteAll(in AndroidFuture<AppSearchResult> callback);
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IllegalSchemaException.java b/apex/appsearch/framework/java/android/app/appsearch/IllegalSchemaException.java
new file mode 100644
index 0000000..f9e528c
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/IllegalSchemaException.java
@@ -0,0 +1,36 @@
+/*
+ * 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.app.appsearch;
+
+import android.annotation.NonNull;
+
+/**
+ * Indicates that a {@link android.app.appsearch.AppSearchSchema} has logical inconsistencies such
+ * as unpopulated mandatory fields or illegal combinations of parameters.
+ *
+ * @hide
+ */
+public class IllegalSchemaException extends IllegalArgumentException {
+ /**
+ * Constructs a new {@link IllegalSchemaException}.
+ *
+ * @param message A developer-readable description of the issue with the bundle.
+ */
+ public IllegalSchemaException(@NonNull String message) {
+ super(message);
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/IllegalSearchSpecException.java b/apex/appsearch/framework/java/android/app/appsearch/IllegalSearchSpecException.java
new file mode 100644
index 0000000..0d029f0
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/IllegalSearchSpecException.java
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+
+/**
+ * Indicates that a {@link android.app.appsearch.SearchResults} has logical inconsistencies such
+ * as unpopulated mandatory fields or illegal combinations of parameters.
+ *
+ * @hide
+ */
+public class IllegalSearchSpecException extends IllegalArgumentException {
+ /**
+ * Constructs a new {@link IllegalSearchSpecException}.
+ *
+ * @param message A developer-readable description of the issue with the bundle.
+ */
+ public IllegalSearchSpecException(@NonNull String message) {
+ super(message);
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/MatchInfo.java b/apex/appsearch/framework/java/android/app/appsearch/MatchInfo.java
new file mode 100644
index 0000000..5ce2960
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/MatchInfo.java
@@ -0,0 +1,182 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+import android.util.Range;
+
+import com.google.android.icing.proto.SnippetMatchProto;
+
+/**
+ * Snippet: It refers to a substring of text from the content of document that is returned as a
+ * part of search result.
+ * This class represents a match objects for any Snippets that might be present in
+ * {@link SearchResults} from query. Using this class user can get the full text, exact matches and
+ * Snippets of document content for a given match.
+ *
+ * <p>Class Example 1:
+ * A document contains following text in property subject:
+ * <p>A commonly used fake word is foo. Another nonsense word that’s used a lot is bar.
+ *
+ * <p>If the queryExpression is "foo".
+ *
+ * <p>{@link MatchInfo#getPropertyPath()} returns "subject"
+ * <p>{@link MatchInfo#getFullText()} returns "A commonly used fake word is foo. Another nonsense
+ * word that’s used a lot is bar."
+ * <p>{@link MatchInfo#getExactMatchPosition()} returns [29, 32]
+ * <p>{@link MatchInfo#getExactMatch()} returns "foo"
+ * <p>{@link MatchInfo#getSnippetPosition()} returns [29, 41]
+ * <p>{@link MatchInfo#getSnippet()} returns "is foo. Another"
+ * <p>
+ * <p>Class Example 2:
+ * A document contains a property name sender which contains 2 property names name and email, so
+ * we will have 2 property paths: {@code sender.name} and {@code sender.email}.
+ * <p> Let {@code sender.name = "Test Name Jr."} and {@code sender.email = "TestNameJr@gmail.com"}
+ *
+ * <p>If the queryExpression is "Test". We will have 2 matches.
+ *
+ * <p> Match-1
+ * <p>{@link MatchInfo#getPropertyPath()} returns "sender.name"
+ * <p>{@link MatchInfo#getFullText()} returns "Test Name Jr."
+ * <p>{@link MatchInfo#getExactMatchPosition()} returns [0, 4]
+ * <p>{@link MatchInfo#getExactMatch()} returns "Test"
+ * <p>{@link MatchInfo#getSnippetPosition()} returns [0, 9]
+ * <p>{@link MatchInfo#getSnippet()} returns "Test Name Jr."
+ * <p> Match-2
+ * <p>{@link MatchInfo#getPropertyPath()} returns "sender.email"
+ * <p>{@link MatchInfo#getFullText()} returns "TestNameJr@gmail.com"
+ * <p>{@link MatchInfo#getExactMatchPosition()} returns [0, 20]
+ * <p>{@link MatchInfo#getExactMatch()} returns "TestNameJr@gmail.com"
+ * <p>{@link MatchInfo#getSnippetPosition()} returns [0, 20]
+ * <p>{@link MatchInfo#getSnippet()} returns "TestNameJr@gmail.com"
+ * @hide
+ */
+// TODO(sidchhabra): Capture real snippet after integration with icingLib.
+public final class MatchInfo {
+
+ private final String mPropertyPath;
+ private final SnippetMatchProto mSnippetMatch;
+ private final AppSearchDocument mDocument;
+ /**
+ * List of content with same property path in a document when there are multiple matches in
+ * repeated sections.
+ */
+ private final String[] mValues;
+
+ /** @hide */
+ public MatchInfo(@NonNull String propertyPath, @NonNull SnippetMatchProto snippetMatch,
+ @NonNull AppSearchDocument document) {
+ mPropertyPath = propertyPath;
+ mSnippetMatch = snippetMatch;
+ mDocument = document;
+ // In IcingLib snippeting is available for only 3 data types i.e String, double and long,
+ // so we need to check which of these three are requested.
+ // TODO (sidchhabra): getPropertyStringArray takes property name, handle for property path.
+ String[] values = mDocument.getPropertyStringArray(propertyPath);
+ if (values == null) {
+ values = doubleToString(mDocument.getPropertyDoubleArray(propertyPath));
+ }
+ if (values == null) {
+ values = longToString(mDocument.getPropertyLongArray(propertyPath));
+ }
+ if (values == null) {
+ throw new IllegalStateException("No content found for requested property path!");
+ }
+ mValues = values;
+ }
+
+ /**
+ * Gets the property path corresponding to the given entry.
+ * <p>Property Path: '.' - delimited sequence of property names indicating which property in
+ * the Document these snippets correspond to.
+ * <p>Example properties: 'body', 'sender.name', 'sender.emailaddress', etc.
+ * For class example 1 this returns "subject"
+ */
+ @NonNull
+ public String getPropertyPath() {
+ return mPropertyPath;
+ }
+
+ /**
+ * Gets the full text corresponding to the given entry.
+ * <p>For class example this returns "A commonly used fake word is foo. Another nonsense word
+ * that’s used a lot is bar."
+ */
+ @NonNull
+ public String getFullText() {
+ return mValues[mSnippetMatch.getValuesIndex()];
+ }
+
+ /**
+ * Gets the exact match range corresponding to the given entry.
+ * <p>For class example 1 this returns [29, 32]
+ */
+ @NonNull
+ public Range getExactMatchPosition() {
+ return new Range(mSnippetMatch.getExactMatchPosition(),
+ mSnippetMatch.getExactMatchPosition() + mSnippetMatch.getExactMatchBytes());
+ }
+
+ /**
+ * Gets the exact match corresponding to the given entry.
+ * <p>For class example 1 this returns "foo"
+ */
+ @NonNull
+ public CharSequence getExactMatch() {
+ return getSubstring(getExactMatchPosition());
+ }
+
+ /**
+ * Gets the snippet range corresponding to the given entry.
+ * <p>For class example 1 this returns [29, 41]
+ */
+ @NonNull
+ public Range getSnippetPosition() {
+ return new Range(mSnippetMatch.getWindowPosition(),
+ mSnippetMatch.getWindowPosition() + mSnippetMatch.getWindowBytes());
+ }
+
+ /**
+ * Gets the snippet corresponding to the given entry.
+ * <p>Snippet - Provides a subset of the content to display. The
+ * length of this content can be changed {@link SearchSpec.Builder#setMaxSnippetSize(int)}.
+ * Windowing is centered around the middle of the matched token with content on either side
+ * clipped to token boundaries.
+ * <p>For class example 1 this returns "foo. Another"
+ */
+ @NonNull
+ public CharSequence getSnippet() {
+ return getSubstring(getSnippetPosition());
+ }
+
+ private CharSequence getSubstring(Range range) {
+ return getFullText()
+ .substring((int) range.getLower(), (int) range.getUpper());
+ }
+
+ /** Utility method to convert double[] to String[] */
+ private String[] doubleToString(double[] values) {
+ //TODO(sidchhabra): Implement the method.
+ return null;
+ }
+
+ /** Utility method to convert long[] to String[] */
+ private String[] longToString(long[] values) {
+ //TODO(sidchhabra): Implement the method.
+ return null;
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java b/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java
new file mode 100644
index 0000000..7287fe6
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/SearchResults.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.SnippetMatchProto;
+import com.google.android.icing.proto.SnippetProto;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+import java.util.NoSuchElementException;
+
+/**
+ * SearchResults are a list of results that are returned from a query. Each result from this
+ * list contains a document and may contain other fields like snippets based on request.
+ * This iterator class is not thread safe.
+ * @hide
+ */
+public final class SearchResults implements Iterator<SearchResults.Result> {
+
+ private final SearchResultProto mSearchResultProto;
+ private int mNextIdx;
+
+ /** @hide */
+ public SearchResults(SearchResultProto searchResultProto) {
+ mSearchResultProto = searchResultProto;
+ }
+
+ @Override
+ public boolean hasNext() {
+ return mNextIdx < mSearchResultProto.getResultsCount();
+ }
+
+ @NonNull
+ @Override
+ public Result next() {
+ if (!hasNext()) {
+ throw new NoSuchElementException();
+ }
+ Result result = new Result(mSearchResultProto.getResults(mNextIdx));
+ mNextIdx++;
+ return result;
+ }
+
+
+
+ /**
+ * This class represents the result obtained from the query. It will contain the document which
+ * which matched the specified query string and specifications.
+ * @hide
+ */
+ public static final class Result {
+ private final SearchResultProto.ResultProto mResultProto;
+
+ @Nullable
+ private AppSearchDocument mDocument;
+
+ private Result(SearchResultProto.ResultProto resultProto) {
+ mResultProto = resultProto;
+ }
+
+ /**
+ * Contains the matching {@link AppSearchDocument}.
+ * @return Document object which matched the query.
+ * @hide
+ */
+ @NonNull
+ public AppSearchDocument getDocument() {
+ if (mDocument == null) {
+ mDocument = new AppSearchDocument(mResultProto.getDocument());
+ }
+ return mDocument;
+ }
+
+ /**
+ * Contains a list of Snippets that matched the request. Only populated when requested in
+ * {@link SearchSpec.Builder#setMaxSnippetSize(int)}.
+ * @return List of matches based on {@link SearchSpec}, if snippeting is disabled and this
+ * method is called it will return {@code null}. Users can also restrict snippet population
+ * using {@link SearchSpec.Builder#setNumToSnippet} and
+ * {@link SearchSpec.Builder#setNumMatchesPerProperty}, for all results after that value
+ * this method will return {@code null}.
+ * @hide
+ */
+ // TODO(sidchhabra): Replace Document with proper constructor.
+ @Nullable
+ public List<MatchInfo> getMatchInfo() {
+ if (!mResultProto.hasSnippet()) {
+ return null;
+ }
+ AppSearchDocument document = getDocument();
+ List<MatchInfo> matchList = new ArrayList<>();
+ for (Iterator entryProtoIterator = mResultProto.getSnippet()
+ .getEntriesList().iterator(); entryProtoIterator.hasNext(); ) {
+ SnippetProto.EntryProto entry = (SnippetProto.EntryProto) entryProtoIterator.next();
+ for (Iterator snippetMatchProtoIterator = entry.getSnippetMatchesList().iterator();
+ snippetMatchProtoIterator.hasNext(); ) {
+ matchList.add(new MatchInfo(entry.getPropertyName(),
+ (SnippetMatchProto) snippetMatchProtoIterator.next(), document));
+ }
+ }
+ return matchList;
+ }
+ }
+
+ @Override
+ public String toString() {
+ return mSearchResultProto.toString();
+ }
+}
diff --git a/apex/appsearch/framework/java/android/app/appsearch/SearchSpec.java b/apex/appsearch/framework/java/android/app/appsearch/SearchSpec.java
new file mode 100644
index 0000000..c276ae1
--- /dev/null
+++ b/apex/appsearch/framework/java/android/app/appsearch/SearchSpec.java
@@ -0,0 +1,260 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+
+import com.google.android.icing.proto.ResultSpecProto;
+import com.google.android.icing.proto.ScoringSpecProto;
+import com.google.android.icing.proto.SearchSpecProto;
+import com.google.android.icing.proto.TermMatchType;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+
+/**
+ * This class represents the specification logic for AppSearch. It can be used to set the type of
+ * search, like prefix or exact only or apply filters to search for a specific schema type only etc.
+ * @hide
+ */
+// TODO(sidchhabra) : AddResultSpec fields for Snippets etc.
+public final class SearchSpec {
+
+ private final SearchSpecProto mSearchSpecProto;
+ private final ResultSpecProto mResultSpecProto;
+ private final ScoringSpecProto mScoringSpecProto;
+
+ private SearchSpec(@NonNull SearchSpecProto searchSpecProto,
+ @NonNull ResultSpecProto resultSpecProto, @NonNull ScoringSpecProto scoringSpecProto) {
+ mSearchSpecProto = searchSpecProto;
+ mResultSpecProto = resultSpecProto;
+ mScoringSpecProto = scoringSpecProto;
+ }
+
+ /** Creates a new {@link SearchSpec.Builder}. */
+ @NonNull
+ public static SearchSpec.Builder newBuilder() {
+ return new SearchSpec.Builder();
+ }
+
+ /** @hide */
+ @NonNull
+ SearchSpecProto getSearchSpecProto() {
+ return mSearchSpecProto;
+ }
+
+ /** @hide */
+ @NonNull
+ ResultSpecProto getResultSpecProto() {
+ return mResultSpecProto;
+ }
+
+ /** @hide */
+ @NonNull
+ ScoringSpecProto getScoringSpecProto() {
+ return mScoringSpecProto;
+ }
+
+ /** Term Match Type for the query. */
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // {@link com.google.android.icing.proto.SearchSpecProto.termMatchType}
+ @IntDef(prefix = {"TERM_MATCH_TYPE_"}, value = {
+ TERM_MATCH_TYPE_EXACT_ONLY,
+ TERM_MATCH_TYPE_PREFIX
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface TermMatchTypeCode {}
+
+ /**
+ * Query terms will only match exact tokens in the index.
+ * <p>Ex. A query term "foo" will only match indexed token "foo", and not "foot" or "football".
+ */
+ public static final int TERM_MATCH_TYPE_EXACT_ONLY = 1;
+ /**
+ * Query terms will match indexed tokens when the query term is a prefix of the token.
+ * <p>Ex. A query term "foo" will match indexed tokens like "foo", "foot", and "football".
+ */
+ public static final int TERM_MATCH_TYPE_PREFIX = 2;
+
+ /** Ranking Strategy for query result.*/
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // {@link ScoringSpecProto.RankingStrategy.Code }
+ @IntDef(prefix = {"RANKING_STRATEGY_"}, value = {
+ RANKING_STRATEGY_NONE,
+ RANKING_STRATEGY_DOCUMENT_SCORE,
+ RANKING_STRATEGY_CREATION_TIMESTAMP
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface RankingStrategyCode {}
+
+ /** No Ranking, results are returned in arbitrary order.*/
+ public static final int RANKING_STRATEGY_NONE = 0;
+ /** Ranked by app-provided document scores. */
+ public static final int RANKING_STRATEGY_DOCUMENT_SCORE = 1;
+ /** Ranked by document creation timestamps. */
+ public static final int RANKING_STRATEGY_CREATION_TIMESTAMP = 2;
+
+ /** Order for query result.*/
+ // NOTE: The integer values of these constants must match the proto enum constants in
+ // {@link ScoringSpecProto.Order.Code }
+ @IntDef(prefix = {"ORDER_"}, value = {
+ ORDER_DESCENDING,
+ ORDER_ASCENDING
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface OrderCode {}
+
+ /** Search results will be returned in a descending order. */
+ public static final int ORDER_DESCENDING = 0;
+ /** Search results will be returned in an ascending order. */
+ public static final int ORDER_ASCENDING = 1;
+
+ /** Builder for {@link SearchSpec objects}. */
+ public static final class Builder {
+
+ private final SearchSpecProto.Builder mSearchSpecBuilder = SearchSpecProto.newBuilder();
+ private final ResultSpecProto.Builder mResultSpecBuilder = ResultSpecProto.newBuilder();
+ private final ScoringSpecProto.Builder mScoringSpecBuilder = ScoringSpecProto.newBuilder();
+ private final ResultSpecProto.SnippetSpecProto.Builder mSnippetSpecBuilder =
+ ResultSpecProto.SnippetSpecProto.newBuilder();
+
+ private Builder() {
+ }
+
+ /**
+ * Indicates how the query terms should match {@link TermMatchTypeCode} in the index.
+ */
+ @NonNull
+ public Builder setTermMatchType(@TermMatchTypeCode int termMatchTypeCode) {
+ TermMatchType.Code termMatchTypeCodeProto =
+ TermMatchType.Code.forNumber(termMatchTypeCode);
+ if (termMatchTypeCodeProto == null) {
+ throw new IllegalArgumentException("Invalid term match type: "
+ + termMatchTypeCode);
+ }
+ mSearchSpecBuilder.setTermMatchType(termMatchTypeCodeProto);
+ return this;
+ }
+
+ /**
+ * Adds a Schema type filter to {@link SearchSpec} Entry. Only search for documents that
+ * have the specified schema types.
+ * <p>If unset, the query will search over all schema types.
+ */
+ @NonNull
+ public Builder setSchemaTypes(@NonNull String... schemaTypes) {
+ for (String schemaType : schemaTypes) {
+ mSearchSpecBuilder.addSchemaTypeFilters(schemaType);
+ }
+ return this;
+ }
+
+ /** Sets the maximum number of results to retrieve from the query */
+ @NonNull
+ public SearchSpec.Builder setNumToRetrieve(int numToRetrieve) {
+ mResultSpecBuilder.setNumToRetrieve(numToRetrieve);
+ return this;
+ }
+
+ /** Sets ranking strategy for AppSearch results.*/
+ @NonNull
+ public Builder setRankingStrategy(@RankingStrategyCode int rankingStrategy) {
+ ScoringSpecProto.RankingStrategy.Code rankingStrategyCodeProto =
+ ScoringSpecProto.RankingStrategy.Code.forNumber(rankingStrategy);
+ if (rankingStrategyCodeProto == null) {
+ throw new IllegalArgumentException("Invalid result ranking strategy: "
+ + rankingStrategyCodeProto);
+ }
+ mScoringSpecBuilder.setRankBy(rankingStrategyCodeProto);
+ return this;
+ }
+
+ /**
+ * Indicates the order of returned search results, the default is DESC, meaning that results
+ * with higher scores come first.
+ * <p>This order field will be ignored if RankingStrategy = {@code RANKING_STRATEGY_NONE}.
+ */
+ @NonNull
+ public Builder setOrder(@OrderCode int order) {
+ ScoringSpecProto.Order.Code orderCodeProto =
+ ScoringSpecProto.Order.Code.forNumber(order);
+ if (orderCodeProto == null) {
+ throw new IllegalArgumentException("Invalid result ranking order: "
+ + orderCodeProto);
+ }
+ mScoringSpecBuilder.setOrderBy(orderCodeProto);
+ return this;
+ }
+
+ /**
+ * Only the first {@code numToSnippet} documents based on the ranking strategy
+ * will have snippet information provided.
+ * <p>If set to 0 (default), snippeting is disabled and
+ * {@link SearchResults.Result#getMatchInfo} will return {@code null} for that result.
+ */
+ @NonNull
+ public SearchSpec.Builder setNumToSnippet(int numToSnippet) {
+ mSnippetSpecBuilder.setNumToSnippet(numToSnippet);
+ return this;
+ }
+
+ /**
+ * Only the first {@code numMatchesPerProperty} matches for a every property of
+ * {@link AppSearchDocument} will contain snippet information.
+ * <p>If set to 0, snippeting is disabled and {@link SearchResults.Result#getMatchInfo}
+ * will return {@code null} for that result.
+ */
+ @NonNull
+ public SearchSpec.Builder setNumMatchesPerProperty(int numMatchesPerProperty) {
+ mSnippetSpecBuilder.setNumMatchesPerProperty(numMatchesPerProperty);
+ return this;
+ }
+
+ /**
+ * Sets {@code maxSnippetSize}, the maximum snippet size. Snippet windows start at
+ * {@code maxSnippetSize/2} bytes before the middle of the matching token and end at
+ * {@code maxSnippetSize/2} bytes after the middle of the matching token. It respects
+ * token boundaries, therefore the returned window may be smaller than requested.
+ * <p> Setting {@code maxSnippetSize} to 0 will disable windowing and an empty string will
+ * be returned. If matches enabled is also set to false, then snippeting is disabled.
+ * <p>Ex. {@code maxSnippetSize} = 16. "foo bar baz bat rat" with a query of "baz" will
+ * return a window of "bar baz bat" which is only 11 bytes long.
+ */
+ @NonNull
+ public SearchSpec.Builder setMaxSnippetSize(int maxSnippetSize) {
+ mSnippetSpecBuilder.setMaxWindowBytes(maxSnippetSize);
+ return this;
+ }
+
+ /**
+ * Constructs a new {@link SearchSpec} from the contents of this builder.
+ *
+ * <p>After calling this method, the builder must no longer be used.
+ */
+ @NonNull
+ public SearchSpec build() {
+ if (mSearchSpecBuilder.getTermMatchType() == TermMatchType.Code.UNKNOWN) {
+ throw new IllegalSearchSpecException("Missing termMatchType field.");
+ }
+ mResultSpecBuilder.setSnippetSpec(mSnippetSpecBuilder);
+ return new SearchSpec(mSearchSpecBuilder.build(), mResultSpecBuilder.build(),
+ mScoringSpecBuilder.build());
+ }
+ }
+}
diff --git a/apex/appsearch/service/Android.bp b/apex/appsearch/service/Android.bp
new file mode 100644
index 0000000..04f385e
--- /dev/null
+++ b/apex/appsearch/service/Android.bp
@@ -0,0 +1,24 @@
+// 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.
+java_library {
+ name: "service-appsearch",
+ installable: true,
+ srcs: ["java/**/*.java"],
+ libs: [
+ "framework",
+ "framework-appsearch",
+ "services.core",
+ ],
+ apex_available: ["com.android.appsearch"],
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchException.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchException.java
new file mode 100644
index 0000000..9b705ce
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchException.java
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.appsearch;
+
+import android.annotation.Nullable;
+import android.app.appsearch.AppSearchResult;
+
+/**
+ * An exception thrown by {@link com.android.server.appsearch.AppSearchManagerService} or a
+ * subcomponent.
+ *
+ * <p>These exceptions can be converted into a failed {@link android.app.appsearch.AppSearchResult}
+ * for propagating to the client.
+ */
+public class AppSearchException extends Exception {
+ private final @AppSearchResult.ResultCode int mResultCode;
+
+ /** Initializes an {@link com.android.server.appsearch.AppSearchException} with no message. */
+ public AppSearchException(@AppSearchResult.ResultCode int resultCode) {
+ this(resultCode, /*message=*/ null);
+ }
+
+ public AppSearchException(
+ @AppSearchResult.ResultCode int resultCode, @Nullable String message) {
+ this(resultCode, message, /*cause=*/ null);
+ }
+
+ public AppSearchException(
+ @AppSearchResult.ResultCode int resultCode,
+ @Nullable String message,
+ @Nullable Throwable cause) {
+ super(message, cause);
+ mResultCode = resultCode;
+ }
+
+ /**
+ * Converts this {@link java.lang.Exception} into a failed
+ * {@link android.app.appsearch.AppSearchResult}
+ */
+ public <T> AppSearchResult<T> toAppSearchResult() {
+ return AppSearchResult.newFailedResult(mResultCode, getMessage());
+ }
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
new file mode 100644
index 0000000..c61cdbc
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/AppSearchManagerService.java
@@ -0,0 +1,220 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.appsearch;
+
+import android.annotation.NonNull;
+import android.app.appsearch.AppSearchBatchResult;
+import android.app.appsearch.AppSearchResult;
+import android.app.appsearch.IAppSearchManager;
+import android.content.Context;
+import android.os.Binder;
+import android.os.UserHandle;
+
+import com.android.internal.infra.AndroidFuture;
+import com.android.internal.util.Preconditions;
+import com.android.server.SystemService;
+import com.android.server.appsearch.impl.AppSearchImpl;
+import com.android.server.appsearch.impl.ImplInstanceManager;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.ResultSpecProto;
+import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.ScoringSpecProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.SearchSpecProto;
+import com.google.android.icing.proto.StatusProto;
+
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * TODO(b/142567528): add comments when implement this class
+ */
+public class AppSearchManagerService extends SystemService {
+
+ public AppSearchManagerService(Context context) {
+ super(context);
+ }
+
+ @Override
+ public void onStart() {
+ publishBinderService(Context.APP_SEARCH_SERVICE, new Stub());
+ }
+
+ private class Stub extends IAppSearchManager.Stub {
+ @Override
+ public void setSchema(
+ @NonNull byte[] schemaBytes,
+ boolean forceOverride,
+ @NonNull AndroidFuture<AppSearchResult> callback) {
+ Preconditions.checkNotNull(schemaBytes);
+ Preconditions.checkNotNull(callback);
+ int callingUid = Binder.getCallingUidOrThrow();
+ int callingUserId = UserHandle.getUserId(callingUid);
+ long callingIdentity = Binder.clearCallingIdentity();
+ try {
+ SchemaProto schema = SchemaProto.parseFrom(schemaBytes);
+ AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+ impl.setSchema(callingUid, schema, forceOverride);
+ callback.complete(AppSearchResult.newSuccessfulResult(/*value=*/ null));
+ } catch (Throwable t) {
+ callback.complete(throwableToFailedResult(t));
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
+ }
+
+ @Override
+ public void putDocuments(
+ @NonNull List documentsBytes,
+ @NonNull AndroidFuture<AppSearchBatchResult> callback) {
+ Preconditions.checkNotNull(documentsBytes);
+ Preconditions.checkNotNull(callback);
+ int callingUid = Binder.getCallingUidOrThrow();
+ int callingUserId = UserHandle.getUserId(callingUid);
+ long callingIdentity = Binder.clearCallingIdentity();
+ try {
+ AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+ AppSearchBatchResult.Builder<String, Void> resultBuilder =
+ new AppSearchBatchResult.Builder<>();
+ for (int i = 0; i < documentsBytes.size(); i++) {
+ byte[] documentBytes = (byte[]) documentsBytes.get(i);
+ DocumentProto document = DocumentProto.parseFrom(documentBytes);
+ try {
+ impl.putDocument(callingUid, document);
+ resultBuilder.setSuccess(document.getUri(), /*value=*/ null);
+ } catch (Throwable t) {
+ resultBuilder.setResult(document.getUri(), throwableToFailedResult(t));
+ }
+ }
+ callback.complete(resultBuilder.build());
+ } catch (Throwable t) {
+ callback.completeExceptionally(t);
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
+ }
+
+ @Override
+ public void getDocuments(
+ @NonNull List<String> uris, @NonNull AndroidFuture<AppSearchBatchResult> callback) {
+ Preconditions.checkNotNull(uris);
+ Preconditions.checkNotNull(callback);
+ int callingUid = Binder.getCallingUidOrThrow();
+ int callingUserId = UserHandle.getUserId(callingUid);
+ long callingIdentity = Binder.clearCallingIdentity();
+ try {
+ AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+ AppSearchBatchResult.Builder<String, byte[]> resultBuilder =
+ new AppSearchBatchResult.Builder<>();
+ for (int i = 0; i < uris.size(); i++) {
+ String uri = uris.get(i);
+ try {
+ DocumentProto document = impl.getDocument(callingUid, uri);
+ if (document == null) {
+ resultBuilder.setFailure(
+ uri, AppSearchResult.RESULT_NOT_FOUND, /*errorMessage=*/ null);
+ } else {
+ resultBuilder.setSuccess(uri, document.toByteArray());
+ }
+ } catch (Throwable t) {
+ resultBuilder.setResult(uri, throwableToFailedResult(t));
+ }
+ }
+ callback.complete(resultBuilder.build());
+ } catch (Throwable t) {
+ callback.completeExceptionally(t);
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
+ }
+
+ // TODO(sidchhabra): Do this in a threadpool.
+ @Override
+ public void query(
+ @NonNull byte[] searchSpecBytes,
+ @NonNull byte[] resultSpecBytes,
+ @NonNull byte[] scoringSpecBytes,
+ @NonNull AndroidFuture<AppSearchResult> callback) {
+ Preconditions.checkNotNull(searchSpecBytes);
+ Preconditions.checkNotNull(resultSpecBytes);
+ Preconditions.checkNotNull(scoringSpecBytes);
+ Preconditions.checkNotNull(callback);
+ int callingUid = Binder.getCallingUidOrThrow();
+ int callingUserId = UserHandle.getUserId(callingUid);
+ long callingIdentity = Binder.clearCallingIdentity();
+ try {
+ SearchSpecProto searchSpecProto = SearchSpecProto.parseFrom(searchSpecBytes);
+ ResultSpecProto resultSpecProto = ResultSpecProto.parseFrom(resultSpecBytes);
+ ScoringSpecProto scoringSpecProto = ScoringSpecProto.parseFrom(scoringSpecBytes);
+ AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+ SearchResultProto searchResultProto =
+ impl.query(callingUid, searchSpecProto, resultSpecProto, scoringSpecProto);
+ // TODO(sidchhabra): Translate SearchResultProto errors into error codes. This might
+ // better be done in AppSearchImpl by throwing an AppSearchException.
+ if (searchResultProto.getStatus().getCode() != StatusProto.Code.OK) {
+ callback.complete(
+ AppSearchResult.newFailedResult(
+ AppSearchResult.RESULT_INTERNAL_ERROR,
+ searchResultProto.getStatus().getMessage()));
+ } else {
+ callback.complete(
+ AppSearchResult.newSuccessfulResult(searchResultProto.toByteArray()));
+ }
+ } catch (Throwable t) {
+ callback.complete(throwableToFailedResult(t));
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
+ }
+
+ @Override
+ public void deleteAll(@NonNull AndroidFuture<AppSearchResult> callback) {
+ Preconditions.checkNotNull(callback);
+ int callingUid = Binder.getCallingUidOrThrow();
+ int callingUserId = UserHandle.getUserId(callingUid);
+ long callingIdentity = Binder.clearCallingIdentity();
+ try {
+ AppSearchImpl impl = ImplInstanceManager.getInstance(getContext(), callingUserId);
+ impl.deleteAll(callingUid);
+ callback.complete(AppSearchResult.newSuccessfulResult(null));
+ } catch (Throwable t) {
+ callback.complete(throwableToFailedResult(t));
+ } finally {
+ Binder.restoreCallingIdentity(callingIdentity);
+ }
+ }
+
+ private <ValueType> AppSearchResult<ValueType> throwableToFailedResult(
+ @NonNull Throwable t) {
+ if (t instanceof AppSearchException) {
+ return ((AppSearchException) t).toAppSearchResult();
+ }
+
+ @AppSearchResult.ResultCode int resultCode;
+ if (t instanceof IllegalStateException) {
+ resultCode = AppSearchResult.RESULT_INTERNAL_ERROR;
+ } else if (t instanceof IllegalArgumentException) {
+ resultCode = AppSearchResult.RESULT_INVALID_ARGUMENT;
+ } else if (t instanceof IOException) {
+ resultCode = AppSearchResult.RESULT_IO_ERROR;
+ } else {
+ resultCode = AppSearchResult.RESULT_UNKNOWN_ERROR;
+ }
+ return AppSearchResult.newFailedResult(resultCode, t.getMessage());
+ }
+ }
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING b/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING
new file mode 100644
index 0000000..ca5b884
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/TEST_MAPPING
@@ -0,0 +1,23 @@
+{
+ "presubmit": [
+ {
+ "name": "CtsAppSearchTestCases"
+ },
+ {
+ "name": "FrameworksServicesTests",
+ "options": [
+ {
+ "include-filter": "com.android.server.appsearch"
+ }
+ ]
+ },
+ {
+ "name": "FrameworksCoreTests",
+ "options": [
+ {
+ "include-filter": "android.app.appsearch"
+ }
+ ]
+ }
+ ]
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java b/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java
new file mode 100644
index 0000000..9a8f945
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/impl/AppSearchImpl.java
@@ -0,0 +1,303 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.appsearch.impl;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.content.Context;
+import android.util.ArraySet;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.proto.ResultSpecProto;
+import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
+import com.google.android.icing.proto.ScoringSpecProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.SearchSpecProto;
+
+import java.util.Set;
+
+/**
+ * Manages interaction with {@link FakeIcing} and other components to implement AppSearch
+ * functionality.
+ */
+public final class AppSearchImpl {
+ private final Context mContext;
+ private final @UserIdInt int mUserId;
+ private final FakeIcing mFakeIcing = new FakeIcing();
+
+ AppSearchImpl(@NonNull Context context, @UserIdInt int userId) {
+ mContext = context;
+ mUserId = userId;
+ }
+
+ /**
+ * Updates the AppSearch schema for this app.
+ *
+ * @param callingUid The uid of the app calling AppSearch.
+ * @param origSchema The schema to set for this app.
+ * @param forceOverride Whether to force-apply the schema even if it is incompatible. Documents
+ * which do not comply with the new schema will be deleted.
+ */
+ public void setSchema(int callingUid, @NonNull SchemaProto origSchema, boolean forceOverride) {
+ // Rewrite schema type names to include the calling app's package and uid.
+ String typePrefix = getTypePrefix(callingUid);
+ SchemaProto.Builder schemaBuilder = origSchema.toBuilder();
+ rewriteSchemaTypes(typePrefix, schemaBuilder);
+
+ // TODO(b/145635424): Save in schema type map
+ // TODO(b/145635424): Apply the schema to Icing and report results
+ }
+
+ /**
+ * Rewrites all types mentioned in the given {@code schemaBuilder} to prepend
+ * {@code typePrefix}.
+ *
+ * @param typePrefix The prefix to add
+ * @param schemaBuilder The schema to mutate
+ */
+ @VisibleForTesting
+ void rewriteSchemaTypes(
+ @NonNull String typePrefix, @NonNull SchemaProto.Builder schemaBuilder) {
+ for (int typeIdx = 0; typeIdx < schemaBuilder.getTypesCount(); typeIdx++) {
+ SchemaTypeConfigProto.Builder typeConfigBuilder =
+ schemaBuilder.getTypes(typeIdx).toBuilder();
+
+ // Rewrite SchemaProto.types.schema_type
+ String newSchemaType = typePrefix + typeConfigBuilder.getSchemaType();
+ typeConfigBuilder.setSchemaType(newSchemaType);
+
+ // Rewrite SchemaProto.types.properties.schema_type
+ for (int propertyIdx = 0;
+ propertyIdx < typeConfigBuilder.getPropertiesCount();
+ propertyIdx++) {
+ PropertyConfigProto.Builder propertyConfigBuilder =
+ typeConfigBuilder.getProperties(propertyIdx).toBuilder();
+ if (!propertyConfigBuilder.getSchemaType().isEmpty()) {
+ String newPropertySchemaType =
+ typePrefix + propertyConfigBuilder.getSchemaType();
+ propertyConfigBuilder.setSchemaType(newPropertySchemaType);
+ typeConfigBuilder.setProperties(propertyIdx, propertyConfigBuilder);
+ }
+ }
+
+ schemaBuilder.setTypes(typeIdx, typeConfigBuilder);
+ }
+ }
+
+ /**
+ * Adds a document to the AppSearch index.
+ *
+ * @param callingUid The uid of the app calling AppSearch.
+ * @param origDocument The document to index.
+ */
+ public void putDocument(int callingUid, @NonNull DocumentProto origDocument) {
+ // Rewrite the type names to include the app's prefix
+ String typePrefix = getTypePrefix(callingUid);
+ DocumentProto.Builder documentBuilder = origDocument.toBuilder();
+ rewriteDocumentTypes(typePrefix, documentBuilder, /*add=*/ true);
+ mFakeIcing.put(documentBuilder.build());
+ }
+
+ /**
+ * Retrieves a document from the AppSearch index by URI.
+ *
+ * @param callingUid The uid of the app calling AppSearch.
+ * @param uri The URI of the document to get.
+ * @return The Document contents, or {@code null} if no such URI exists in the system.
+ */
+ @Nullable
+ public DocumentProto getDocument(int callingUid, @NonNull String uri) {
+ String typePrefix = getTypePrefix(callingUid);
+ DocumentProto document = mFakeIcing.get(uri);
+
+ // TODO(b/146526096): Since FakeIcing doesn't currently handle namespaces, we perform a
+ // post-filter to make sure we don't return documents we shouldn't. This should be removed
+ // once the real Icing Lib is implemented.
+ if (!document.getNamespace().equals(typePrefix)) {
+ return null;
+ }
+
+ // Rewrite the type names to remove the app's prefix
+ DocumentProto.Builder documentBuilder = document.toBuilder();
+ rewriteDocumentTypes(typePrefix, documentBuilder, /*add=*/ false);
+ return documentBuilder.build();
+ }
+
+ /**
+ * Executes a query against the AppSearch index and returns results.
+ *
+ * @param callingUid The uid of the app calling AppSearch.
+ * @param searchSpec Defines what and how to search
+ * @param resultSpec Defines what results to show
+ * @param scoringSpec Defines how to order results
+ * @return The results of performing this search The proto might have no {@code results} if no
+ * documents matched the query.
+ */
+ @NonNull
+ public SearchResultProto query(
+ int callingUid,
+ @NonNull SearchSpecProto searchSpec,
+ @NonNull ResultSpecProto resultSpec,
+ @NonNull ScoringSpecProto scoringSpec) {
+ String typePrefix = getTypePrefix(callingUid);
+ SearchResultProto searchResults = mFakeIcing.query(searchSpec.getQuery());
+ if (searchResults.getResultsCount() == 0) {
+ return searchResults;
+ }
+ Set<String> qualifiedSearchFilters = null;
+ if (searchSpec.getSchemaTypeFiltersCount() > 0) {
+ qualifiedSearchFilters = new ArraySet<>(searchSpec.getSchemaTypeFiltersCount());
+ for (String schema : searchSpec.getSchemaTypeFiltersList()) {
+ String qualifiedSchema = typePrefix + schema;
+ qualifiedSearchFilters.add(qualifiedSchema);
+ }
+ }
+ // Rewrite the type names to remove the app's prefix
+ SearchResultProto.Builder searchResultsBuilder = searchResults.toBuilder();
+ for (int i = 0; i < searchResultsBuilder.getResultsCount(); i++) {
+ if (searchResults.getResults(i).hasDocument()) {
+ SearchResultProto.ResultProto.Builder resultBuilder =
+ searchResultsBuilder.getResults(i).toBuilder();
+
+ // TODO(b/145631811): Since FakeIcing doesn't currently handle namespaces, we
+ // perform a post-filter to make sure we don't return documents we shouldn't. This
+ // should be removed once the real Icing Lib is implemented.
+ if (!resultBuilder.getDocument().getNamespace().equals(typePrefix)) {
+ searchResultsBuilder.removeResults(i);
+ i--;
+ continue;
+ }
+
+ // TODO(b/145631811): Since FakeIcing doesn't currently handle type names, we
+ // perform a post-filter to make sure we don't return documents we shouldn't. This
+ // should be removed once the real Icing Lib is implemented.
+ if (qualifiedSearchFilters != null
+ && !qualifiedSearchFilters.contains(
+ resultBuilder.getDocument().getSchema())) {
+ searchResultsBuilder.removeResults(i);
+ i--;
+ continue;
+ }
+
+ DocumentProto.Builder documentBuilder = resultBuilder.getDocument().toBuilder();
+ rewriteDocumentTypes(typePrefix, documentBuilder, /*add=*/false);
+ resultBuilder.setDocument(documentBuilder);
+ searchResultsBuilder.setResults(i, resultBuilder);
+ }
+ }
+ return searchResultsBuilder.build();
+ }
+
+ /**
+ * Deletes all documents owned by the calling app.
+ *
+ * @param callingUid The uid of the app calling AppSearch.
+ */
+ public void deleteAll(int callingUid) {
+ String namespace = getTypePrefix(callingUid);
+ mFakeIcing.deleteByNamespace(namespace);
+ }
+
+ /**
+ * Rewrites all types mentioned anywhere in {@code documentBuilder} to prepend or remove
+ * {@code typePrefix}.
+ *
+ * @param typePrefix The prefix to add or remove
+ * @param documentBuilder The document to mutate
+ * @param add Whether to add typePrefix to the types. If {@code false}, typePrefix will be
+ * removed from the types.
+ * @throws IllegalArgumentException If {@code add=false} and the document has a type that
+ * doesn't start with {@code typePrefix}.
+ */
+ @VisibleForTesting
+ void rewriteDocumentTypes(
+ @NonNull String typePrefix,
+ @NonNull DocumentProto.Builder documentBuilder,
+ boolean add) {
+ // Rewrite the type name to include/remove the app's prefix
+ String newSchema;
+ if (add) {
+ newSchema = typePrefix + documentBuilder.getSchema();
+ } else {
+ newSchema = removePrefix(typePrefix, documentBuilder.getSchema());
+ }
+ documentBuilder.setSchema(newSchema);
+
+ // Add/remove namespace. If we ever allow users to set their own namespaces, this will have
+ // to change to prepend the prefix instead of setting the whole namespace. We will also have
+ // to store the namespaces in a map similar to the type map so we can rewrite queries with
+ // empty namespaces.
+ if (add) {
+ documentBuilder.setNamespace(typePrefix);
+ } else if (!documentBuilder.getNamespace().equals(typePrefix)) {
+ throw new IllegalStateException(
+ "Unexpected namespace \"" + documentBuilder.getNamespace()
+ + "\" (expected \"" + typePrefix + "\")");
+ } else {
+ documentBuilder.clearNamespace();
+ }
+
+ // Recurse into derived documents
+ for (int propertyIdx = 0;
+ propertyIdx < documentBuilder.getPropertiesCount();
+ propertyIdx++) {
+ int documentCount = documentBuilder.getProperties(propertyIdx).getDocumentValuesCount();
+ if (documentCount > 0) {
+ PropertyProto.Builder propertyBuilder =
+ documentBuilder.getProperties(propertyIdx).toBuilder();
+ for (int documentIdx = 0; documentIdx < documentCount; documentIdx++) {
+ DocumentProto.Builder derivedDocumentBuilder =
+ propertyBuilder.getDocumentValues(documentIdx).toBuilder();
+ rewriteDocumentTypes(typePrefix, derivedDocumentBuilder, add);
+ propertyBuilder.setDocumentValues(documentIdx, derivedDocumentBuilder);
+ }
+ documentBuilder.setProperties(propertyIdx, propertyBuilder);
+ }
+ }
+ }
+
+ /**
+ * Returns a type prefix in a format like {@code com.example.package@1000/} or
+ * {@code com.example.sharedname:5678@1000/}.
+ */
+ @NonNull
+ private String getTypePrefix(int callingUid) {
+ // For regular apps, this call will return the package name. If callingUid is an
+ // android:sharedUserId, this value may be another type of name and have a :uid suffix.
+ String callingUidName = mContext.getPackageManager().getNameForUid(callingUid);
+ if (callingUidName == null) {
+ // Not sure how this is possible --- maybe app was uninstalled?
+ throw new IllegalStateException("Failed to look up package name for uid " + callingUid);
+ }
+ return callingUidName + "@" + mUserId + "/";
+ }
+
+ @NonNull
+ private static String removePrefix(@NonNull String prefix, @NonNull String input) {
+ if (!input.startsWith(prefix)) {
+ throw new IllegalArgumentException(
+ "Input \"" + input + "\" does not start with \"" + prefix + "\"");
+ }
+ return input.substring(prefix.length());
+ }
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java b/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java
new file mode 100644
index 0000000..4b7c80a
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/impl/FakeIcing.java
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.appsearch.impl;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.util.SparseArray;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.StatusProto;
+
+import java.util.Locale;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.atomic.AtomicInteger;
+
+/**
+ * Fake in-memory implementation of the Icing key-value store and reverse index.
+ * <p>
+ * Currently, only queries by single exact term are supported. There is no support for persistence,
+ * namespaces, i18n tokenization, or schema.
+ */
+public class FakeIcing {
+ private final AtomicInteger mNextDocId = new AtomicInteger();
+ private final Map<String, Integer> mUriToDocIdMap = new ArrayMap<>();
+ /** Array of Documents where index into the array is the docId. */
+ private final SparseArray<DocumentProto> mDocStore = new SparseArray<>();
+ /** Map of term to posting-list (the set of DocIds containing that term). */
+ private final Map<String, Set<Integer>> mIndex = new ArrayMap<>();
+
+ /**
+ * Inserts a document into the index.
+ *
+ * @param document The document to insert.
+ */
+ public void put(@NonNull DocumentProto document) {
+ String uri = document.getUri();
+
+ // Update mDocIdMap
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId != null) {
+ // Delete the old doc
+ mDocStore.remove(docId);
+ }
+
+ // Allocate a new docId
+ docId = mNextDocId.getAndIncrement();
+ mUriToDocIdMap.put(uri, docId);
+
+ // Update mDocStore
+ mDocStore.put(docId, document);
+
+ // Update mIndex
+ indexDocument(docId, document);
+ }
+
+ /**
+ * Retrieves a document from the index.
+ *
+ * @param uri The URI of the document to retrieve.
+ * @return The body of the document, or {@code null} if no such document exists.
+ */
+ @Nullable
+ public DocumentProto get(@NonNull String uri) {
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId == null) {
+ return null;
+ }
+ return mDocStore.get(docId);
+ }
+
+ /**
+ * Returns documents containing all words in the given query string.
+ *
+ * @param queryExpression A set of words to search for. They will be implicitly AND-ed together.
+ * No operators are supported.
+ * @return A {@link SearchResultProto} containing the matching documents, which may have no
+ * results if no documents match.
+ */
+ @NonNull
+ public SearchResultProto query(@NonNull String queryExpression) {
+ String[] terms = normalizeString(queryExpression).split("\\s+");
+ SearchResultProto.Builder results = SearchResultProto.newBuilder()
+ .setStatus(StatusProto.newBuilder().setCode(StatusProto.Code.OK));
+ if (terms.length == 0) {
+ return results.build();
+ }
+ Set<Integer> docIds = mIndex.get(terms[0]);
+ if (docIds == null || docIds.isEmpty()) {
+ return results.build();
+ }
+ for (int i = 1; i < terms.length; i++) {
+ Set<Integer> termDocIds = mIndex.get(terms[i]);
+ if (termDocIds == null) {
+ return results.build();
+ }
+ docIds.retainAll(termDocIds);
+ if (docIds.isEmpty()) {
+ return results.build();
+ }
+ }
+ for (int docId : docIds) {
+ DocumentProto document = mDocStore.get(docId);
+ if (document != null) {
+ results.addResults(
+ SearchResultProto.ResultProto.newBuilder().setDocument(document));
+ }
+ }
+ return results.build();
+ }
+
+ /**
+ * Deletes a document by its URI.
+ *
+ * @param uri The URI of the document to be deleted.
+ */
+ public void delete(@NonNull String uri) {
+ // Update mDocIdMap
+ Integer docId = mUriToDocIdMap.get(uri);
+ if (docId != null) {
+ // Delete the old doc
+ mDocStore.remove(docId);
+ mUriToDocIdMap.remove(uri);
+ }
+ }
+
+ /** Deletes all documents belonging to the given namespace. */
+ public void deleteByNamespace(@NonNull String namespace) {
+ for (int i = 0; i < mDocStore.size(); i++) {
+ DocumentProto document = mDocStore.valueAt(i);
+ if (namespace.equals(document.getNamespace())) {
+ mDocStore.removeAt(i);
+ mUriToDocIdMap.remove(document.getUri());
+ i--;
+ }
+ }
+ }
+
+ private void indexDocument(int docId, DocumentProto document) {
+ for (PropertyProto property : document.getPropertiesList()) {
+ for (String stringValue : property.getStringValuesList()) {
+ String[] words = normalizeString(stringValue).split("\\s+");
+ for (String word : words) {
+ indexTerm(docId, word);
+ }
+ }
+ for (Long longValue : property.getInt64ValuesList()) {
+ indexTerm(docId, longValue.toString());
+ }
+ for (Double doubleValue : property.getDoubleValuesList()) {
+ indexTerm(docId, doubleValue.toString());
+ }
+ for (Boolean booleanValue : property.getBooleanValuesList()) {
+ indexTerm(docId, booleanValue.toString());
+ }
+ // Intentionally skipping bytes values
+ for (DocumentProto documentValue : property.getDocumentValuesList()) {
+ indexDocument(docId, documentValue);
+ }
+ }
+ }
+
+ private void indexTerm(int docId, String term) {
+ Set<Integer> postingList = mIndex.get(term);
+ if (postingList == null) {
+ postingList = new ArraySet<>();
+ mIndex.put(term, postingList);
+ }
+ postingList.add(docId);
+ }
+
+ /** Strips out punctuation and converts to lowercase. */
+ private static String normalizeString(String input) {
+ return input.replaceAll("\\p{P}", "").toLowerCase(Locale.getDefault());
+ }
+}
diff --git a/apex/appsearch/service/java/com/android/server/appsearch/impl/ImplInstanceManager.java b/apex/appsearch/service/java/com/android/server/appsearch/impl/ImplInstanceManager.java
new file mode 100644
index 0000000..395e30e
--- /dev/null
+++ b/apex/appsearch/service/java/com/android/server/appsearch/impl/ImplInstanceManager.java
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.appsearch.impl;
+
+import android.annotation.NonNull;
+import android.annotation.UserIdInt;
+import android.content.Context;
+import android.util.SparseArray;
+
+/**
+ * Manages the lifecycle of instances of {@link AppSearchImpl}.
+ *
+ * <p>These instances are managed per unique device-user.
+ */
+public final class ImplInstanceManager {
+ private static final SparseArray<AppSearchImpl> sInstances = new SparseArray<>();
+
+ /**
+ * Gets an instance of AppSearchImpl for the given user.
+ *
+ * <p>If no AppSearchImpl instance exists for this user, Icing will be initialized and one will
+ * be created.
+ *
+ * @param context The Android context
+ * @param userId The multi-user userId of the device user calling AppSearch
+ * @return An initialized {@link AppSearchImpl} for this user
+ */
+ @NonNull
+ public static AppSearchImpl getInstance(@NonNull Context context, @UserIdInt int userId) {
+ AppSearchImpl instance = sInstances.get(userId);
+ if (instance == null) {
+ synchronized (ImplInstanceManager.class) {
+ instance = sInstances.get(userId);
+ if (instance == null) {
+ instance = new AppSearchImpl(context, userId);
+ sInstances.put(userId, instance);
+ }
+ }
+ }
+ return instance;
+ }
+}
diff --git a/api/current.txt b/api/current.txt
index feb7498..f9ff8dd 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -14076,6 +14076,7 @@
method public android.graphics.Bitmap.Config getConfig();
method public int getDensity();
method public int getGenerationId();
+ method @NonNull public android.hardware.HardwareBuffer getHardwareBuffer();
method public int getHeight();
method public byte[] getNinePatchChunk();
method @ColorInt public int getPixel(int, int);
@@ -14177,10 +14178,14 @@
method public int getHeight();
method public int getWidth();
method public boolean isRecycled();
- method public static android.graphics.BitmapRegionDecoder newInstance(byte[], int, int, boolean) throws java.io.IOException;
- method public static android.graphics.BitmapRegionDecoder newInstance(java.io.FileDescriptor, boolean) throws java.io.IOException;
- method public static android.graphics.BitmapRegionDecoder newInstance(java.io.InputStream, boolean) throws java.io.IOException;
- method public static android.graphics.BitmapRegionDecoder newInstance(String, boolean) throws java.io.IOException;
+ method @Deprecated @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull byte[], int, int, boolean) throws java.io.IOException;
+ method @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull byte[], int, int) throws java.io.IOException;
+ method @Deprecated @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull java.io.FileDescriptor, boolean) throws java.io.IOException;
+ method @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull android.os.ParcelFileDescriptor) throws java.io.IOException;
+ method @Deprecated @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull java.io.InputStream, boolean) throws java.io.IOException;
+ method @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull java.io.InputStream) throws java.io.IOException;
+ method @Deprecated @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull String, boolean) throws java.io.IOException;
+ method @NonNull public static android.graphics.BitmapRegionDecoder newInstance(@NonNull String) throws java.io.IOException;
method public void recycle();
}
@@ -23543,8 +23548,8 @@
public static final class GnssAntennaInfo.SphericalCorrections implements android.os.Parcelable {
ctor public GnssAntennaInfo.SphericalCorrections(@NonNull double[][], @NonNull double[][]);
method public int describeContents();
- method @NonNull public double[][] getCorrectionUncertaintiesArray();
- method @NonNull public double[][] getCorrectionsArray();
+ method @NonNull public double[][] getCorrectionUncertaintiesMatrix();
+ method @NonNull public double[][] getCorrectionsMatrix();
method @FloatRange(from=0.0f, to=180.0f) public double getDeltaPhi();
method @FloatRange(from=0.0f, to=360.0f) public double getDeltaTheta();
method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -23678,10 +23683,10 @@
public final class GnssNavigationMessage implements android.os.Parcelable {
method public int describeContents();
method @NonNull public byte[] getData();
- method public int getMessageId();
+ method @IntRange(from=0xffffffff, to=120) public int getMessageId();
method public int getStatus();
- method public int getSubmessageId();
- method public int getSvid();
+ method @IntRange(from=1) public int getSubmessageId();
+ method @IntRange(from=1, to=200) public int getSvid();
method public int getType();
method public void writeToParcel(android.os.Parcel, int);
field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssNavigationMessage> CREATOR;
@@ -44571,10 +44576,12 @@
method public int addEarcon(String, String, @RawRes int);
method @Deprecated public int addEarcon(String, String);
method public int addEarcon(String, java.io.File);
+ method public int addEarcon(@NonNull String, @NonNull android.net.Uri);
method public int addSpeech(String, String, @RawRes int);
method public int addSpeech(CharSequence, String, @RawRes int);
method public int addSpeech(String, String);
method public int addSpeech(CharSequence, java.io.File);
+ method public int addSpeech(@NonNull CharSequence, @NonNull android.net.Uri);
method @Deprecated public boolean areDefaultsEnforced();
method public java.util.Set<java.util.Locale> getAvailableLanguages();
method public String getDefaultEngine();
@@ -46844,7 +46851,6 @@
}
public static final class CarrierConfigManager.Apn {
- field public static final String KEY_PREFIX = "apn.";
field public static final String KEY_SETTINGS_DEFAULT_PROTOCOL_STRING = "apn.settings_default_protocol_string";
field public static final String KEY_SETTINGS_DEFAULT_ROAMING_PROTOCOL_STRING = "apn.settings_default_roaming_protocol_string";
field public static final String PROTOCOL_IPV4 = "IP";
@@ -48163,7 +48169,7 @@
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei();
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getImei(int);
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PHONE_STATE, android.Manifest.permission.READ_SMS, android.Manifest.permission.READ_PHONE_NUMBERS}) public String getLine1Number();
- method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn();
+ method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public String getManualNetworkSelectionPlmn();
method @Nullable public String getManufacturerCode();
method @Nullable public String getManufacturerCode(int);
method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getMeid();
@@ -55746,7 +55752,6 @@
field public static final int TYPE_PRIVATE_PRESENTATION = 2030; // 0x7ee
field public static final int TYPE_SEARCH_BAR = 2001; // 0x7d1
field public static final int TYPE_STATUS_BAR = 2000; // 0x7d0
- field @Deprecated public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
field @Deprecated public static final int TYPE_SYSTEM_ALERT = 2003; // 0x7d3
field public static final int TYPE_SYSTEM_DIALOG = 2008; // 0x7d8
field @Deprecated public static final int TYPE_SYSTEM_ERROR = 2010; // 0x7da
@@ -55773,7 +55778,7 @@
field public int softInputMode;
field @Deprecated public int systemUiVisibility;
field public android.os.IBinder token;
- field @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION, to="BASE_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION, to="APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING, to="APPLICATION_STARTING"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION, to="DRAWN_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, to="APPLICATION_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA, to="APPLICATION_MEDIA"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, to="APPLICATION_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x3ed, to="APPLICATION_ABOVE_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG, to="APPLICATION_ATTACHED_DIALOG"), @android.view.ViewDebug.IntToString(from=0x3ec, to="APPLICATION_MEDIA_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR, to="STATUS_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR, to="SEARCH_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PHONE, to="PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, to="SYSTEM_ALERT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_TOAST, to="TOAST"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, to="SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE, to="PRIORITY_PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, to="SYSTEM_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, to="KEYGUARD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, to="SYSTEM_ERROR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD, to="INPUT_METHOD"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG, to="INPUT_METHOD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_WALLPAPER, to="WALLPAPER"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL, to="STATUS_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7df, to="SECURE_SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e0, to="DRAG"), @android.view.ViewDebug.IntToString(from=0x7e1, to="STATUS_BAR_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x7e2, to="POINTER"), @android.view.ViewDebug.IntToString(from=0x7e3, to="NAVIGATION_BAR"), @android.view.ViewDebug.IntToString(from=0x7e4, to="VOLUME_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e5, to="BOOT_PROGRESS"), @android.view.ViewDebug.IntToString(from=0x7e6, to="INPUT_CONSUMER"), @android.view.ViewDebug.IntToString(from=0x7e7, to="DREAM"), @android.view.ViewDebug.IntToString(from=0x7e8, to="NAVIGATION_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7ea, to="DISPLAY_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7eb, to="MAGNIFICATION_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7f5, to="PRESENTATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, to="PRIVATE_PRESENTATION"), @android.view.ViewDebug.IntToString(from=0x7ef, to="VOICE_INTERACTION"), @android.view.ViewDebug.IntToString(from=0x7f1, to="VOICE_INTERACTION_STARTING"), @android.view.ViewDebug.IntToString(from=0x7f2, to="DOCK_DIVIDER"), @android.view.ViewDebug.IntToString(from=0x7f3, to="QS_DIALOG"), @android.view.ViewDebug.IntToString(from=0x7f4, to="SCREENSHOT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, to="APPLICATION_OVERLAY")}) public int type;
+ field @android.view.ViewDebug.ExportedProperty(mapping={@android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION, to="BASE_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION, to="APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING, to="APPLICATION_STARTING"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_DRAWN_APPLICATION, to="DRAWN_APPLICATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_PANEL, to="APPLICATION_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA, to="APPLICATION_MEDIA"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL, to="APPLICATION_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x3ed, to="APPLICATION_ABOVE_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_ATTACHED_DIALOG, to="APPLICATION_ATTACHED_DIALOG"), @android.view.ViewDebug.IntToString(from=0x3ec, to="APPLICATION_MEDIA_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR, to="STATUS_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SEARCH_BAR, to="SEARCH_BAR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PHONE, to="PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ALERT, to="SYSTEM_ALERT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_TOAST, to="TOAST"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_OVERLAY, to="SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIORITY_PHONE, to="PRIORITY_PHONE"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG, to="SYSTEM_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG, to="KEYGUARD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_SYSTEM_ERROR, to="SYSTEM_ERROR"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD, to="INPUT_METHOD"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD_DIALOG, to="INPUT_METHOD_DIALOG"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_WALLPAPER, to="WALLPAPER"), @android.view.ViewDebug.IntToString(from=0x7de, to="STATUS_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7df, to="SECURE_SYSTEM_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e0, to="DRAG"), @android.view.ViewDebug.IntToString(from=0x7e1, to="STATUS_BAR_SUB_PANEL"), @android.view.ViewDebug.IntToString(from=0x7e2, to="POINTER"), @android.view.ViewDebug.IntToString(from=0x7e3, to="NAVIGATION_BAR"), @android.view.ViewDebug.IntToString(from=0x7e4, to="VOLUME_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7e5, to="BOOT_PROGRESS"), @android.view.ViewDebug.IntToString(from=0x7e6, to="INPUT_CONSUMER"), @android.view.ViewDebug.IntToString(from=0x7e7, to="DREAM"), @android.view.ViewDebug.IntToString(from=0x7e8, to="NAVIGATION_BAR_PANEL"), @android.view.ViewDebug.IntToString(from=0x7ea, to="DISPLAY_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7eb, to="MAGNIFICATION_OVERLAY"), @android.view.ViewDebug.IntToString(from=0x7f5, to="PRESENTATION"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION, to="PRIVATE_PRESENTATION"), @android.view.ViewDebug.IntToString(from=0x7ef, to="VOICE_INTERACTION"), @android.view.ViewDebug.IntToString(from=0x7f1, to="VOICE_INTERACTION_STARTING"), @android.view.ViewDebug.IntToString(from=0x7f2, to="DOCK_DIVIDER"), @android.view.ViewDebug.IntToString(from=0x7f3, to="QS_DIALOG"), @android.view.ViewDebug.IntToString(from=0x7f4, to="SCREENSHOT"), @android.view.ViewDebug.IntToString(from=android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY, to="APPLICATION_OVERLAY")}) public int type;
field public float verticalMargin;
field @android.view.ViewDebug.ExportedProperty public float verticalWeight;
field public int windowAnimations;
diff --git a/api/removed.txt b/api/removed.txt
index 077c915..0e61911 100644
--- a/api/removed.txt
+++ b/api/removed.txt
@@ -588,6 +588,7 @@
public static class WindowManager.LayoutParams extends android.view.ViewGroup.LayoutParams implements android.os.Parcelable {
field public static final int TYPE_KEYGUARD = 2004; // 0x7d4
+ field public static final int TYPE_STATUS_BAR_PANEL = 2014; // 0x7de
}
}
diff --git a/api/system-current.txt b/api/system-current.txt
index bdb2037..9d2354d 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -342,7 +342,6 @@
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getPackageImportance(String);
method @NonNull public java.util.Collection<java.util.Locale> getSupportedLocales();
method @RequiresPermission(android.Manifest.permission.PACKAGE_USAGE_STATS) public int getUidImportance(int);
- method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean isProfileForeground(@NonNull android.os.UserHandle);
method @RequiresPermission(android.Manifest.permission.FORCE_STOP_PACKAGES) public void killProcessesWhenImperceptible(@NonNull int[], @NonNull String);
method @RequiresPermission(android.Manifest.permission.KILL_UID) public void killUid(int, String);
method public void registerHomeVisibilityObserver(@NonNull android.app.HomeVisibilityObserver);
@@ -922,6 +921,14 @@
}
+package android.app.appsearch {
+
+ public class AppSearchManagerFrameworkInitializer {
+ method public static void initialize();
+ }
+
+}
+
package android.app.assist {
public static class AssistStructure.ViewNode {
@@ -4145,7 +4152,8 @@
method public boolean isExtraLocationControllerPackageEnabled();
method public boolean isLocationEnabledForUser(@NonNull android.os.UserHandle);
method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
- method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
+ method @Deprecated @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
+ method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@Nullable String, @NonNull String);
method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.LOCATION_HARDWARE}) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
@@ -11474,7 +11482,6 @@
method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public java.util.Map<java.lang.Integer,java.lang.Integer> getLogicalToPhysicalSlotMapping();
method public int getMaxNumberOfSimultaneouslyActiveSims();
method public static long getMaxNumberVerificationTimeoutMillis();
- method @NonNull @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String[] getMergedImsisFromGroup();
method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public long getPreferredNetworkTypeBitmask();
method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public int getRadioPowerState();
method public int getSimApplicationState();
diff --git a/api/test-current.txt b/api/test-current.txt
index 3e2b58e..00f15a0 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -1398,10 +1398,10 @@
method public void reset();
method public void set(android.location.GnssNavigationMessage);
method public void setData(byte[]);
- method public void setMessageId(int);
+ method public void setMessageId(@IntRange(from=0xffffffff, to=120) int);
method public void setStatus(int);
- method public void setSubmessageId(int);
- method public void setSvid(int);
+ method public void setSubmessageId(@IntRange(from=1) int);
+ method public void setSvid(@IntRange(from=1, to=200) int);
method public void setType(int);
}
@@ -1414,7 +1414,7 @@
method @NonNull public String[] getBackgroundThrottlingWhitelist();
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void getCurrentLocation(@NonNull android.location.LocationRequest, @Nullable android.os.CancellationSignal, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.location.Location>);
method @NonNull public String[] getIgnoreSettingsWhitelist();
- method @Nullable @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public java.util.List<java.lang.String> getProviderPackages(@NonNull String);
+ method @Deprecated @Nullable @RequiresPermission("android.permission.READ_DEVICE_CONFIG") public java.util.List<java.lang.String> getProviderPackages(@NonNull String);
method @NonNull public java.util.List<android.location.LocationRequest> getTestProviderCurrentRequests(String);
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.cpp b/cmds/idmap2/idmap2d/Idmap2Service.cpp
index 63c22ef..02e92ae 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.cpp
+++ b/cmds/idmap2/idmap2d/Idmap2Service.cpp
@@ -113,7 +113,7 @@
Status Idmap2Service::createIdmap(const std::string& target_apk_path,
const std::string& overlay_apk_path, int32_t fulfilled_policies,
bool enforce_overlayable, int32_t user_id ATTRIBUTE_UNUSED,
- std::optional<std::string>* _aidl_return) {
+ aidl::nullable<std::string>* _aidl_return) {
assert(_aidl_return);
SYSTRACE << "Idmap2Service::createIdmap " << target_apk_path << " " << overlay_apk_path;
_aidl_return->reset();
@@ -155,7 +155,7 @@
return error("failed to write to idmap path " + idmap_path);
}
- *_aidl_return = idmap_path;
+ *_aidl_return = aidl::make_nullable<std::string>(idmap_path);
return ok();
}
diff --git a/cmds/idmap2/idmap2d/Idmap2Service.h b/cmds/idmap2/idmap2d/Idmap2Service.h
index 047353f..b6f5136 100644
--- a/cmds/idmap2/idmap2d/Idmap2Service.h
+++ b/cmds/idmap2/idmap2d/Idmap2Service.h
@@ -19,9 +19,7 @@
#include <android-base/unique_fd.h>
#include <binder/BinderService.h>
-
-#include <optional>
-#include <string>
+#include <binder/Nullable.h>
#include "android/os/BnIdmap2.h"
@@ -46,7 +44,7 @@
binder::Status createIdmap(const std::string& target_apk_path,
const std::string& overlay_apk_path, int32_t fulfilled_policies,
bool enforce_overlayable, int32_t user_id,
- std::optional<std::string>* _aidl_return) override;
+ aidl::nullable<std::string>* _aidl_return) override;
};
} // namespace android::os
diff --git a/cmds/screencap/screencap.cpp b/cmds/screencap/screencap.cpp
index 0bb1af1..4410f1c 100644
--- a/cmds/screencap/screencap.cpp
+++ b/cmds/screencap/screencap.cpp
@@ -24,6 +24,7 @@
#include <linux/fb.h>
#include <sys/ioctl.h>
#include <sys/mman.h>
+#include <sys/wait.h>
#include <binder/ProcessState.h>
@@ -99,11 +100,38 @@
}
static status_t notifyMediaScanner(const char* fileName) {
- String8 cmd("am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file://");
- cmd.append(fileName);
- cmd.append(" > /dev/null");
- int result = system(cmd.string());
- if (result < 0) {
+ std::string filePath("file://");
+ filePath.append(fileName);
+ char *cmd[] = {
+ (char*) "am",
+ (char*) "broadcast",
+ (char*) "am",
+ (char*) "android.intent.action.MEDIA_SCANNER_SCAN_FILE",
+ (char*) "-d",
+ &filePath[0],
+ nullptr
+ };
+
+ int status;
+ int pid = fork();
+ if (pid < 0){
+ fprintf(stderr, "Unable to fork in order to send intent for media scanner.\n");
+ return UNKNOWN_ERROR;
+ }
+ if (pid == 0){
+ int fd = open("/dev/null", O_WRONLY);
+ if (fd < 0){
+ fprintf(stderr, "Unable to open /dev/null for media scanner stdout redirection.\n");
+ exit(1);
+ }
+ dup2(fd, 1);
+ int result = execvp(cmd[0], cmd);
+ close(fd);
+ exit(result);
+ }
+ wait(&status);
+
+ if (status < 0) {
fprintf(stderr, "Unable to broadcast intent for media scanner.\n");
return UNKNOWN_ERROR;
}
diff --git a/core/java/android/accounts/AccountManager.java b/core/java/android/accounts/AccountManager.java
index f2702a8..cee7cd14 100644
--- a/core/java/android/accounts/AccountManager.java
+++ b/core/java/android/accounts/AccountManager.java
@@ -27,6 +27,7 @@
import android.annotation.SystemService;
import android.annotation.UserHandleAware;
import android.app.Activity;
+import android.app.PropertyInvalidatedCache;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
@@ -60,6 +61,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
import java.util.concurrent.Callable;
import java.util.concurrent.CancellationException;
@@ -67,6 +69,7 @@
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
+import java.util.Objects;
/**
* This class provides access to a centralized registry of the user's
@@ -334,6 +337,121 @@
public static final String ACCOUNT_ACCESS_TOKEN_TYPE =
"com.android.AccountManager.ACCOUNT_ACCESS_TOKEN_TYPE";
+ /**
+ * @hide
+ */
+ public static final String CACHE_KEY_ACCOUNTS_DATA_PROPERTY = "cache_key.system_server.accounts_data";
+
+ /**
+ * @hide
+ */
+ public static final int CACHE_ACCOUNTS_DATA_SIZE = 4;
+
+ private static final class UserIdPackage
+ {
+ public int userId;
+ public String packageName;
+
+ public UserIdPackage(int UserId, String PackageName) {
+ this.userId = UserId;
+ this.packageName = PackageName;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null) {
+ return false;
+ }
+ if (o == this) {
+ return true;
+ }
+ if (o.getClass() != getClass()) {
+ return false;
+ }
+ UserIdPackage e = (UserIdPackage) o;
+ return e.userId == userId && e.packageName.equals(packageName);
+ }
+
+ @Override
+ public int hashCode() {
+ return userId ^ packageName.hashCode();
+ }
+ }
+
+ PropertyInvalidatedCache<UserIdPackage, Account[]> mAccountsForUserCache =
+ new PropertyInvalidatedCache<UserIdPackage, Account[]>(CACHE_ACCOUNTS_DATA_SIZE, CACHE_KEY_ACCOUNTS_DATA_PROPERTY) {
+ @Override
+ protected Account[] recompute(UserIdPackage userAndPackage) {
+ try {
+ return mService.getAccountsAsUser(null, userAndPackage.userId, userAndPackage.packageName);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ };
+
+ /**
+ * @hide
+ */
+ public static final String CACHE_KEY_USER_DATA_PROPERTY = "cache_key.system_server.account_user_data";
+
+ /**
+ * @hide
+ */
+ public static final int CACHE_USER_DATA_SIZE = 4;
+
+ private static final class AccountKeyData {
+ final public Account account;
+ final public String key;
+
+ public AccountKeyData(Account Account, String Key) {
+ this.account = Account;
+ this.key = Key;
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (o == null) {
+ return false;
+ }
+
+ if (o == this) {
+ return true;
+ }
+
+ if (o.getClass() != getClass()) {
+ return false;
+ }
+
+ AccountKeyData e = (AccountKeyData) o;
+
+ return e.account.equals(account) && e.key.equals(key);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(account,key);
+ }
+ }
+
+ PropertyInvalidatedCache<AccountKeyData, String> mUserDataCache =
+ new PropertyInvalidatedCache<AccountKeyData, String>(CACHE_USER_DATA_SIZE,
+ CACHE_KEY_USER_DATA_PROPERTY) {
+ @Override
+ protected String recompute(AccountKeyData accountKeyData) {
+ Account account = accountKeyData.account;
+ String key = accountKeyData.key;
+
+ if (account == null) throw new IllegalArgumentException("account is null");
+ if (key == null) throw new IllegalArgumentException("key is null");
+ try {
+ return mService.getUserData(account, key);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
+ };
+
@UnsupportedAppUsage
private final Context mContext;
private final IAccountManager mService;
@@ -510,13 +628,7 @@
* @return The user data, null if the account, key doesn't exist, or the user is locked
*/
public String getUserData(final Account account, final String key) {
- if (account == null) throw new IllegalArgumentException("account is null");
- if (key == null) throw new IllegalArgumentException("key is null");
- try {
- return mService.getUserData(account, key);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ return mUserDataCache.query(new AccountKeyData(account,key));
}
/**
@@ -602,11 +714,8 @@
*/
@NonNull
public Account[] getAccountsAsUser(int userId) {
- try {
- return mService.getAccountsAsUser(null, userId, mContext.getOpPackageName());
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ UserIdPackage userAndPackage = new UserIdPackage(userId, mContext.getOpPackageName());
+ return mAccountsForUserCache.query(userAndPackage);
}
/**
@@ -3333,4 +3442,38 @@
throw e.rethrowFromSystemServer();
}
}
+
+ /**
+ * @hide
+ * Calling this will invalidate Local Accounts Data Cache which
+ * forces the next query in any process to recompute the cache
+ */
+ public static void invalidateLocalAccountsDataCaches() {
+ PropertyInvalidatedCache.invalidateCache(CACHE_KEY_ACCOUNTS_DATA_PROPERTY);
+ }
+
+ /**
+ * @hide
+ * Calling this will disable account data caching.
+ */
+ public void disableLocalAccountCaches() {
+ mAccountsForUserCache.disableLocal();
+ }
+
+ /**
+ * @hide
+ * Calling this will invalidate Local Account User Data Cache which
+ * forces the next query in any process to recompute the cache
+ */
+ public static void invalidateLocalAccountUserDataCaches() {
+ PropertyInvalidatedCache.invalidateCache(CACHE_KEY_USER_DATA_PROPERTY);
+ }
+
+ /**
+ * @hide
+ * Calling this will disable user info caching.
+ */
+ public void disableLocalUserInfoCaches() {
+ mUserDataCache.disableLocal();
+ }
}
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index 6480a6a..c19575b 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -1041,13 +1041,14 @@
* so that the system can learn appropriate ranking signals linking the activity's
* locus id with the matching shortcut.
*
- * @param locusId a unique, stable id that identifies this {@code Activity} instance from
- * others. This can be linked to a shortcut using
+ * @param locusId a unique, stable id that identifies this {@code Activity} instance. LocusId
+ * is an opaque ID that links this Activity's state to different Android concepts:
* {@link android.content.pm.ShortcutInfo.Builder#setLocusId(android.content.LocusId)
- * setLocusId} with the same locus id string.
+ * setLocusId}. LocusID is null by default or if you explicitly reset it.
* @param bundle extras set or updated as part of this locus context. This may help provide
* additional metadata such as URLs, conversation participants specific to this
- * {@code Activity}'s context.
+ * {@code Activity}'s context. Bundle can be null if additional metadata is not needed.
+ * Bundle should always be null for null locusId.
*
* @see android.view.contentcapture.ContentCaptureManager
* @see android.view.contentcapture.ContentCaptureContext
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index f4ee8fa..d4f6575 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -4627,7 +4627,6 @@
* @return Returns the boolean result.
* @hide
*/
- @SystemApi
@RequiresPermission(anyOf = {
android.Manifest.permission.MANAGE_USERS,
android.Manifest.permission.CREATE_USERS
diff --git a/core/java/android/app/ActivityOptions.java b/core/java/android/app/ActivityOptions.java
index 4aacf48..20d8ee1 100644
--- a/core/java/android/app/ActivityOptions.java
+++ b/core/java/android/app/ActivityOptions.java
@@ -31,8 +31,8 @@
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Bitmap.Config;
-import android.graphics.GraphicBuffer;
import android.graphics.Rect;
+import android.hardware.HardwareBuffer;
import android.os.Bundle;
import android.os.Handler;
import android.os.IRemoteCallback;
@@ -942,8 +942,8 @@
case ANIM_THUMBNAIL_SCALE_DOWN:
case ANIM_THUMBNAIL_ASPECT_SCALE_UP:
case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN:
- // Unpackage the GraphicBuffer from the parceled thumbnail
- final GraphicBuffer buffer = opts.getParcelable(KEY_ANIM_THUMBNAIL);
+ // Unpackage the HardwareBuffer from the parceled thumbnail
+ final HardwareBuffer buffer = opts.getParcelable(KEY_ANIM_THUMBNAIL);
if (buffer != null) {
mThumbnail = Bitmap.wrapHardwareBuffer(buffer, null);
}
@@ -1052,12 +1052,12 @@
/**
* The thumbnail is copied into a hardware bitmap when it is bundled and sent to the system, so
- * it should always be backed by a GraphicBuffer on the other end.
+ * it should always be backed by a HardwareBuffer on the other end.
*
* @hide
*/
- public GraphicBuffer getThumbnail() {
- return mThumbnail != null ? mThumbnail.createGraphicBufferHandle() : null;
+ public HardwareBuffer getThumbnail() {
+ return mThumbnail != null ? mThumbnail.getHardwareBuffer() : null;
}
/** @hide */
@@ -1508,11 +1508,11 @@
case ANIM_THUMBNAIL_ASPECT_SCALE_UP:
case ANIM_THUMBNAIL_ASPECT_SCALE_DOWN:
// Once we parcel the thumbnail for transfering over to the system, create a copy of
- // the bitmap to a hardware bitmap and pass through the GraphicBuffer
+ // the bitmap to a hardware bitmap and pass through the HardwareBuffer
if (mThumbnail != null) {
final Bitmap hwBitmap = mThumbnail.copy(Config.HARDWARE, false /* isMutable */);
if (hwBitmap != null) {
- b.putParcelable(KEY_ANIM_THUMBNAIL, hwBitmap.createGraphicBufferHandle());
+ b.putParcelable(KEY_ANIM_THUMBNAIL, hwBitmap.getHardwareBuffer());
} else {
Slog.w(TAG, "Failed to copy thumbnail");
}
diff --git a/core/java/android/app/AlertDialog.java b/core/java/android/app/AlertDialog.java
index 4c34737..702b960 100644
--- a/core/java/android/app/AlertDialog.java
+++ b/core/java/android/app/AlertDialog.java
@@ -325,7 +325,7 @@
}
/**
- * Set a listener to be invoked when the positive button of the dialog is pressed.
+ * Set a listener to be invoked when the specified button of the dialog is pressed.
*
* @param whichButton Which button to set the listener on, can be one of
* {@link DialogInterface#BUTTON_POSITIVE},
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index fa4aa19..9f4ac41 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -2440,8 +2440,8 @@
AppProtoEnums.APP_OP_ACCESS_CALL_AUDIO, // OP_ACCESS_CALL_AUDIO
AppProtoEnums.APP_OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED,
// OP_AUTO_REVOKE_PERMISSIONS_IF_UNUSED
- AppProtoEnums.APP_OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
- //OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
+ AppProtoEnums.APP_OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
+ // OP_AUTO_REVOKE_MANAGED_BY_INSTALLER
};
diff --git a/core/java/android/app/PropertyInvalidatedCache.java b/core/java/android/app/PropertyInvalidatedCache.java
index ce0d04b..e0a4902 100644
--- a/core/java/android/app/PropertyInvalidatedCache.java
+++ b/core/java/android/app/PropertyInvalidatedCache.java
@@ -296,11 +296,13 @@
for (;;) {
if (currentNonce == NONCE_DISABLED || currentNonce == NONCE_UNSET) {
if (DEBUG) {
- Log.d(TAG,
- String.format("cache %s %s for %s",
- cacheName(),
- currentNonce == NONCE_DISABLED ? "disabled" : "unset",
- queryToString(query)));
+ if (!mDisabled) {
+ Log.d(TAG, String.format(
+ "cache %s %s for %s",
+ cacheName(),
+ currentNonce == NONCE_DISABLED ? "disabled" : "unset",
+ queryToString(query)));
+ }
}
return recompute(query);
}
@@ -450,8 +452,12 @@
Result resultToCompare = recompute(query);
boolean nonceChanged = (getCurrentNonce() != mLastSeenNonce);
if (!nonceChanged && !debugCompareQueryResults(proposedResult, resultToCompare)) {
- throw new AssertionError("cache returned out of date response for " + query);
+ Log.e(TAG, String.format(
+ "cache %s inconsistent for %s",
+ cacheName(), queryToString(query)));
}
+ // Always return the "true" result in verification mode.
+ return resultToCompare;
}
return proposedResult;
}
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index e8f30df..aac50d1 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -24,6 +24,7 @@
import android.app.ContextImpl.ServiceInitializationState;
import android.app.admin.DevicePolicyManager;
import android.app.admin.IDevicePolicyManager;
+import android.app.appsearch.AppSearchManagerFrameworkInitializer;
import android.app.blob.BlobStoreManagerFrameworkInitializer;
import android.app.contentsuggestions.ContentSuggestionsManager;
import android.app.contentsuggestions.IContentSuggestionsManager;
@@ -1345,6 +1346,7 @@
JobSchedulerFrameworkInitializer.registerServiceWrappers();
BlobStoreManagerFrameworkInitializer.initialize();
TelephonyFrameworkInitializer.registerServiceWrappers();
+ AppSearchManagerFrameworkInitializer.initialize();
WifiFrameworkInitializer.registerServiceWrappers();
StatsFrameworkInitializer.registerServiceWrappers();
} finally {
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index 318ae11..85bdfab 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -5119,6 +5119,16 @@
/**
* Use with {@link #getSystemService(String)} to retrieve an
+ * {@link android.app.appsearch.AppSearchManager} for
+ * indexing and querying app data managed by the system.
+ *
+ * @see #getSystemService(String)
+ * @hide
+ */
+ public static final String APP_SEARCH_SERVICE = "app_search";
+
+ /**
+ * Use with {@link #getSystemService(String)} to retrieve an
* {@link android.content.integrity.AppIntegrityManager}.
* @hide
*/
diff --git a/core/java/android/content/pm/ILauncherApps.aidl b/core/java/android/content/pm/ILauncherApps.aidl
index 27c9cfc..aa29040 100644
--- a/core/java/android/content/pm/ILauncherApps.aidl
+++ b/core/java/android/content/pm/ILauncherApps.aidl
@@ -25,6 +25,7 @@
import android.content.pm.ApplicationInfo;
import android.content.pm.IOnAppsChangedListener;
import android.content.pm.LauncherApps;
+import android.content.pm.ShortcutQueryWrapper;
import android.content.pm.IPackageInstallerCallback;
import android.content.pm.IShortcutChangeCallback;
import android.content.pm.PackageInstaller;
@@ -67,9 +68,8 @@
LauncherApps.AppUsageLimit getAppUsageLimit(String callingPackage, String packageName,
in UserHandle user);
- ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
- in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName,
- int flags, in UserHandle user);
+ ParceledListSlice getShortcuts(String callingPackage, in ShortcutQueryWrapper query,
+ in UserHandle user);
void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
in UserHandle user);
boolean startShortcut(String callingPackage, String packageName, String featureId, String id,
@@ -93,9 +93,8 @@
in IPackageInstallerCallback callback);
ParceledListSlice getAllSessions(String callingPackage);
- void registerShortcutChangeCallback(String callingPackage, long changedSince,
- String packageName, in List shortcutIds, in List<LocusId> locusIds,
- in ComponentName componentName, int flags, in IShortcutChangeCallback callback);
+ void registerShortcutChangeCallback(String callingPackage, in ShortcutQueryWrapper query,
+ in IShortcutChangeCallback callback);
void unregisterShortcutChangeCallback(String callingPackage,
in IShortcutChangeCallback callback);
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index e73fd03..0cc0278 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -1046,8 +1046,7 @@
// changed callback, but that only returns shortcuts with the "key" information, so
// that won't return disabled message.
return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(),
- query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
- query.mActivity, query.mQueryFlags, user)
+ new ShortcutQueryWrapper(query), user)
.getList());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1794,8 +1793,7 @@
mShortcutChangeCallbacks.put(callback, new Pair<>(executor, proxy));
try {
mService.registerShortcutChangeCallback(mContext.getPackageName(),
- query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
- query.mActivity, query.mQueryFlags, proxy);
+ new ShortcutQueryWrapper(query), proxy);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
diff --git a/core/java/android/content/pm/ShortcutQueryWrapper.aidl b/core/java/android/content/pm/ShortcutQueryWrapper.aidl
new file mode 100644
index 0000000..d02600a
--- /dev/null
+++ b/core/java/android/content/pm/ShortcutQueryWrapper.aidl
@@ -0,0 +1,20 @@
+/**
+ * Copyright (c) 2020, 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;
+
+parcelable ShortcutQueryWrapper;
+
diff --git a/core/java/android/content/pm/ShortcutQueryWrapper.java b/core/java/android/content/pm/ShortcutQueryWrapper.java
new file mode 100644
index 0000000..c613441
--- /dev/null
+++ b/core/java/android/content/pm/ShortcutQueryWrapper.java
@@ -0,0 +1,190 @@
+/*
+ * Copyright (C) 2020 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;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.content.LocusId;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.DataClass;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @hide
+ */
+@DataClass(genParcelable = true, genToString = true)
+public final class ShortcutQueryWrapper extends LauncherApps.ShortcutQuery implements Parcelable {
+
+ public ShortcutQueryWrapper(LauncherApps.ShortcutQuery query) {
+ this();
+ mChangedSince = query.mChangedSince;
+ mPackage = query.mPackage;
+ mLocusIds = query.mLocusIds;
+ mShortcutIds = query.mShortcutIds;
+ mActivity = query.mActivity;
+ mQueryFlags = query.mQueryFlags;
+ }
+
+ public long getChangedSince() {
+ return mChangedSince;
+ }
+
+ @Nullable
+ public String getPackage() {
+ return mPackage;
+ }
+
+ @Nullable
+ public List<LocusId> getLocusIds() {
+ return mLocusIds;
+ }
+
+ @Nullable
+ public List<String> getShortcutIds() {
+ return mShortcutIds;
+ }
+
+ @Nullable
+ public ComponentName getActivity() {
+ return mActivity;
+ }
+
+ public int getQueryFlags() {
+ return mQueryFlags;
+ }
+
+ // Code below generated by codegen v1.0.14.
+ //
+ // DO NOT MODIFY!
+ // CHECKSTYLE:OFF Generated code
+ //
+ // To regenerate run:
+ // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java
+ //
+ // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+ // Settings > Editor > Code Style > Formatter Control
+ //@formatter:off
+
+
+ @DataClass.Generated.Member
+ public ShortcutQueryWrapper() {
+
+ // onConstructed(); // You can define this method to get a callback
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public String toString() {
+ // You can override field toString logic by defining methods like:
+ // String fieldNameToString() { ... }
+
+ return "ShortcutQueryWrapper { " +
+ " }";
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public void writeToParcel(@NonNull Parcel dest, int flags) {
+ // You can override field parcelling by defining methods like:
+ // void parcelFieldName(Parcel dest, int flags) { ... }
+
+ byte flg = 0;
+ if (mPackage != null) flg |= 0x2;
+ if (mShortcutIds != null) flg |= 0x4;
+ if (mLocusIds != null) flg |= 0x8;
+ if (mActivity != null) flg |= 0x10;
+ dest.writeByte(flg);
+ dest.writeLong(mChangedSince);
+ if (mPackage != null) dest.writeString(mPackage);
+ if (mShortcutIds != null) dest.writeStringList(mShortcutIds);
+ if (mLocusIds != null) dest.writeParcelableList(mLocusIds, flags);
+ if (mActivity != null) dest.writeTypedObject(mActivity, flags);
+ dest.writeInt(mQueryFlags);
+ }
+
+ @Override
+ @DataClass.Generated.Member
+ public int describeContents() { return 0; }
+
+ /** @hide */
+ @SuppressWarnings({"unchecked", "RedundantCast"})
+ @DataClass.Generated.Member
+ /* package-private */ ShortcutQueryWrapper(@NonNull Parcel in) {
+ // You can override field unparcelling by defining methods like:
+ // static FieldType unparcelFieldName(Parcel in) { ... }
+
+ byte flg = in.readByte();
+ long changedSince = in.readLong();
+ String pkg = (flg & 0x2) == 0 ? null : in.readString();
+ List<String> shortcutIds = null;
+ if ((flg & 0x4) != 0) {
+ shortcutIds = new ArrayList<>();
+ in.readStringList(shortcutIds);
+ }
+ List<LocusId> locusIds = null;
+ if ((flg & 0x8) != 0) {
+ locusIds = new ArrayList<>();
+ in.readParcelableList(locusIds, LocusId.class.getClassLoader());
+ }
+ ComponentName activity = (flg & 0x10) == 0 ? null
+ : (ComponentName) in.readTypedObject(ComponentName.CREATOR);
+ int queryFlags = in.readInt();
+
+ this.mChangedSince = changedSince;
+ this.mPackage = pkg;
+ this.mShortcutIds = shortcutIds;
+ this.mLocusIds = locusIds;
+ this.mActivity = activity;
+ this.mQueryFlags = queryFlags;
+ com.android.internal.util.AnnotationValidations.validate(
+ QueryFlags.class, null, mQueryFlags);
+
+ // onConstructed(); // You can define this method to get a callback
+ }
+
+ @DataClass.Generated.Member
+ public static final @NonNull Parcelable.Creator<ShortcutQueryWrapper> CREATOR
+ = new Parcelable.Creator<ShortcutQueryWrapper>() {
+ @Override
+ public ShortcutQueryWrapper[] newArray(int size) {
+ return new ShortcutQueryWrapper[size];
+ }
+
+ @Override
+ public ShortcutQueryWrapper createFromParcel(@NonNull Parcel in) {
+ return new ShortcutQueryWrapper(in);
+ }
+ };
+
+ @DataClass.Generated(
+ time = 1582049937960L,
+ codegenVersion = "1.0.14",
+ sourceFile = "frameworks/base/core/java/android/content/pm/ShortcutQueryWrapper.java",
+ inputSignatures = "public long getChangedSince()\npublic @android.annotation.Nullable java.lang.String getPackage()\npublic @android.annotation.Nullable java.util.List<android.content.LocusId> getLocusIds()\npublic @android.annotation.Nullable java.util.List<java.lang.String> getShortcutIds()\npublic @android.annotation.Nullable android.content.ComponentName getActivity()\npublic int getQueryFlags()\nclass ShortcutQueryWrapper extends android.content.pm.LauncherApps.ShortcutQuery implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genParcelable=true, genToString=true)")
+ @Deprecated
+ private void __metadata() {}
+
+
+ //@formatter:on
+ // End of generated code
+
+}
diff --git a/core/java/android/content/res/ResourcesImpl.java b/core/java/android/content/res/ResourcesImpl.java
index acdd47a..1fb212e 100644
--- a/core/java/android/content/res/ResourcesImpl.java
+++ b/core/java/android/content/res/ResourcesImpl.java
@@ -33,7 +33,6 @@
import android.content.res.AssetManager.AssetInputStream;
import android.content.res.Configuration.NativeConfig;
import android.content.res.Resources.NotFoundException;
-import android.graphics.Bitmap;
import android.graphics.ImageDecoder;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
@@ -43,8 +42,6 @@
import android.icu.text.PluralRules;
import android.os.Build;
import android.os.LocaleList;
-import android.os.SystemClock;
-import android.os.SystemProperties;
import android.os.Trace;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
@@ -83,22 +80,11 @@
private static final boolean DEBUG_LOAD = false;
private static final boolean DEBUG_CONFIG = false;
- static final String TAG_PRELOAD = TAG + ".preload";
-
@UnsupportedAppUsage
private static final boolean TRACE_FOR_PRELOAD = false; // Do we still need it?
@UnsupportedAppUsage
private static final boolean TRACE_FOR_MISS_PRELOAD = false; // Do we still need it?
- public static final boolean TRACE_FOR_DETAILED_PRELOAD =
- SystemProperties.getBoolean("debug.trace_resource_preload", false);
-
- /** Used only when TRACE_FOR_DETAILED_PRELOAD is true. */
- private static int sPreloadTracingNumLoadedDrawables;
- private long mPreloadTracingPreloadStartTime;
- private long mPreloadTracingStartBitmapSize;
- private long mPreloadTracingStartBitmapCount;
-
private static final int ID_OTHER = 0x01000004;
private static final Object sSync = new Object();
@@ -658,16 +644,6 @@
Drawable dr;
boolean needsNewDrawableAfterCache = false;
if (cs != null) {
- if (TRACE_FOR_DETAILED_PRELOAD) {
- // Log only framework resources
- if (((id >>> 24) == 0x1) && (android.os.Process.myUid() != 0)) {
- final String name = getResourceName(id);
- if (name != null) {
- Log.d(TAG_PRELOAD, "Hit preloaded FW drawable #"
- + Integer.toHexString(id) + " " + name);
- }
- }
- }
dr = cs.newDrawable(wrapper);
} else if (isColorDrawable) {
dr = new ColorDrawable(value.data);
@@ -864,18 +840,6 @@
}
}
- // For preload tracing.
- long startTime = 0;
- int startBitmapCount = 0;
- long startBitmapSize = 0;
- int startDrawableCount = 0;
- if (TRACE_FOR_DETAILED_PRELOAD) {
- startTime = System.nanoTime();
- startBitmapCount = Bitmap.sPreloadTracingNumInstantiatedBitmaps;
- startBitmapSize = Bitmap.sPreloadTracingTotalBitmapsSize;
- startDrawableCount = sPreloadTracingNumLoadedDrawables;
- }
-
if (DEBUG_LOAD) {
Log.v(TAG, "Loading drawable for cookie " + value.assetCookie + ": " + file);
}
@@ -921,37 +885,6 @@
}
Trace.traceEnd(Trace.TRACE_TAG_RESOURCES);
- if (TRACE_FOR_DETAILED_PRELOAD) {
- if (((id >>> 24) == 0x1)) {
- final String name = getResourceName(id);
- if (name != null) {
- final long time = System.nanoTime() - startTime;
- final int loadedBitmapCount =
- Bitmap.sPreloadTracingNumInstantiatedBitmaps - startBitmapCount;
- final long loadedBitmapSize =
- Bitmap.sPreloadTracingTotalBitmapsSize - startBitmapSize;
- final int loadedDrawables =
- sPreloadTracingNumLoadedDrawables - startDrawableCount;
-
- sPreloadTracingNumLoadedDrawables++;
-
- final boolean isRoot = (android.os.Process.myUid() == 0);
-
- Log.d(TAG_PRELOAD,
- (isRoot ? "Preloaded FW drawable #"
- : "Loaded non-preloaded FW drawable #")
- + Integer.toHexString(id)
- + " " + name
- + " " + file
- + " " + dr.getClass().getCanonicalName()
- + " #nested_drawables= " + loadedDrawables
- + " #bitmaps= " + loadedBitmapCount
- + " total_bitmap_size= " + loadedBitmapSize
- + " in[us] " + (time / 1000));
- }
- }
- }
-
return dr;
}
@@ -1312,13 +1245,6 @@
mPreloading = true;
mConfiguration.densityDpi = DisplayMetrics.DENSITY_DEVICE;
updateConfiguration(null, null, null);
-
- if (TRACE_FOR_DETAILED_PRELOAD) {
- mPreloadTracingPreloadStartTime = SystemClock.uptimeMillis();
- mPreloadTracingStartBitmapSize = Bitmap.sPreloadTracingTotalBitmapsSize;
- mPreloadTracingStartBitmapCount = Bitmap.sPreloadTracingNumInstantiatedBitmaps;
- Log.d(TAG_PRELOAD, "Preload starting");
- }
}
}
@@ -1328,16 +1254,6 @@
*/
void finishPreloading() {
if (mPreloading) {
- if (TRACE_FOR_DETAILED_PRELOAD) {
- final long time = SystemClock.uptimeMillis() - mPreloadTracingPreloadStartTime;
- final long size =
- Bitmap.sPreloadTracingTotalBitmapsSize - mPreloadTracingStartBitmapSize;
- final long count = Bitmap.sPreloadTracingNumInstantiatedBitmaps
- - mPreloadTracingStartBitmapCount;
- Log.d(TAG_PRELOAD, "Preload finished, "
- + count + " bitmaps of " + size + " bytes in " + time + " ms");
- }
-
mPreloading = false;
flushLayoutCache();
}
diff --git a/core/java/android/database/sqlite/SQLiteQueryBuilder.java b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
index 36ec67e..92044d7 100644
--- a/core/java/android/database/sqlite/SQLiteQueryBuilder.java
+++ b/core/java/android/database/sqlite/SQLiteQueryBuilder.java
@@ -798,6 +798,7 @@
}
private void enforceStrictToken(@NonNull String token) {
+ if (TextUtils.isEmpty(token)) return;
if (isTableOrColumn(token)) return;
if (SQLiteTokenizer.isFunction(token)) return;
if (SQLiteTokenizer.isType(token)) return;
diff --git a/core/java/android/hardware/GeomagneticField.java b/core/java/android/hardware/GeomagneticField.java
index 0d7b695..9520dd9 100644
--- a/core/java/android/hardware/GeomagneticField.java
+++ b/core/java/android/hardware/GeomagneticField.java
@@ -26,7 +26,7 @@
* <p>This uses the World Magnetic Model produced by the United States National
* Geospatial-Intelligence Agency. More details about the model can be found at
* <a href="http://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml">http://www.ngdc.noaa.gov/geomag/WMM/DoDWMM.shtml</a>.
- * This class currently uses WMM-2015 which is valid until 2020, but should
+ * This class currently uses WMM-2020 which is valid until 2025, but should
* produce acceptable results for several years after that. Future versions of
* Android may use a newer version of the model.
*/
@@ -48,69 +48,72 @@
static private final float EARTH_REFERENCE_RADIUS_KM = 6371.2f;
// These coefficients and the formulae used below are from:
- // NOAA Technical Report: The US/UK World Magnetic Model for 2015-2020
+ // NOAA Technical Report: The US/UK World Magnetic Model for 2020-2025
static private final float[][] G_COEFF = new float[][] {
{ 0.0f },
- { -29438.5f, -1501.1f },
- { -2445.3f, 3012.5f, 1676.6f },
- { 1351.1f, -2352.3f, 1225.6f, 581.9f },
- { 907.2f, 813.7f, 120.3f, -335.0f, 70.3f },
- { -232.6f, 360.1f, 192.4f, -141.0f, -157.4f, 4.3f },
- { 69.5f, 67.4f, 72.8f, -129.8f, -29.0f, 13.2f, -70.9f },
- { 81.6f, -76.1f, -6.8f, 51.9f, 15.0f, 9.3f, -2.8f, 6.7f },
- { 24.0f, 8.6f, -16.9f, -3.2f, -20.6f, 13.3f, 11.7f, -16.0f, -2.0f },
- { 5.4f, 8.8f, 3.1f, -3.1f, 0.6f, -13.3f, -0.1f, 8.7f, -9.1f, -10.5f },
- { -1.9f, -6.5f, 0.2f, 0.6f, -0.6f, 1.7f, -0.7f, 2.1f, 2.3f, -1.8f, -3.6f },
- { 3.1f, -1.5f, -2.3f, 2.1f, -0.9f, 0.6f, -0.7f, 0.2f, 1.7f, -0.2f, 0.4f, 3.5f },
- { -2.0f, -0.3f, 0.4f, 1.3f, -0.9f, 0.9f, 0.1f, 0.5f, -0.4f, -0.4f, 0.2f, -0.9f, 0.0f } };
+ { -29404.5f, -1450.7f },
+ { -2500.0f, 2982.0f, 1676.8f },
+ { 1363.9f, -2381.0f, 1236.2f, 525.7f },
+ { 903.1f, 809.4f, 86.2f, -309.4f, 47.9f },
+ { -234.4f, 363.1f, 187.8f, -140.7f, -151.2f, 13.7f },
+ { 65.9f, 65.6f, 73.0f, -121.5f, -36.2f, 13.5f, -64.7f },
+ { 80.6f, -76.8f, -8.3f, 56.5f, 15.8f, 6.4f, -7.2f, 9.8f },
+ { 23.6f, 9.8f, -17.5f, -0.4f, -21.1f, 15.3f, 13.7f, -16.5f, -0.3f },
+ { 5.0f, 8.2f, 2.9f, -1.4f, -1.1f, -13.3f, 1.1f, 8.9f, -9.3f, -11.9f },
+ { -1.9f, -6.2f, -0.1f, 1.7f, -0.9f, 0.6f, -0.9f, 1.9f, 1.4f, -2.4f, -3.9f },
+ { 3.0f, -1.4f, -2.5f, 2.4f, -0.9f, 0.3f, -0.7f, -0.1f, 1.4f, -0.6f, 0.2f, 3.1f },
+ { -2.0f, -0.1f, 0.5f, 1.3f, -1.2f, 0.7f, 0.3f, 0.5f, -0.2f, -0.5f, 0.1f, -1.1f, -0.3f } };
+
static private final float[][] H_COEFF = new float[][] {
{ 0.0f },
- { 0.0f, 4796.2f },
- { 0.0f, -2845.6f, -642.0f },
- { 0.0f, -115.3f, 245.0f, -538.3f },
- { 0.0f, 283.4f, -188.6f, 180.9f, -329.5f },
- { 0.0f, 47.4f, 196.9f, -119.4f, 16.1f, 100.1f },
- { 0.0f, -20.7f, 33.2f, 58.8f, -66.5f, 7.3f, 62.5f },
- { 0.0f, -54.1f, -19.4f, 5.6f, 24.4f, 3.3f, -27.5f, -2.3f },
- { 0.0f, 10.2f, -18.1f, 13.2f, -14.6f, 16.2f, 5.7f, -9.1f, 2.2f },
- { 0.0f, -21.6f, 10.8f, 11.7f, -6.8f, -6.9f, 7.8f, 1.0f, -3.9f, 8.5f },
- { 0.0f, 3.3f, -0.3f, 4.6f, 4.4f, -7.9f, -0.6f, -4.1f, -2.8f, -1.1f, -8.7f },
- { 0.0f, -0.1f, 2.1f, -0.7f, -1.1f, 0.7f, -0.2f, -2.1f, -1.5f, -2.5f, -2.0f, -2.3f },
- { 0.0f, -1.0f, 0.5f, 1.8f, -2.2f, 0.3f, 0.7f, -0.1f, 0.3f, 0.2f, -0.9f, -0.2f, 0.7f } };
+ { 0.0f, 4652.9f },
+ { 0.0f, -2991.6f, -734.8f },
+ { 0.0f, -82.2f, 241.8f, -542.9f },
+ { 0.0f, 282.0f, -158.4f, 199.8f, -350.1f },
+ { 0.0f, 47.7f, 208.4f, -121.3f, 32.2f, 99.1f },
+ { 0.0f, -19.1f, 25.0f, 52.7f, -64.4f, 9.0f, 68.1f },
+ { 0.0f, -51.4f, -16.8f, 2.3f, 23.5f, -2.2f, -27.2f, -1.9f },
+ { 0.0f, 8.4f, -15.3f, 12.8f, -11.8f, 14.9f, 3.6f, -6.9f, 2.8f },
+ { 0.0f, -23.3f, 11.1f, 9.8f, -5.1f, -6.2f, 7.8f, 0.4f, -1.5f, 9.7f },
+ { 0.0f, 3.4f, -0.2f, 3.5f, 4.8f, -8.6f, -0.1f, -4.2f, -3.4f, -0.1f, -8.8f },
+ { 0.0f, 0.0f, 2.6f, -0.5f, -0.4f, 0.6f, -0.2f, -1.7f, -1.6f, -3.0f, -2.0f, -2.6f },
+ { 0.0f, -1.2f, 0.5f, 1.3f, -1.8f, 0.1f, 0.7f, -0.1f, 0.6f, 0.2f, -0.9f, 0.0f, 0.5f } };
+
static private final float[][] DELTA_G = new float[][] {
{ 0.0f },
- { 10.7f, 17.9f },
- { -8.6f, -3.3f, 2.4f },
- { 3.1f, -6.2f, -0.4f, -10.4f },
- { -0.4f, 0.8f, -9.2f, 4.0f, -4.2f },
- { -0.2f, 0.1f, -1.4f, 0.0f, 1.3f, 3.8f },
- { -0.5f, -0.2f, -0.6f, 2.4f, -1.1f, 0.3f, 1.5f },
- { 0.2f, -0.2f, -0.4f, 1.3f, 0.2f, -0.4f, -0.9f, 0.3f },
- { 0.0f, 0.1f, -0.5f, 0.5f, -0.2f, 0.4f, 0.2f, -0.4f, 0.3f },
- { 0.0f, -0.1f, -0.1f, 0.4f, -0.5f, -0.2f, 0.1f, 0.0f, -0.2f, -0.1f },
- { 0.0f, 0.0f, -0.1f, 0.3f, -0.1f, -0.1f, -0.1f, 0.0f, -0.2f, -0.1f, -0.2f },
- { 0.0f, 0.0f, -0.1f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -0.1f, -0.1f },
- { 0.1f, 0.0f, 0.0f, 0.1f, -0.1f, 0.0f, 0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f } };
+ { 6.7f, 7.7f },
+ { -11.5f, -7.1f, -2.2f },
+ { 2.8f, -6.2f, 3.4f, -12.2f },
+ { -1.1f, -1.6f, -6.0f, 5.4f, -5.5f },
+ { -0.3f, 0.6f, -0.7f, 0.1f, 1.2f, 1.0f },
+ { -0.6f, -0.4f, 0.5f, 1.4f, -1.4f, 0.0f, 0.8f },
+ { -0.1f, -0.3f, -0.1f, 0.7f, 0.2f, -0.5f, -0.8f, 1.0f },
+ { -0.1f, 0.1f, -0.1f, 0.5f, -0.1f, 0.4f, 0.5f, 0.0f, 0.4f },
+ { -0.1f, -0.2f, 0.0f, 0.4f, -0.3f, 0.0f, 0.3f, 0.0f, 0.0f, -0.4f },
+ { 0.0f, 0.0f, 0.0f, 0.2f, -0.1f, -0.2f, 0.0f, -0.1f, -0.2f, -0.1f, 0.0f },
+ { 0.0f, -0.1f, 0.0f, 0.0f, 0.0f, -0.1f, 0.0f, 0.0f, -0.1f, -0.1f, -0.1f, -0.1f },
+ { 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, -0.1f } };
+
static private final float[][] DELTA_H = new float[][] {
{ 0.0f },
- { 0.0f, -26.8f },
- { 0.0f, -27.1f, -13.3f },
- { 0.0f, 8.4f, -0.4f, 2.3f },
- { 0.0f, -0.6f, 5.3f, 3.0f, -5.3f },
- { 0.0f, 0.4f, 1.6f, -1.1f, 3.3f, 0.1f },
- { 0.0f, 0.0f, -2.2f, -0.7f, 0.1f, 1.0f, 1.3f },
- { 0.0f, 0.7f, 0.5f, -0.2f, -0.1f, -0.7f, 0.1f, 0.1f },
- { 0.0f, -0.3f, 0.3f, 0.3f, 0.6f, -0.1f, -0.2f, 0.3f, 0.0f },
- { 0.0f, -0.2f, -0.1f, -0.2f, 0.1f, 0.1f, 0.0f, -0.2f, 0.4f, 0.3f },
- { 0.0f, 0.1f, -0.1f, 0.0f, 0.0f, -0.2f, 0.1f, -0.1f, -0.2f, 0.1f, -0.1f },
- { 0.0f, 0.0f, 0.1f, 0.0f, 0.1f, 0.0f, 0.0f, 0.1f, 0.0f, -0.1f, 0.0f, -0.1f },
- { 0.0f, 0.0f, 0.0f, -0.1f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f } };
+ { 0.0f, -25.1f },
+ { 0.0f, -30.2f, -23.9f },
+ { 0.0f, 5.7f, -1.0f, 1.1f },
+ { 0.0f, 0.2f, 6.9f, 3.7f, -5.6f },
+ { 0.0f, 0.1f, 2.5f, -0.9f, 3.0f, 0.5f },
+ { 0.0f, 0.1f, -1.8f, -1.4f, 0.9f, 0.1f, 1.0f },
+ { 0.0f, 0.5f, 0.6f, -0.7f, -0.2f, -1.2f, 0.2f, 0.3f },
+ { 0.0f, -0.3f, 0.7f, -0.2f, 0.5f, -0.3f, -0.5f, 0.4f, 0.1f },
+ { 0.0f, -0.3f, 0.2f, -0.4f, 0.4f, 0.1f, 0.0f, -0.2f, 0.5f, 0.2f },
+ { 0.0f, 0.0f, 0.1f, -0.3f, 0.1f, -0.2f, 0.1f, 0.0f, -0.1f, 0.2f, 0.0f },
+ { 0.0f, 0.0f, 0.1f, 0.0f, 0.2f, 0.0f, 0.0f, 0.1f, 0.0f, -0.1f, 0.0f, 0.0f },
+ { 0.0f, 0.0f, 0.0f, -0.1f, 0.1f, 0.0f, 0.0f, 0.0f, 0.1f, 0.0f, 0.0f, 0.0f, -0.1f } };
static private final long BASE_TIME =
- new GregorianCalendar(2015, 1, 1).getTimeInMillis();
+ new GregorianCalendar(2020, 1, 1).getTimeInMillis();
// The ratio between the Gauss-normalized associated Legendre functions and
// the Schmid quasi-normalized ones. Compute these once staticly since they
diff --git a/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java b/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java
deleted file mode 100644
index 5544eae..0000000
--- a/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2020 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.hardware.biometrics;
-
-import android.os.NativeHandle;
-import android.os.ParcelFileDescriptor;
-
-import java.io.IOException;
-
-/**
- * A class that contains utilities for IBiometricNativeHandle.
- *
- * @hide
- */
-public final class BiometricNativeHandleUtils {
-
- private BiometricNativeHandleUtils() {
- }
-
- /**
- * Converts a {@link NativeHandle} into an {@link IBiometricNativeHandle} by duplicating the
- * underlying file descriptors.
- *
- * Both the original and new handle must be closed after use.
- *
- * @param h {@link NativeHandle}. Usually used to identify a WindowManager window. Can be null.
- * @return A {@link IBiometricNativeHandle} representation of {@code h}. Will be null if
- * {@code h} or its raw file descriptors are null.
- */
- public static IBiometricNativeHandle dup(NativeHandle h) {
- IBiometricNativeHandle handle = null;
- if (h != null && h.getFileDescriptors() != null && h.getInts() != null) {
- handle = new IBiometricNativeHandle();
- handle.ints = h.getInts().clone();
- handle.fds = new ParcelFileDescriptor[h.getFileDescriptors().length];
- for (int i = 0; i < h.getFileDescriptors().length; ++i) {
- try {
- handle.fds[i] = ParcelFileDescriptor.dup(h.getFileDescriptors()[i]);
- } catch (IOException e) {
- return null;
- }
- }
- }
- return handle;
- }
-
- /**
- * Closes the handle's file descriptors.
- *
- * @param h {@link IBiometricNativeHandle} handle.
- */
- public static void close(IBiometricNativeHandle h) {
- if (h != null) {
- for (ParcelFileDescriptor fd : h.fds) {
- if (fd != null) {
- try {
- fd.close();
- } catch (IOException e) {
- // do nothing.
- }
- }
- }
- }
- }
-}
diff --git a/core/java/android/hardware/camera2/CameraCaptureSession.java b/core/java/android/hardware/camera2/CameraCaptureSession.java
index 2e48ce9..f69bbe5 100644
--- a/core/java/android/hardware/camera2/CameraCaptureSession.java
+++ b/core/java/android/hardware/camera2/CameraCaptureSession.java
@@ -861,6 +861,12 @@
* Switch the current capture session and a given set of registered camera surfaces
* to offline processing mode.
*
+ * <p>Devices support this method will report
+ * {@link CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING OFFLINE_PROCESSING}
+ * capability in {@link CameraCharacteristics#REQUEST_AVAILABLE_CAPABILITIES}. When this method
+ * is supported, applications can use it to improve the latency of closing camera or recreating
+ * capture session without losing the in progresss capture request outputs.</p>
+ *
* <p>Offline processing mode and the corresponding {@link CameraOfflineSession} differ from
* a regular online camera capture session in several ways. Successful offline switches will
* close the currently active camera capture session. Camera clients are also allowed
@@ -915,10 +921,12 @@
* @see CameraOfflineSession
* @see CameraOfflineSessionCallback
* @see #supportsOfflineProcessing
+ * @see CameraMetadata#REQUEST_AVAILABLE_CAPABILITIES_OFFLINE_PROCESSING
*/
@Nullable
public CameraOfflineSession switchToOffline(@NonNull Collection<Surface> offlineSurfaces,
- @NonNull Executor executor, @NonNull CameraOfflineSessionCallback listener)
+ @NonNull @CallbackExecutor Executor executor,
+ @NonNull CameraOfflineSessionCallback listener)
throws CameraAccessException {
throw new UnsupportedOperationException("Subclasses must override this method");
}
diff --git a/core/java/android/hardware/face/FaceManager.java b/core/java/android/hardware/face/FaceManager.java
index b422252..333f711 100644
--- a/core/java/android/hardware/face/FaceManager.java
+++ b/core/java/android/hardware/face/FaceManager.java
@@ -29,9 +29,7 @@
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricFaceConstants;
-import android.hardware.biometrics.BiometricNativeHandleUtils;
import android.hardware.biometrics.CryptoObject;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.os.Binder;
import android.os.CancellationSignal;
@@ -40,13 +38,13 @@
import android.os.IBinder;
import android.os.IRemoteCallback;
import android.os.Looper;
-import android.os.NativeHandle;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.Trace;
import android.os.UserHandle;
import android.util.Log;
import android.util.Slog;
+import android.view.Surface;
import com.android.internal.R;
import com.android.internal.os.SomeArgs;
@@ -251,15 +249,14 @@
/**
* Defaults to {@link FaceManager#enroll(int, byte[], CancellationSignal, EnrollmentCallback,
- * int[], NativeHandle)} with {@code windowId} set to null.
+ * int[], Surface)} with {@code surface} set to null.
*
- * @see FaceManager#enroll(int, byte[], CancellationSignal, EnrollmentCallback, int[],
- * NativeHandle)
+ * @see FaceManager#enroll(int, byte[], CancellationSignal, EnrollmentCallback, int[], Surface)
*/
@RequiresPermission(MANAGE_BIOMETRIC)
public void enroll(int userId, byte[] token, CancellationSignal cancel,
EnrollmentCallback callback, int[] disabledFeatures) {
- enroll(userId, token, cancel, callback, disabledFeatures, null /* windowId */);
+ enroll(userId, token, cancel, callback, disabledFeatures, null /* surface */);
}
/**
@@ -277,13 +274,13 @@
* @param flags optional flags
* @param userId the user to whom this face will belong to
* @param callback an object to receive enrollment events
- * @param windowId optional ID of a camera preview window for a single-camera device. Must be
- * null if not used.
+ * @param surface optional camera preview surface for a single-camera device. Must be null if
+ * not used.
* @hide
*/
@RequiresPermission(MANAGE_BIOMETRIC)
public void enroll(int userId, byte[] token, CancellationSignal cancel,
- EnrollmentCallback callback, int[] disabledFeatures, @Nullable NativeHandle windowId) {
+ EnrollmentCallback callback, int[] disabledFeatures, @Nullable Surface surface) {
if (callback == null) {
throw new IllegalArgumentException("Must supply an enrollment callback");
}
@@ -298,12 +295,11 @@
}
if (mService != null) {
- IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
try {
mEnrollmentCallback = callback;
Trace.beginSection("FaceManager#enroll");
mService.enroll(userId, mToken, token, mServiceReceiver,
- mContext.getOpPackageName(), disabledFeatures, handle);
+ mContext.getOpPackageName(), disabledFeatures, surface);
} catch (RemoteException e) {
Log.w(TAG, "Remote exception in enroll: ", e);
// Though this may not be a hardware issue, it will cause apps to give up or
@@ -313,7 +309,6 @@
0 /* vendorCode */));
} finally {
Trace.endSection();
- BiometricNativeHandleUtils.close(handle);
}
}
}
diff --git a/core/java/android/hardware/face/IFaceService.aidl b/core/java/android/hardware/face/IFaceService.aidl
index 37b7456..7b37dbb 100644
--- a/core/java/android/hardware/face/IFaceService.aidl
+++ b/core/java/android/hardware/face/IFaceService.aidl
@@ -15,11 +15,11 @@
*/
package android.hardware.face;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.face.IFaceServiceReceiver;
import android.hardware.face.Face;
+import android.view.Surface;
/**
* Communication channel from client to the face service. These methods are all require the
@@ -52,7 +52,7 @@
// Start face enrollment
void enroll(int userId, IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
- String opPackageName, in int [] disabledFeatures, in IBiometricNativeHandle windowId);
+ String opPackageName, in int [] disabledFeatures, in Surface surface);
// Start remote face enrollment
void enrollRemotely(int userId, IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index 9145142..449aef7 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -32,9 +32,7 @@
import android.content.pm.PackageManager;
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricFingerprintConstants;
-import android.hardware.biometrics.BiometricNativeHandleUtils;
import android.hardware.biometrics.BiometricPrompt;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.os.Binder;
import android.os.CancellationSignal;
@@ -43,12 +41,12 @@
import android.os.IBinder;
import android.os.IRemoteCallback;
import android.os.Looper;
-import android.os.NativeHandle;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.UserHandle;
import android.security.identity.IdentityCredential;
import android.util.Slog;
+import android.view.Surface;
import java.security.Signature;
import java.util.List;
@@ -416,17 +414,17 @@
/**
* Defaults to {@link FingerprintManager#authenticate(CryptoObject, CancellationSignal, int,
- * AuthenticationCallback, Handler, int, NativeHandle)} with {@code windowId} set to null.
+ * AuthenticationCallback, Handler, int, Surface)} with {@code surface} set to null.
*
* @see FingerprintManager#authenticate(CryptoObject, CancellationSignal, int,
- * AuthenticationCallback, Handler, int, NativeHandle)
+ * AuthenticationCallback, Handler, int, Surface)
*
* @hide
*/
@RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
int flags, @NonNull AuthenticationCallback callback, Handler handler, int userId) {
- authenticate(crypto, cancel, flags, callback, handler, userId, null /* windowId */);
+ authenticate(crypto, cancel, flags, callback, handler, userId, null /* surface */);
}
/**
@@ -434,14 +432,14 @@
* CancellationSignal, int, AuthenticationCallback, Handler)}. This version does not
* display the BiometricPrompt.
* @param userId the user ID that the fingerprint hardware will authenticate for.
- * @param windowId for optical fingerprint sensors that require active illumination by the OLED
+ * @param surface for optical fingerprint sensors that require active illumination by the OLED
* display. Should be null for devices that don't require illumination.
* @hide
*/
@RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
int flags, @NonNull AuthenticationCallback callback, Handler handler, int userId,
- @Nullable NativeHandle windowId) {
+ @Nullable Surface surface) {
if (callback == null) {
throw new IllegalArgumentException("Must supply an authentication callback");
}
@@ -456,14 +454,13 @@
}
if (mService != null) {
- IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
try {
useHandler(handler);
mAuthenticationCallback = callback;
mCryptoObject = crypto;
long sessionId = crypto != null ? crypto.getOpId() : 0;
mService.authenticate(mToken, sessionId, userId, mServiceReceiver, flags,
- mContext.getOpPackageName(), handle);
+ mContext.getOpPackageName(), surface);
} catch (RemoteException e) {
Slog.w(TAG, "Remote exception while authenticating: ", e);
// Though this may not be a hardware issue, it will cause apps to give up or try
@@ -471,25 +468,23 @@
callback.onAuthenticationError(FINGERPRINT_ERROR_HW_UNAVAILABLE,
getErrorString(mContext, FINGERPRINT_ERROR_HW_UNAVAILABLE,
0 /* vendorCode */));
- } finally {
- BiometricNativeHandleUtils.close(handle);
}
}
}
/**
* Defaults to {@link FingerprintManager#enroll(byte[], CancellationSignal, int, int,
- * EnrollmentCallback, NativeHandle)} with {@code windowId} set to null.
+ * EnrollmentCallback, Surface)} with {@code surface} set to null.
*
* @see FingerprintManager#enroll(byte[], CancellationSignal, int, int, EnrollmentCallback,
- * NativeHandle)
+ * Surface)
*
* @hide
*/
@RequiresPermission(MANAGE_FINGERPRINT)
public void enroll(byte [] token, CancellationSignal cancel, int flags,
int userId, EnrollmentCallback callback) {
- enroll(token, cancel, flags, userId, callback, null /* windowId */);
+ enroll(token, cancel, flags, userId, callback, null /* surface */);
}
/**
@@ -510,7 +505,7 @@
*/
@RequiresPermission(MANAGE_FINGERPRINT)
public void enroll(byte [] token, CancellationSignal cancel, int flags,
- int userId, EnrollmentCallback callback, @Nullable NativeHandle windowId) {
+ int userId, EnrollmentCallback callback, @Nullable Surface surface) {
if (userId == UserHandle.USER_CURRENT) {
userId = getCurrentUserId();
}
@@ -528,11 +523,10 @@
}
if (mService != null) {
- IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
try {
mEnrollmentCallback = callback;
mService.enroll(mToken, token, userId, mServiceReceiver, flags,
- mContext.getOpPackageName(), handle);
+ mContext.getOpPackageName(), surface);
} catch (RemoteException e) {
Slog.w(TAG, "Remote exception in enroll: ", e);
// Though this may not be a hardware issue, it will cause apps to give up or try
@@ -540,8 +534,6 @@
callback.onEnrollmentError(FINGERPRINT_ERROR_HW_UNAVAILABLE,
getErrorString(mContext, FINGERPRINT_ERROR_HW_UNAVAILABLE,
0 /* vendorCode */));
- } finally {
- BiometricNativeHandleUtils.close(handle);
}
}
}
diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
index c33e445..c928f01 100644
--- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl
+++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
@@ -15,12 +15,12 @@
*/
package android.hardware.fingerprint;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.fingerprint.IFingerprintClientActiveCallback;
import android.hardware.fingerprint.IFingerprintServiceReceiver;
import android.hardware.fingerprint.Fingerprint;
+import android.view.Surface;
import java.util.List;
/**
@@ -33,7 +33,7 @@
// through FingerprintManager now.
void authenticate(IBinder token, long sessionId, int userId,
IFingerprintServiceReceiver receiver, int flags, String opPackageName,
- in IBiometricNativeHandle windowId);
+ in Surface surface);
// This method prepares the service to start authenticating, but doesn't start authentication.
// This is protected by the MANAGE_BIOMETRIC signatuer permission. This method should only be
@@ -42,7 +42,7 @@
// startPreparedClient().
void prepareForAuthentication(IBinder token, long sessionId, int userId,
IBiometricServiceReceiverInternal wrapperReceiver, String opPackageName, int cookie,
- int callingUid, int callingPid, int callingUserId, in IBiometricNativeHandle windowId);
+ int callingUid, int callingPid, int callingUserId, in Surface surface);
// Starts authentication with the previously prepared client.
void startPreparedClient(int cookie);
@@ -57,7 +57,7 @@
// Start fingerprint enrollment
void enroll(IBinder token, in byte [] cryptoToken, int groupId, IFingerprintServiceReceiver receiver,
- int flags, String opPackageName, in IBiometricNativeHandle windowId);
+ int flags, String opPackageName, in Surface surface);
// Cancel enrollment in progress
void cancelEnrollment(IBinder token);
diff --git a/core/java/android/net/NetworkIdentity.java b/core/java/android/net/NetworkIdentity.java
index c1198aa..2cf3531 100644
--- a/core/java/android/net/NetworkIdentity.java
+++ b/core/java/android/net/NetworkIdentity.java
@@ -25,6 +25,7 @@
import android.net.wifi.WifiManager;
import android.os.Build;
import android.service.NetworkIdentityProto;
+import android.telephony.Annotation.NetworkType;
import android.util.Slog;
import android.util.proto.ProtoOutputStream;
@@ -42,12 +43,9 @@
/**
* When enabled, combine all {@link #mSubType} together under
* {@link #SUBTYPE_COMBINED}.
- *
- * @deprecated we no longer offer to collect statistics on a per-subtype
- * basis; this is always disabled.
*/
- @Deprecated
- public static final boolean COMBINE_SUBTYPE_ENABLED = true;
+ // TODO: make this flag configurable through settings. See http://b/146415925
+ public static final boolean COMBINE_SUBTYPE_ENABLED = false;
public static final int SUBTYPE_COMBINED = -1;
@@ -187,13 +185,14 @@
}
/**
- * Build a {@link NetworkIdentity} from the given {@link NetworkState},
- * assuming that any mobile networks are using the current IMSI.
+ * Build a {@link NetworkIdentity} from the given {@link NetworkState} and {@code subType},
+ * assuming that any mobile networks are using the current IMSI. The subType if applicable,
+ * should be set as one of the TelephonyManager.NETWORK_TYPE_* constants, or
+ * {@link android.telephony.TelephonyManager#NETWORK_TYPE_UNKNOWN} if not.
*/
public static NetworkIdentity buildNetworkIdentity(Context context, NetworkState state,
- boolean defaultNetwork) {
+ boolean defaultNetwork, @NetworkType int subType) {
final int type = state.networkInfo.getType();
- final int subType = state.networkInfo.getSubtype();
String subscriberId = null;
String networkId = null;
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index 5498f74..cb9463a 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -34,9 +34,13 @@
import static android.net.NetworkStats.ROAMING_YES;
import static android.net.wifi.WifiInfo.sanitizeSsid;
+import android.annotation.Nullable;
import android.compat.annotation.UnsupportedAppUsage;
import android.os.Parcel;
import android.os.Parcelable;
+import android.telephony.Annotation.NetworkType;
+import android.telephony.TelephonyManager;
+import android.text.TextUtils;
import android.util.BackupUtils;
import android.util.Log;
@@ -73,6 +77,14 @@
public static final int MATCH_BLUETOOTH = 8;
public static final int MATCH_PROXY = 9;
+ /**
+ * Include all network types when filtering. This is meant to merge in with the
+ * {@code TelephonyManager.NETWORK_TYPE_*} constants, and thus needs to stay in sync.
+ *
+ * @hide
+ */
+ public static final int NETWORK_TYPE_ALL = -1;
+
private static boolean isKnownMatchRule(final int rule) {
switch (rule) {
case MATCH_MOBILE:
@@ -117,7 +129,22 @@
}
/**
- * Template to match {@link ConnectivityManager#TYPE_MOBILE} networks,
+ * Template to match cellular networks with the given IMSI and {@code ratType}.
+ * Use {@link #NETWORK_TYPE_ALL} to include all network types when filtering.
+ * See {@code TelephonyManager.NETWORK_TYPE_*}.
+ */
+ public static NetworkTemplate buildTemplateMobileWithRatType(@Nullable String subscriberId,
+ @NetworkType int ratType) {
+ if (TextUtils.isEmpty(subscriberId)) {
+ return new NetworkTemplate(MATCH_MOBILE_WILDCARD, null, null, null,
+ METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, ratType);
+ }
+ return new NetworkTemplate(MATCH_MOBILE, subscriberId, new String[]{subscriberId}, null,
+ METERED_ALL, ROAMING_ALL, DEFAULT_NETWORK_ALL, ratType);
+ }
+
+ /**
+ * Template to match metered {@link ConnectivityManager#TYPE_MOBILE} networks,
* regardless of IMSI.
*/
@UnsupportedAppUsage
@@ -126,7 +153,7 @@
}
/**
- * Template to match all {@link ConnectivityManager#TYPE_WIFI} networks,
+ * Template to match all metered {@link ConnectivityManager#TYPE_WIFI} networks,
* regardless of SSID.
*/
@UnsupportedAppUsage
@@ -192,6 +219,7 @@
private final int mMetered;
private final int mRoaming;
private final int mDefaultNetwork;
+ private final int mSubType;
@UnsupportedAppUsage
public NetworkTemplate(int matchRule, String subscriberId, String networkId) {
@@ -201,11 +229,11 @@
public NetworkTemplate(int matchRule, String subscriberId, String[] matchSubscriberIds,
String networkId) {
this(matchRule, subscriberId, matchSubscriberIds, networkId, METERED_ALL, ROAMING_ALL,
- DEFAULT_NETWORK_ALL);
+ DEFAULT_NETWORK_ALL, NETWORK_TYPE_ALL);
}
public NetworkTemplate(int matchRule, String subscriberId, String[] matchSubscriberIds,
- String networkId, int metered, int roaming, int defaultNetwork) {
+ String networkId, int metered, int roaming, int defaultNetwork, int subType) {
mMatchRule = matchRule;
mSubscriberId = subscriberId;
mMatchSubscriberIds = matchSubscriberIds;
@@ -213,6 +241,7 @@
mMetered = metered;
mRoaming = roaming;
mDefaultNetwork = defaultNetwork;
+ mSubType = subType;
if (!isKnownMatchRule(matchRule)) {
Log.e(TAG, "Unknown network template rule " + matchRule
@@ -228,6 +257,7 @@
mMetered = in.readInt();
mRoaming = in.readInt();
mDefaultNetwork = in.readInt();
+ mSubType = in.readInt();
}
@Override
@@ -239,6 +269,7 @@
dest.writeInt(mMetered);
dest.writeInt(mRoaming);
dest.writeInt(mDefaultNetwork);
+ dest.writeInt(mSubType);
}
@Override
@@ -271,13 +302,16 @@
builder.append(", defaultNetwork=").append(NetworkStats.defaultNetworkToString(
mDefaultNetwork));
}
+ if (mSubType != NETWORK_TYPE_ALL) {
+ builder.append(", subType=").append(mSubType);
+ }
return builder.toString();
}
@Override
public int hashCode() {
return Objects.hash(mMatchRule, mSubscriberId, mNetworkId, mMetered, mRoaming,
- mDefaultNetwork);
+ mDefaultNetwork, mSubType);
}
@Override
@@ -289,7 +323,8 @@
&& Objects.equals(mNetworkId, other.mNetworkId)
&& mMetered == other.mMetered
&& mRoaming == other.mRoaming
- && mDefaultNetwork == other.mDefaultNetwork;
+ && mDefaultNetwork == other.mDefaultNetwork
+ && mSubType == other.mSubType;
}
return false;
}
@@ -376,6 +411,11 @@
|| (mDefaultNetwork == DEFAULT_NETWORK_NO && !ident.mDefaultNetwork);
}
+ private boolean matchesCollapsedRatType(NetworkIdentity ident) {
+ return mSubType == NETWORK_TYPE_ALL
+ || getCollapsedRatType(mSubType) == getCollapsedRatType(ident.mSubType);
+ }
+
public boolean matchesSubscriberId(String subscriberId) {
return ArrayUtils.contains(mMatchSubscriberIds, subscriberId);
}
@@ -388,9 +428,52 @@
// TODO: consider matching against WiMAX subscriber identity
return true;
} else {
+ // Only metered mobile network would be matched regardless of metered filter.
+ // This is used to exclude non-metered APNs, e.g. IMS. See ag/908650.
+ // TODO: Respect metered filter and remove mMetered condition.
return (sForceAllNetworkTypes || (ident.mType == TYPE_MOBILE && ident.mMetered))
&& !ArrayUtils.isEmpty(mMatchSubscriberIds)
- && ArrayUtils.contains(mMatchSubscriberIds, ident.mSubscriberId);
+ && ArrayUtils.contains(mMatchSubscriberIds, ident.mSubscriberId)
+ && matchesCollapsedRatType(ident);
+ }
+ }
+
+ /**
+ * Get a Radio Access Technology(RAT) type that is representative of a group of RAT types.
+ * The mapping is corresponding to {@code TelephonyManager#NETWORK_CLASS_BIT_MASK_*}.
+ *
+ * @param ratType An integer defined in {@code TelephonyManager#NETWORK_TYPE_*}.
+ */
+ // TODO: 1. Consider move this to TelephonyManager if used by other modules.
+ // 2. Consider make this configurable.
+ // 3. Use TelephonyManager APIs when available.
+ public static int getCollapsedRatType(int ratType) {
+ switch (ratType) {
+ case TelephonyManager.NETWORK_TYPE_GPRS:
+ case TelephonyManager.NETWORK_TYPE_GSM:
+ case TelephonyManager.NETWORK_TYPE_EDGE:
+ case TelephonyManager.NETWORK_TYPE_IDEN:
+ case TelephonyManager.NETWORK_TYPE_CDMA:
+ case TelephonyManager.NETWORK_TYPE_1xRTT:
+ return TelephonyManager.NETWORK_TYPE_GSM;
+ case TelephonyManager.NETWORK_TYPE_EVDO_0:
+ case TelephonyManager.NETWORK_TYPE_EVDO_A:
+ case TelephonyManager.NETWORK_TYPE_EVDO_B:
+ case TelephonyManager.NETWORK_TYPE_EHRPD:
+ case TelephonyManager.NETWORK_TYPE_UMTS:
+ case TelephonyManager.NETWORK_TYPE_HSDPA:
+ case TelephonyManager.NETWORK_TYPE_HSUPA:
+ case TelephonyManager.NETWORK_TYPE_HSPA:
+ case TelephonyManager.NETWORK_TYPE_HSPAP:
+ case TelephonyManager.NETWORK_TYPE_TD_SCDMA:
+ return TelephonyManager.NETWORK_TYPE_UMTS;
+ case TelephonyManager.NETWORK_TYPE_LTE:
+ case TelephonyManager.NETWORK_TYPE_IWLAN:
+ return TelephonyManager.NETWORK_TYPE_LTE;
+ case TelephonyManager.NETWORK_TYPE_NR:
+ return TelephonyManager.NETWORK_TYPE_NR;
+ default:
+ return TelephonyManager.NETWORK_TYPE_UNKNOWN;
}
}
@@ -421,7 +504,8 @@
if (ident.mType == TYPE_WIMAX) {
return true;
} else {
- return sForceAllNetworkTypes || (ident.mType == TYPE_MOBILE && ident.mMetered);
+ return (sForceAllNetworkTypes || (ident.mType == TYPE_MOBILE && ident.mMetered))
+ && matchesCollapsedRatType(ident);
}
}
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index ae65f1d..55cb12e 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -114,6 +114,9 @@
private static final long DEFAULT_SCOPED_STORAGE = 149924527L;
/**
+ * See definition in com.android.providers.media.LocalCallingIdentity
+ */
+ /**
* Setting this flag strictly enforces Scoped Storage regardless of:
* <ul>
* <li>The value of Target Sdk</li>
@@ -1298,6 +1301,16 @@
uid, context.getOpPackageName()) == AppOpsManager.MODE_ALLOWED;
}
+ private static boolean isScopedStorageEnforced(boolean defaultScopedStorage,
+ boolean forceEnableScopedStorage) {
+ return defaultScopedStorage && forceEnableScopedStorage;
+ }
+
+ private static boolean isScopedStorageDisabled(boolean defaultScopedStorage,
+ boolean forceEnableScopedStorage) {
+ return !defaultScopedStorage && !forceEnableScopedStorage;
+ }
+
/**
* Returns whether the calling app has All Files Access on the primary shared/external storage
* media.
@@ -1342,16 +1355,6 @@
}
}
- private static boolean isScopedStorageEnforced(boolean defaultScopedStorage,
- boolean forceEnableScopedStorage) {
- return defaultScopedStorage && forceEnableScopedStorage;
- }
-
- private static boolean isScopedStorageDisabled(boolean defaultScopedStorage,
- boolean forceEnableScopedStorage) {
- return !defaultScopedStorage && !forceEnableScopedStorage;
- }
-
static File getDirectory(String variableName, String defaultPath) {
String path = System.getenv(variableName);
return path == null ? new File(defaultPath) : new File(path);
diff --git a/core/java/android/os/MessageQueue.java b/core/java/android/os/MessageQueue.java
index 2a82263..7213b06 100644
--- a/core/java/android/os/MessageQueue.java
+++ b/core/java/android/os/MessageQueue.java
@@ -550,11 +550,12 @@
if (msg.target == null) {
throw new IllegalArgumentException("Message must have a target.");
}
- if (msg.isInUse()) {
- throw new IllegalStateException(msg + " This message is already in use.");
- }
synchronized (this) {
+ if (msg.isInUse()) {
+ throw new IllegalStateException(msg + " This message is already in use.");
+ }
+
if (mQuitting) {
IllegalStateException e = new IllegalStateException(
msg.target + " sending message to a Handler on a dead thread");
diff --git a/core/java/android/permission/Permissions.md b/core/java/android/permission/Permissions.md
index e116dc6..b7068fe 100644
--- a/core/java/android/permission/Permissions.md
+++ b/core/java/android/permission/Permissions.md
@@ -209,7 +209,7 @@
#### Checking a runtime permission
-For runtime permissions defined by a 3rd party apps it is fine to check a runtime
+For runtime permissions defined by 3rd party apps it is fine to check a runtime
permission like an install time permission. For system defined permissions you need to check all
runtime permissions by using the `PermissionChecker` utility. It is good practice to use the tool
anywhere possible.
@@ -268,7 +268,7 @@
In `dumpsys package my.package.name` the runtime permissions are listed per uid. I.e. different
users might have different runtime permission grants and shared uids share a grant-set. If a runtime
-permission is listed as requested but not in the runtime permission section it is in it’s initial
+permission is listed as requested but not in the runtime permission section it is in its initial
state, i.e. not granted.
```
@@ -403,12 +403,12 @@
#### Restricted permissions
Some runtime permissions are restricted. They are annotated in the platforms `AndroidManifest.xml`
-has `hardRestricted` or `softRestricted`.
+as `hardRestricted` or `softRestricted`.
Restricted permissions behave uncommon when not whitelisted. When whitelisted the permissions
behave normally. What uncommon means depends on the whether they are hard or soft restricted.
-They can either be whitelisted during upgrade P->Q, but the system or need to be whitelisted by the
+They can either be whitelisted during upgrade P->Q by the system or need to be whitelisted by the
installer via `PackageInstaller.SessionParams.setWhitelistedRestrictedPermissions`. If this method
is not used all permissions will be whitelisted.
@@ -464,7 +464,7 @@
##### Microphone and Camera
-Currently these only allow access while in the app is in foreground. There is a manual whitelist
+Currently these only allow access while the app is in foreground. There is a manual whitelist
for e.g. the voice interaction service.
This is currently (Mar 2020) reworked and will behave like [location](#location) soon.
@@ -476,7 +476,7 @@
The important case is the case where the permission is granted and the app-op is `MODE_IGNORED`. In
the case of location this state causes the `LocationManagerService` to stop delivering locations to
-the app. This is not a breaking behavior as the same scenarios happens if e.g. no satellites
+the app. This is not a breaking behavior as the same scenario happens if e.g. no satellites
could be found.
This behavior is used to implement the foregound/background behavior for location. If the app is
@@ -558,8 +558,8 @@
#### Pre granting
Runtime permissions protect user private data. It is a violation of user trust to give the data
-to an app without explicit user consent (i.e. the user [granting](#granting) the permission
-). Still the user expects certain functionality (e.g. receiving a phone call) to work out of the
+to an app without explicit user consent (i.e. the user [granting](#granting) the permission).
+Still the user expects certain functionality (e.g. receiving a phone call) to work out of the
box.
Hence the `DefaultPermissionGrantPolicy` and roles allow to grant permission without the user
@@ -568,7 +568,7 @@
the platform
- Apps that are in certain predefined categories, e.g. the browser and the SMS app. This is
meant for the most basic phone functionality, not for all pre-installed apps.
-- Apps that are explicitly mentioned as a pre-grant-exceptions. This is meant to be used for setup
+- Apps that are explicitly mentioned as pre-grant-exceptions. This is meant to be used for setup
and other highly critical use cases, not to improve the user experience. The exceptions are listed
in xml files in `etc/` and follow the following syntax
```xml
@@ -708,7 +708,7 @@
user really needs to understand the use case. For example one use case is the
`INTERACT_ACROSS_PROFILES` permission that allows apps of different
[user profiles](../os/Users.md#user-profile) to interact. Of course this is breaking a very basic
-security container and hence should only every be granted with a lot of care.
+security container and hence should only ever be granted with a lot of care.
**Warning:** Most app-op permissions follow this logic, but most of them also have exceptions
and special behavior. Hence this section is a guideline, not a rule.
@@ -770,11 +770,12 @@
allows to have default grants while still being overridden by the app-op.
The permission is then granted by setting the app-op mode. This is usually done via dedicated APIs
-for each use cases. Similarly whether and how an app can request the permission is different for
+for each use case. Similarly whether and how an app can request the permission is different for
each app-op permission.
-When implementing a new app-op permission, make sure to set the app-op mode using `AppOpsManager
-.setUidMode` to make sure the permission is granted on the uid as this is the security domain.
+When implementing a new app-op permission, make sure to set the app-op mode using
+`AppOpsManager.setUidMode` to make sure the permission is granted on the uid as this is the
+security domain.
During development app-ops can be grated to app via the `appops set` shell command. E.g.
@@ -804,7 +805,7 @@
permissions that are only used by apps built out of AOSP which are signed with the platform
certificate.
-Please note that OEMs sign their platform them self. I.e. OEMs can implement new apps using these
+Please note that OEMs sign their platform themselves. I.e. OEMs can implement new apps using these
permissions. It is unlikely that 3rd party apps will be able to use APIs protected by signature
permissions as they are usually not signed with the platform certificate.
@@ -823,8 +824,8 @@
### Privileged permissions
This means that the app has to be pre-installed and in the `system/priv` directory in the
-filesystem. There is no restriction what apps are in this directory on a particular device
-install there. Hence it can be really any app including 3rd party apps.
+filesystem. There is no restriction what apps are in this directory on a particular device.
+Hence it can be really any app including 3rd party apps.
An app is only ever granted privileged permissions requested by the pre-installed apk. I.e.
privileged permissions added in updates will never be granted.
@@ -862,8 +863,8 @@
#### Whitelist
As mentioned above it is not suggested, but still common practice to install 3rd party apps as
-privilidged. To verify and restrict which privilidged permissions those apps get granted all
-privilidged permissions need to be explicitly whitelisted in a file `/etc`.
+privileged. To verify and restrict which privileged permissions those apps get granted all
+privileged permissions need to be explicitly whitelisted in a file `/etc`.
```xml
<permissions>
@@ -877,7 +878,7 @@
</permissions>
```
-If the pre-installed apk of app requests a privileged permission that is not mentioned in any
+If the pre-installed apk of an app requests a privileged permission that is not mentioned in any
whitelist or that is not denied the system will refuse to boot. As mentioned above privileged
permissions added in updates to the pre-installed app will never be granted.
diff --git a/core/java/android/provider/CallLog.java b/core/java/android/provider/CallLog.java
index a0e92b3..276f162 100644
--- a/core/java/android/provider/CallLog.java
+++ b/core/java/android/provider/CallLog.java
@@ -99,6 +99,13 @@
public static final String LIMIT_PARAM_KEY = "limit";
/**
+ * Form of {@link #CONTENT_URI} which limits the query results to a single result.
+ */
+ private static final Uri CONTENT_URI_LIMIT_1 = CONTENT_URI.buildUpon()
+ .appendQueryParameter(LIMIT_PARAM_KEY, "1")
+ .build();
+
+ /**
* Query parameter used to specify the starting record to return.
* <p>
* TYPE: integer
@@ -932,11 +939,11 @@
Cursor c = null;
try {
c = resolver.query(
- CONTENT_URI,
+ CONTENT_URI_LIMIT_1,
new String[] {NUMBER},
TYPE + " = " + OUTGOING_TYPE,
null,
- DEFAULT_SORT_ORDER + " LIMIT 1");
+ DEFAULT_SORT_ORDER);
if (c == null || !c.moveToFirst()) {
return "";
}
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index d8679b20..74297ed 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -49,6 +49,7 @@
import android.content.res.Resources;
import android.database.Cursor;
import android.database.SQLException;
+import android.location.ILocationManager;
import android.location.LocationManager;
import android.net.ConnectivityManager;
import android.net.NetworkScoreManager;
@@ -92,6 +93,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.Set;
/**
@@ -8861,8 +8863,8 @@
public static final String WINDOW_MAGNIFICATION = "window_magnification";
/**
- * Controls magnification mode when magnification is enabled via a system-wide
- * triple tap gesture or the accessibility shortcut.
+ * Controls magnification mode when magnification is enabled via a system-wide triple tap
+ * gesture or the accessibility shortcut.
*
* @see#ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN
* @see#ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
@@ -8884,6 +8886,25 @@
public static final int ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW = 0x2;
/**
+ * Magnification mode value that is capable of magnifying whole display and particular
+ * region in a window.
+ * @hide
+ */
+ public static final int ACCESSIBILITY_MAGNIFICATION_MODE_ALL = 0x3;
+
+ /**
+ * Controls magnification capability. Accessibility magnification is capable of at least one
+ * of the magnification modes.
+ *
+ * @see#ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN
+ * @see#ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW
+ * @see#ACCESSIBILITY_MAGNIFICATION_MODE_ALL
+ * @hide
+ */
+ public static final String ACCESSIBILITY_MAGNIFICATION_CAPABILITY =
+ "accessibility_magnification_capability";
+
+ /**
* Keys we no longer back up under the current schema, but want to continue to
* process when restoring historical backup datasets.
*
@@ -8912,7 +8933,6 @@
CLONE_TO_MANAGED_PROFILE.add(ENABLED_ACCESSIBILITY_SERVICES);
CLONE_TO_MANAGED_PROFILE.add(LOCATION_CHANGER);
CLONE_TO_MANAGED_PROFILE.add(LOCATION_MODE);
- CLONE_TO_MANAGED_PROFILE.add(LOCATION_PROVIDERS_ALLOWED);
CLONE_TO_MANAGED_PROFILE.add(SHOW_IME_WITH_HARD_KEYBOARD);
}
@@ -8965,9 +8985,13 @@
*/
@Deprecated
public static boolean isLocationProviderEnabled(ContentResolver cr, String provider) {
- String allowedProviders = Settings.Secure.getStringForUser(cr,
- LOCATION_PROVIDERS_ALLOWED, cr.getUserId());
- return TextUtils.delimitedStringContains(allowedProviders, ',', provider);
+ IBinder binder = ServiceManager.getService(Context.LOCATION_SERVICE);
+ ILocationManager lm = Objects.requireNonNull(ILocationManager.Stub.asInterface(binder));
+ try {
+ return lm.isProviderEnabledForUser(provider, cr.getUserId());
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
}
/**
@@ -9646,14 +9670,6 @@
"location_ignore_settings_package_whitelist";
/**
- * Maximum staleness allowed for last location when returned to clients with only foreground
- * location permissions.
- * @hide
- */
- public static final String LOCATION_LAST_LOCATION_MAX_AGE_MILLIS =
- "location_last_location_max_age_millis";
-
- /**
* Whether TV will switch to MHL port when a mobile device is plugged in.
* (0 = false, 1 = true)
* @hide
diff --git a/core/java/android/service/dreams/DreamService.java b/core/java/android/service/dreams/DreamService.java
index e70311f..efe28d9 100644
--- a/core/java/android/service/dreams/DreamService.java
+++ b/core/java/android/service/dreams/DreamService.java
@@ -906,22 +906,27 @@
if (!mActivity.isFinishing()) {
// In case the activity is not finished yet, do it now.
mActivity.finishAndRemoveTask();
- return;
}
- } else if (!mWindowless) {
- Slog.w(TAG, "Finish was called before the dream was attached.");
+ return;
}
- if (!mFinished) {
- mFinished = true;
+ if (mFinished) {
+ return;
+ }
+ mFinished = true;
- try {
- // finishSelf will unbind the dream controller from the dream service. This will
- // trigger DreamService.this.onDestroy and DreamService.this will die.
- mDreamManager.finishSelf(mDreamToken, true /*immediate*/);
- } catch (RemoteException ex) {
- // system server died
- }
+ if (mDreamToken == null) {
+ Slog.w(TAG, "Finish was called before the dream was attached.");
+ stopSelf();
+ return;
+ }
+
+ try {
+ // finishSelf will unbind the dream controller from the dream service. This will
+ // trigger DreamService.this.onDestroy and DreamService.this will die.
+ mDreamManager.finishSelf(mDreamToken, true /*immediate*/);
+ } catch (RemoteException ex) {
+ // system server died
}
}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index c52b02b..2677087 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -1542,6 +1542,29 @@
@Retention(RetentionPolicy.SOURCE)
public @interface UserSentiment {}
+ /**
+ * Notification was demoted in shade
+ * @hide
+ */
+ public static final int RANKING_DEMOTED = -1;
+ /**
+ * Notification was unchanged
+ * @hide
+ */
+ public static final int RANKING_UNCHANGED = 0;
+ /**
+ * Notification was promoted in shade
+ * @hide
+ */
+ public static final int RANKING_PROMOTED = 1;
+
+ /** @hide */
+ @IntDef(prefix = { "RANKING_" }, value = {
+ RANKING_PROMOTED, RANKING_DEMOTED, RANKING_UNCHANGED
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface RankingAdjustment {}
+
private @NonNull String mKey;
private int mRank = -1;
private boolean mIsAmbient;
@@ -1569,6 +1592,7 @@
private boolean mVisuallyInterruptive;
private boolean mIsConversation;
private ShortcutInfo mShortcutInfo;
+ private @RankingAdjustment int mRankingAdjustment;
private boolean mIsBubble;
private static final int PARCEL_VERSION = 2;
@@ -1604,6 +1628,7 @@
out.writeBoolean(mVisuallyInterruptive);
out.writeBoolean(mIsConversation);
out.writeParcelable(mShortcutInfo, flags);
+ out.writeInt(mRankingAdjustment);
out.writeBoolean(mIsBubble);
}
@@ -1640,6 +1665,7 @@
mVisuallyInterruptive = in.readBoolean();
mIsConversation = in.readBoolean();
mShortcutInfo = in.readParcelable(cl);
+ mRankingAdjustment = in.readInt();
mIsBubble = in.readBoolean();
}
@@ -1861,6 +1887,14 @@
}
/**
+ * Returns the intended transition to ranking passed by {@link NotificationAssistantService}
+ * @hide
+ */
+ public @RankingAdjustment int getRankingAdjustment() {
+ return mRankingAdjustment;
+ }
+
+ /**
* @hide
*/
@VisibleForTesting
@@ -1873,7 +1907,7 @@
boolean noisy, ArrayList<Notification.Action> smartActions,
ArrayList<CharSequence> smartReplies, boolean canBubble,
boolean visuallyInterruptive, boolean isConversation, ShortcutInfo shortcutInfo,
- boolean isBubble) {
+ int rankingAdjustment, boolean isBubble) {
mKey = key;
mRank = rank;
mIsAmbient = importance < NotificationManager.IMPORTANCE_LOW;
@@ -1897,6 +1931,7 @@
mVisuallyInterruptive = visuallyInterruptive;
mIsConversation = isConversation;
mShortcutInfo = shortcutInfo;
+ mRankingAdjustment = rankingAdjustment;
mIsBubble = isBubble;
}
@@ -1926,6 +1961,7 @@
other.mVisuallyInterruptive,
other.mIsConversation,
other.mShortcutInfo,
+ other.mRankingAdjustment,
other.mIsBubble);
}
@@ -1984,6 +2020,7 @@
// Shortcutinfo doesn't have equals either; use id
&& Objects.equals((mShortcutInfo == null ? 0 : mShortcutInfo.getId()),
(other.mShortcutInfo == null ? 0 : other.mShortcutInfo.getId()))
+ && Objects.equals(mRankingAdjustment, other.mRankingAdjustment)
&& Objects.equals(mIsBubble, other.mIsBubble);
}
}
diff --git a/core/java/android/speech/tts/TextToSpeech.java b/core/java/android/speech/tts/TextToSpeech.java
index c861fa7..895ce39 100644
--- a/core/java/android/speech/tts/TextToSpeech.java
+++ b/core/java/android/speech/tts/TextToSpeech.java
@@ -904,10 +904,7 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addSpeech(String text, String packagename, @RawRes int resourceId) {
- synchronized (mStartLock) {
- mUtterances.put(text, makeResourceUri(packagename, resourceId));
- return SUCCESS;
- }
+ return addSpeech(text, makeResourceUri(packagename, resourceId));
}
/**
@@ -938,10 +935,7 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addSpeech(CharSequence text, String packagename, @RawRes int resourceId) {
- synchronized (mStartLock) {
- mUtterances.put(text, makeResourceUri(packagename, resourceId));
- return SUCCESS;
- }
+ return addSpeech(text, makeResourceUri(packagename, resourceId));
}
/**
@@ -959,14 +953,11 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addSpeech(String text, String filename) {
- synchronized (mStartLock) {
- mUtterances.put(text, Uri.parse(filename));
- return SUCCESS;
- }
+ return addSpeech(text, Uri.parse(filename));
}
/**
- * Adds a mapping between a CharSequence (may be spanned with TtsSpans and a sound file.
+ * Adds a mapping between a CharSequence (may be spanned with TtsSpans) and a sound file.
* Using this, it is possible to add custom pronounciations for a string of text. After a call
* to this method, subsequent calls to {@link #speak(CharSequence, int, Bundle, String)}
* will play the specified sound resource if it is available, or synthesize the text it is
@@ -980,8 +971,26 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addSpeech(CharSequence text, File file) {
+ return addSpeech(text, Uri.fromFile(file));
+ }
+
+ /**
+ * Adds a mapping between a CharSequence (may be spanned with TtsSpans) and a sound file.
+ * Using this, it is possible to add custom pronounciations for a string of text. After a call
+ * to this method, subsequent calls to {@link #speak(CharSequence, int, Bundle, String)}
+ * will play the specified sound resource if it is available, or synthesize the text it is
+ * missing.
+ *
+ * @param text
+ * The string of text. Example: <code>"south_south_east"</code>
+ * @param uri
+ * Uri object pointing to the sound file.
+ *
+ * @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
+ */
+ public int addSpeech(@NonNull CharSequence text, @NonNull Uri uri) {
synchronized (mStartLock) {
- mUtterances.put(text, Uri.fromFile(file));
+ mUtterances.put(text, uri);
return SUCCESS;
}
}
@@ -1012,10 +1021,7 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addEarcon(String earcon, String packagename, @RawRes int resourceId) {
- synchronized(mStartLock) {
- mEarcons.put(earcon, makeResourceUri(packagename, resourceId));
- return SUCCESS;
- }
+ return addEarcon(earcon, makeResourceUri(packagename, resourceId));
}
/**
@@ -1038,10 +1044,7 @@
*/
@Deprecated
public int addEarcon(String earcon, String filename) {
- synchronized(mStartLock) {
- mEarcons.put(earcon, Uri.parse(filename));
- return SUCCESS;
- }
+ return addEarcon(earcon, Uri.parse(filename));
}
/**
@@ -1059,8 +1062,26 @@
* @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
*/
public int addEarcon(String earcon, File file) {
+ return addEarcon(earcon, Uri.fromFile(file));
+ }
+
+ /**
+ * Adds a mapping between a string of text and a sound file.
+ * Use this to add custom earcons.
+ *
+ * @see #playEarcon(String, int, HashMap)
+ *
+ * @param earcon
+ * The name of the earcon.
+ * Example: <code>"[tick]"</code>
+ * @param uri
+ * Uri object pointing to the sound file.
+ *
+ * @return Code indicating success or failure. See {@link #ERROR} and {@link #SUCCESS}.
+ */
+ public int addEarcon(@NonNull String earcon, @NonNull Uri uri) {
synchronized(mStartLock) {
- mEarcons.put(earcon, Uri.fromFile(file));
+ mEarcons.put(earcon, uri);
return SUCCESS;
}
}
@@ -2109,7 +2130,7 @@
public void onError(String utteranceId, int errorCode) {
UtteranceProgressListener listener = mUtteranceProgressListener;
if (listener != null) {
- listener.onError(utteranceId);
+ listener.onError(utteranceId, errorCode);
}
}
diff --git a/core/java/android/text/AndroidBidi.java b/core/java/android/text/AndroidBidi.java
index f1e2181..b981163 100644
--- a/core/java/android/text/AndroidBidi.java
+++ b/core/java/android/text/AndroidBidi.java
@@ -17,11 +17,7 @@
package android.text;
import android.compat.annotation.UnsupportedAppUsage;
-import android.icu.lang.UCharacter;
-import android.icu.lang.UCharacterDirection;
-import android.icu.lang.UProperty;
import android.icu.text.Bidi;
-import android.icu.text.BidiClassifier;
import android.text.Layout.Directions;
import com.android.internal.annotations.VisibleForTesting;
@@ -34,32 +30,6 @@
public class AndroidBidi {
/**
- * Overrides ICU {@link BidiClassifier} in order to correctly handle character directions for
- * newest emoji that ICU is not aware of.
- */
- public static class EmojiBidiOverride extends BidiClassifier {
- public EmojiBidiOverride() {
- super(null /* No persisting object needed */);
- }
-
- // Tells ICU to use the standard Unicode value.
- private static final int NO_OVERRIDE =
- UCharacter.getIntPropertyMaxValue(UProperty.BIDI_CLASS) + 1;
-
- @Override
- public int classify(int c) {
- if (Emoji.isNewEmoji(c)) {
- // All new emoji characters in Unicode 10.0 are of the bidi class ON.
- return UCharacterDirection.OTHER_NEUTRAL;
- } else {
- return NO_OVERRIDE;
- }
- }
- }
-
- private static final EmojiBidiOverride sEmojiBidiOverride = new EmojiBidiOverride();
-
- /**
* Runs the bidi algorithm on input text.
*/
@UnsupportedAppUsage
@@ -82,7 +52,6 @@
default: paraLevel = Bidi.LTR; break;
}
final Bidi icuBidi = new Bidi(length /* maxLength */, 0 /* maxRunCount */);
- icuBidi.setCustomClassifier(sEmojiBidiOverride);
icuBidi.setPara(chs, paraLevel, null /* embeddingLevels */);
for (int i = 0; i < length; i++) {
chInfo[i] = icuBidi.getLevelAt(i);
@@ -220,4 +189,5 @@
}
return new Directions(ld);
}
-}
\ No newline at end of file
+}
+
diff --git a/core/java/android/text/BidiFormatter.java b/core/java/android/text/BidiFormatter.java
index 77f17a7..422d347 100644
--- a/core/java/android/text/BidiFormatter.java
+++ b/core/java/android/text/BidiFormatter.java
@@ -604,15 +604,10 @@
/**
* Return Character directionality. Same as {@link Character#getDirectionality(int)} except
- * it overrides values for newest emoji that are not covered by ICU.
+ * it can override values for newest emoji that are not covered by ICU.
*/
public static byte getDirectionality(int codePoint) {
- if (Emoji.isNewEmoji(codePoint)) {
- // TODO: Fix or remove once emoji-data.text 5.0 is in ICU or update to 6.0.
- return Character.DIRECTIONALITY_OTHER_NEUTRALS;
- } else {
- return Character.getDirectionality(codePoint);
- }
+ return Character.getDirectionality(codePoint);
}
// Internal instance variables.
diff --git a/core/java/android/text/Emoji.java b/core/java/android/text/Emoji.java
index 04fa110..cf0e3c2 100644
--- a/core/java/android/text/Emoji.java
+++ b/core/java/android/text/Emoji.java
@@ -60,40 +60,16 @@
if (c == 0x1F91D || c == 0x1F93C) {
return true;
}
- // Emoji Modifier Base characters new in Unicode emoji 11
- // From https://www.unicode.org/Public/emoji/11.0/emoji-data.txt
- // TODO: Remove once emoji-data.text 11 is in ICU or update to 11.
- if ((0x1F9B5 <= c && c <= 0x1F9B6) || (0x1F9B8 <= c && c <= 0x1F9B9)) {
- return true;
- }
+ // If Android's copy of ICU is behind, check for new codepoints here.
+ // Consult log for implementation pattern.
return UCharacter.hasBinaryProperty(c, UProperty.EMOJI_MODIFIER_BASE);
}
/**
- * Returns true if the character is a new emoji still not supported in our version of ICU.
- */
- public static boolean isNewEmoji(int c) {
- // Emoji characters new in Unicode emoji 12
- // From https://www.unicode.org/Public/emoji/12.0/emoji-data.txt
- // TODO: Remove once emoji-data.text 12 is in ICU or update to 12.
- if (c < 0x1F6D5 || c > 0x1FA95) {
- // Optimization for characters outside the new emoji range.
- return false;
- }
- return c == 0x1F6D5 || c == 0x1F6FA || c == 0x1F93F || c == 0x1F971 || c == 0x1F97B
- || (0x1F7E0 <= c && c <= 0x1F7EB) || (0x1F90D <= c && c <= 0x1F90F)
- || (0x1F9A5 <= c && c <= 0x1F9AA) || (0x1F9AE <= c && c <= 0x1F9AF)
- || (0x1F9BA <= c && c <= 0x1F9BF) || (0x1F9C3 <= c && c <= 0x1F9CA)
- || (0x1F9CD <= c && c <= 0x1F9CF) || (0x1FA70 <= c && c <= 0x1FA73)
- || (0x1FA78 <= c && c <= 0x1FA7A) || (0x1FA80 <= c && c <= 0x1FA82)
- || (0x1FA90 <= c && c <= 0x1FA95);
- }
-
- /**
* Returns true if the character has Emoji property.
*/
public static boolean isEmoji(int codePoint) {
- return isNewEmoji(codePoint) || UCharacter.hasBinaryProperty(codePoint, UProperty.EMOJI);
+ return UCharacter.hasBinaryProperty(codePoint, UProperty.EMOJI);
}
// Returns true if the character can be a base character of COMBINING ENCLOSING KEYCAP.
diff --git a/core/java/android/view/AppTransitionAnimationSpec.java b/core/java/android/view/AppTransitionAnimationSpec.java
index 330061f..877bb56 100644
--- a/core/java/android/view/AppTransitionAnimationSpec.java
+++ b/core/java/android/view/AppTransitionAnimationSpec.java
@@ -1,8 +1,8 @@
package android.view;
import android.compat.annotation.UnsupportedAppUsage;
-import android.graphics.GraphicBuffer;
import android.graphics.Rect;
+import android.hardware.HardwareBuffer;
import android.os.Parcel;
import android.os.Parcelable;
@@ -16,11 +16,11 @@
*/
public class AppTransitionAnimationSpec implements Parcelable {
public final int taskId;
- public final GraphicBuffer buffer;
+ public final HardwareBuffer buffer;
public final Rect rect;
@UnsupportedAppUsage
- public AppTransitionAnimationSpec(int taskId, GraphicBuffer buffer, Rect rect) {
+ public AppTransitionAnimationSpec(int taskId, HardwareBuffer buffer, Rect rect) {
this.taskId = taskId;
this.rect = rect;
this.buffer = buffer;
diff --git a/core/java/android/view/InputChannel.java b/core/java/android/view/InputChannel.java
index 5a64b13..e1b0421 100644
--- a/core/java/android/view/InputChannel.java
+++ b/core/java/android/view/InputChannel.java
@@ -22,6 +22,8 @@
import android.os.Parcelable;
import android.util.Slog;
+import libcore.util.NativeAllocationRegistry;
+
/**
* An input channel specifies the file descriptors used to send input events to
* a window in another process. It is Parcelable so that it can be sent
@@ -33,6 +35,10 @@
private static final String TAG = "InputChannel";
private static final boolean DEBUG = false;
+ private static final NativeAllocationRegistry sRegistry =
+ NativeAllocationRegistry.createMalloced(
+ InputChannel.class.getClassLoader(),
+ nativeGetFinalizer());
@UnsupportedAppUsage
public static final @android.annotation.NonNull Parcelable.Creator<InputChannel> CREATOR
@@ -48,21 +54,19 @@
}
};
- @SuppressWarnings("unused")
@UnsupportedAppUsage
private long mPtr; // used by native code
- private static native InputChannel[] nativeOpenInputChannelPair(String name);
+ private static native long[] nativeOpenInputChannelPair(String name);
- private native void nativeDispose(boolean finalized);
- private native void nativeRelease();
- private native void nativeTransferTo(InputChannel other);
- private native void nativeReadFromParcel(Parcel parcel);
- private native void nativeWriteToParcel(Parcel parcel);
- private native void nativeDup(InputChannel target);
- private native IBinder nativeGetToken();
+ private static native long nativeGetFinalizer();
+ private native void nativeDispose(long channel);
+ private native long nativeReadFromParcel(Parcel parcel);
+ private native void nativeWriteToParcel(Parcel parcel, long channel);
+ private native long nativeDup(long channel);
+ private native IBinder nativeGetToken(long channel);
- private native String nativeGetName();
+ private native String nativeGetName(long channel);
/**
* Creates an uninitialized input channel.
@@ -73,13 +77,24 @@
public InputChannel() {
}
- @Override
- protected void finalize() throws Throwable {
- try {
- nativeDispose(true);
- } finally {
- super.finalize();
+ /**
+ * Set Native input channel object from native space.
+ * @param nativeChannel the native channel object.
+ *
+ * @hide
+ */
+ public void setNativeInputChannel(long nativeChannel) {
+ if (nativeChannel == 0) {
+ throw new IllegalArgumentException("Attempting to set native input channel to null.");
}
+ if (mPtr != 0) {
+ throw new IllegalArgumentException("Already has native input channel.");
+ }
+ if (DEBUG) {
+ Slog.d(TAG, "setNativeInputChannel : " + String.format("%x", nativeChannel));
+ }
+ sRegistry.registerNativeAllocation(this, nativeChannel);
+ mPtr = nativeChannel;
}
/**
@@ -98,7 +113,13 @@
if (DEBUG) {
Slog.d(TAG, "Opening input channel pair '" + name + "'");
}
- return nativeOpenInputChannelPair(name);
+ InputChannel channels[] = new InputChannel[2];
+ long[] nativeChannels = nativeOpenInputChannelPair(name);
+ for (int i = 0; i< 2; i++) {
+ channels[i] = new InputChannel();
+ channels[i].setNativeInputChannel(nativeChannels[i]);
+ }
+ return channels;
}
/**
@@ -106,7 +127,7 @@
* @return The input channel name.
*/
public String getName() {
- String name = nativeGetName();
+ String name = nativeGetName(mPtr);
return name != null ? name : "uninitialized";
}
@@ -116,7 +137,7 @@
* When all references are released, the input channel will be closed.
*/
public void dispose() {
- nativeDispose(false);
+ nativeDispose(mPtr);
}
/**
@@ -124,7 +145,6 @@
* still exist in native-land, then the channel may continue to exist.
*/
public void release() {
- nativeRelease();
}
/**
@@ -137,8 +157,10 @@
if (outParameter == null) {
throw new IllegalArgumentException("outParameter must not be null");
}
-
- nativeTransferTo(outParameter);
+ if (outParameter.mPtr != 0) {
+ throw new IllegalArgumentException("Other object already has a native input channel.");
+ }
+ outParameter.setNativeInputChannel(nativeDup(mPtr));
}
/**
@@ -146,7 +168,7 @@
*/
public InputChannel dup() {
InputChannel target = new InputChannel();
- nativeDup(target);
+ target.setNativeInputChannel(nativeDup(mPtr));
return target;
}
@@ -159,8 +181,10 @@
if (in == null) {
throw new IllegalArgumentException("in must not be null");
}
-
- nativeReadFromParcel(in);
+ long nativeIn = nativeReadFromParcel(in);
+ if (nativeIn != 0) {
+ setNativeInputChannel(nativeIn);
+ }
}
@Override
@@ -169,7 +193,7 @@
throw new IllegalArgumentException("out must not be null");
}
- nativeWriteToParcel(out);
+ nativeWriteToParcel(out, mPtr);
if ((flags & PARCELABLE_WRITE_RETURN_VALUE) != 0) {
dispose();
@@ -182,6 +206,6 @@
}
public IBinder getToken() {
- return nativeGetToken();
+ return nativeGetToken(mPtr);
}
}
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 13d6dd6..e0dd918 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -32,6 +32,7 @@
import android.graphics.Rect;
import android.graphics.RenderNode;
import android.graphics.SurfaceTexture;
+import android.hardware.HardwareBuffer;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.Log;
@@ -752,6 +753,14 @@
}
/**
+ * @hide
+ */
+ public void attachAndQueueBufferWithColorSpace(HardwareBuffer buffer, ColorSpace colorSpace) {
+ attachAndQueueBufferWithColorSpace(GraphicBuffer.createFromHardwareBuffer(buffer),
+ colorSpace);
+ }
+
+ /**
* Deprecated, use attachAndQueueBufferWithColorSpace instead.
* Transfer ownership of buffer and present it on the Surface.
* The color space of the buffer is treated as SRGB.
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index 77ce5c1..3459e98 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -1029,10 +1029,8 @@
* Window type: panel that slides out from over the status bar
* In multiuser systems shows on all users' windows.
*
- * @deprecated This became API by accident and was never intended to be used for
- * applications.
+ * @removed
*/
- @Deprecated
public static final int TYPE_STATUS_BAR_PANEL = FIRST_SYSTEM_WINDOW+14;
/**
diff --git a/core/java/android/view/accessibility/AccessibilityEvent.java b/core/java/android/view/accessibility/AccessibilityEvent.java
index 3b83683..d80d230 100644
--- a/core/java/android/view/accessibility/AccessibilityEvent.java
+++ b/core/java/android/view/accessibility/AccessibilityEvent.java
@@ -605,7 +605,10 @@
/**
* Change type for {@link #TYPE_WINDOW_CONTENT_CHANGED} event:
* state description of the node as returned by
- * {@link AccessibilityNodeInfo#getStateDescription} changed.
+ * {@link AccessibilityNodeInfo#getStateDescription} changed. If part of the state description
+ * changes, the changed part can be put into event text. For example, if state description
+ * changed from "on, wifi signal full" to "on, wifi three bars", "wifi three bars" can be put
+ * into the event text.
*/
public static final int CONTENT_CHANGE_TYPE_STATE_DESCRIPTION = 0x00000040;
diff --git a/core/java/android/widget/EditText.java b/core/java/android/widget/EditText.java
index 728824c..d661bc6 100644
--- a/core/java/android/widget/EditText.java
+++ b/core/java/android/widget/EditText.java
@@ -24,7 +24,6 @@
import android.text.method.ArrowKeyMovementMethod;
import android.text.method.MovementMethod;
import android.util.AttributeSet;
-import android.view.accessibility.AccessibilityNodeInfo;
/*
* This is supposed to be a *very* thin veneer over TextView.
@@ -179,13 +178,4 @@
protected boolean supportsAutoSizeText() {
return false;
}
-
- /** @hide */
- @Override
- public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) {
- super.onInitializeAccessibilityNodeInfoInternal(info);
- if (isEnabled()) {
- info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_SET_TEXT);
- }
- }
}
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 16d9ed3..4aeea10 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -317,6 +317,7 @@
private SelectionActionModeHelper mSelectionActionModeHelper;
boolean mIsBeingLongClicked;
+ boolean mIsBeingLongClickedByAccessibility;
private SuggestionsPopupWindow mSuggestionsPopupWindow;
SuggestionRangeSpan mSuggestionRangeSpan;
@@ -1312,6 +1313,12 @@
if (TextView.DEBUG_CURSOR) {
logCursor("performLongClick", "handled=%s", handled);
}
+ if (mIsBeingLongClickedByAccessibility) {
+ if (!handled) {
+ toggleInsertionActionMode();
+ }
+ return true;
+ }
// Long press in empty space moves cursor and starts the insertion action mode.
if (!handled && !isPositionOnText(mTouchState.getLastDownX(), mTouchState.getLastDownY())
&& !mTouchState.isOnHandle() && mInsertionControllerEnabled) {
@@ -1359,6 +1366,14 @@
return handled;
}
+ private void toggleInsertionActionMode() {
+ if (mTextActionMode != null) {
+ stopTextActionMode();
+ } else {
+ startInsertionActionMode();
+ }
+ }
+
float getLastUpPositionX() {
return mTouchState.getLastUpX();
}
@@ -5436,11 +5451,7 @@
config.getScaledTouchSlop());
if (isWithinTouchSlop) {
// Tapping on the handle toggles the insertion action mode.
- if (mTextActionMode != null) {
- stopTextActionMode();
- } else {
- startInsertionActionMode();
- }
+ toggleInsertionActionMode();
}
} else {
if (mTextActionMode != null) {
diff --git a/core/java/android/widget/ProgressBar.java b/core/java/android/widget/ProgressBar.java
index 970d70c..4b32e10 100644
--- a/core/java/android/widget/ProgressBar.java
+++ b/core/java/android/widget/ProgressBar.java
@@ -16,6 +16,8 @@
package android.widget;
+import android.animation.Animator;
+import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.annotation.InterpolatorRes;
import android.annotation.NonNull;
@@ -245,6 +247,8 @@
private final ArrayList<RefreshData> mRefreshData = new ArrayList<RefreshData>();
+ private ObjectAnimator mLastProgressAnimator;
+
/**
* Create a new progress bar with range 0...100 and initial progress of 0.
* @param context the application environment
@@ -1546,8 +1550,19 @@
animator.setAutoCancel(true);
animator.setDuration(PROGRESS_ANIM_DURATION);
animator.setInterpolator(PROGRESS_ANIM_INTERPOLATOR);
+ animator.addListener(new AnimatorListenerAdapter() {
+ @Override
+ public void onAnimationEnd(Animator animation) {
+ mLastProgressAnimator = null;
+ }
+ });
animator.start();
+ mLastProgressAnimator = animator;
} else {
+ if (isPrimary && mLastProgressAnimator != null) {
+ mLastProgressAnimator.cancel();
+ mLastProgressAnimator = null;
+ }
setVisualProgress(id, scale);
}
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 2168018..e178318 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -12108,6 +12108,23 @@
onEditorAction(getImeActionId());
}
} return true;
+ case AccessibilityNodeInfo.ACTION_LONG_CLICK: {
+ if (isLongClickable()) {
+ boolean handled;
+ if (isEnabled() && (mBufferType == BufferType.EDITABLE)) {
+ mEditor.mIsBeingLongClickedByAccessibility = true;
+ try {
+ handled = performLongClick();
+ } finally {
+ mEditor.mIsBeingLongClickedByAccessibility = false;
+ }
+ } else {
+ handled = performLongClick();
+ }
+ return handled;
+ }
+ }
+ return false;
default: {
return super.performAccessibilityActionInternal(action, arguments);
}
diff --git a/core/java/com/android/internal/app/procstats/DumpUtils.java b/core/java/com/android/internal/app/procstats/DumpUtils.java
index eda04a6..fc5381e 100644
--- a/core/java/com/android/internal/app/procstats/DumpUtils.java
+++ b/core/java/com/android/internal/app/procstats/DumpUtils.java
@@ -16,14 +16,39 @@
package com.android.internal.app.procstats;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_COUNT;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_COUNT;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_CRITICAL;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_LOW;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_MODERATE;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_MEM_FACTOR_NORMAL;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_NOTHING;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_MOD;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_OFF;
+import static com.android.internal.app.procstats.ProcessStats.ADJ_SCREEN_ON;
+import static com.android.internal.app.procstats.ProcessStats.STATE_BACKUP;
+import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_ACTIVITY;
+import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_ACTIVITY_CLIENT;
+import static com.android.internal.app.procstats.ProcessStats.STATE_CACHED_EMPTY;
+import static com.android.internal.app.procstats.ProcessStats.STATE_COUNT;
+import static com.android.internal.app.procstats.ProcessStats.STATE_HEAVY_WEIGHT;
+import static com.android.internal.app.procstats.ProcessStats.STATE_HOME;
+import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_BACKGROUND;
+import static com.android.internal.app.procstats.ProcessStats.STATE_IMPORTANT_FOREGROUND;
+import static com.android.internal.app.procstats.ProcessStats.STATE_LAST_ACTIVITY;
+import static com.android.internal.app.procstats.ProcessStats.STATE_NOTHING;
+import static com.android.internal.app.procstats.ProcessStats.STATE_PERSISTENT;
+import static com.android.internal.app.procstats.ProcessStats.STATE_RECEIVER;
+import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE;
+import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE_RESTARTING;
+import static com.android.internal.app.procstats.ProcessStats.STATE_TOP;
+
import android.os.UserHandle;
import android.service.procstats.ProcessStatsEnums;
import android.service.procstats.ProcessStatsStateProto;
import android.util.TimeUtils;
import android.util.proto.ProtoOutputStream;
-import static com.android.internal.app.procstats.ProcessStats.*;
-
import java.io.PrintWriter;
import java.util.ArrayList;
@@ -38,6 +63,7 @@
public static final String[] STATE_NAMES_CSV;
static final String[] STATE_TAGS;
static final int[] STATE_PROTO_ENUMS;
+ private static final int[] PROCESS_STATS_STATE_TO_AGGREGATED_STATE;
// Make the mapping easy to update.
static {
@@ -126,6 +152,39 @@
STATE_PROTO_ENUMS[STATE_CACHED_ACTIVITY_CLIENT] =
ProcessStatsEnums.PROCESS_STATE_CACHED_ACTIVITY_CLIENT;
STATE_PROTO_ENUMS[STATE_CACHED_EMPTY] = ProcessStatsEnums.PROCESS_STATE_CACHED_EMPTY;
+
+ // Remap states, as defined by ProcessStats.java, to a reduced subset of states for data
+ // aggregation / size reduction purposes.
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE = new int[STATE_COUNT];
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_PERSISTENT] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_PERSISTENT;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_TOP] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_TOP;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_IMPORTANT_FOREGROUND] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_IMPORTANT_FOREGROUND;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_IMPORTANT_BACKGROUND] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BACKGROUND;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_BACKUP] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BACKGROUND;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_SERVICE] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BACKGROUND;
+ // "Restarting" is not a real state, so this shouldn't exist.
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_SERVICE_RESTARTING] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_UNKNOWN;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_RECEIVER] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_RECEIVER;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_HEAVY_WEIGHT] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_BACKGROUND;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_HOME] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_LAST_ACTIVITY] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_ACTIVITY] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_ACTIVITY_CLIENT] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;
+ PROCESS_STATS_STATE_TO_AGGREGATED_STATE[STATE_CACHED_EMPTY] =
+ ProcessStatsEnums.AGGREGATED_PROCESS_STATE_CACHED;
}
public static final String[] ADJ_SCREEN_NAMES_CSV = new String[] {
@@ -455,4 +514,36 @@
}
return itemName;
}
+
+ /**
+ * Aggregate process states to reduce size of statistics logs.
+ *
+ * <p>Involves unpacking the three parts of state (process state / device memory state /
+ * screen state), manipulating the elements, then re-packing the new values into a single
+ * int. This integer is guaranteed to be unique for any given combination of state elements.
+ *
+ * @param curState current state as used in mCurState in {@class ProcessState} ie. a value
+ * combined from the process's state, the device's memory pressure state, and
+ * the device's screen on/off state.
+ * @return an integer representing the combination of screen state and process state, where
+ * process state has been aggregated.
+ */
+ public static int aggregateCurrentProcessState(int curState) {
+ int screenStateIndex = curState / (ADJ_SCREEN_MOD * STATE_COUNT);
+ // extract process state from the compound state variable (discarding memory state)
+ int procStateIndex = curState % STATE_COUNT;
+
+ // Remap process state per array above.
+ procStateIndex = PROCESS_STATS_STATE_TO_AGGREGATED_STATE[procStateIndex];
+
+ // Pack screen & process state using bit shifting
+ return (procStateIndex << 8) | screenStateIndex;
+ }
+
+ /** Print aggregated tags generated via {@code #aggregateCurrentProcessState}. */
+ public static void printAggregatedProcStateTagProto(ProtoOutputStream proto, long screenId,
+ long stateId, int state) {
+ proto.write(screenId, ADJ_SCREEN_PROTO_ENUMS[state >> 8]);
+ proto.write(stateId, STATE_PROTO_ENUMS[state]);
+ }
}
diff --git a/core/java/com/android/internal/app/procstats/ProcessState.java b/core/java/com/android/internal/app/procstats/ProcessState.java
index a6bed5b..fa9785c 100644
--- a/core/java/com/android/internal/app/procstats/ProcessState.java
+++ b/core/java/com/android/internal/app/procstats/ProcessState.java
@@ -16,22 +16,6 @@
package com.android.internal.app.procstats;
-import android.os.Parcel;
-import android.os.SystemClock;
-import android.os.UserHandle;
-import android.service.procstats.ProcessStatsProto;
-import android.service.procstats.ProcessStatsStateProto;
-import android.util.ArrayMap;
-import android.util.DebugUtils;
-import android.util.Log;
-import android.util.LongSparseArray;
-import android.util.Slog;
-import android.util.SparseLongArray;
-import android.util.TimeUtils;
-import android.util.proto.ProtoOutputStream;
-import android.util.proto.ProtoUtils;
-
-
import static com.android.internal.app.procstats.ProcessStats.PSS_AVERAGE;
import static com.android.internal.app.procstats.ProcessStats.PSS_COUNT;
import static com.android.internal.app.procstats.ProcessStats.PSS_MAXIMUM;
@@ -60,6 +44,21 @@
import static com.android.internal.app.procstats.ProcessStats.STATE_SERVICE_RESTARTING;
import static com.android.internal.app.procstats.ProcessStats.STATE_TOP;
+import android.os.Parcel;
+import android.os.SystemClock;
+import android.os.UserHandle;
+import android.service.procstats.ProcessStatsProto;
+import android.service.procstats.ProcessStatsStateProto;
+import android.util.ArrayMap;
+import android.util.DebugUtils;
+import android.util.Log;
+import android.util.LongSparseArray;
+import android.util.Slog;
+import android.util.SparseLongArray;
+import android.util.TimeUtils;
+import android.util.proto.ProtoOutputStream;
+import android.util.proto.ProtoUtils;
+
import com.android.internal.app.procstats.ProcessStats.PackageState;
import com.android.internal.app.procstats.ProcessStats.ProcessStateHolder;
import com.android.internal.app.procstats.ProcessStats.TotalMemoryUseCollection;
@@ -1418,4 +1417,108 @@
proto.end(token);
}
+
+ /** Similar to {@code #dumpDebug}, but with a reduced/aggregated subset of states. */
+ public void dumpAggregatedProtoForStatsd(ProtoOutputStream proto, long fieldId,
+ String procName, int uid, long now) {
+ // Group proc stats by aggregated type (only screen state + process state)
+ SparseLongArray durationByState = new SparseLongArray();
+ boolean didCurState = false;
+ for (int i = 0; i < mDurations.getKeyCount(); i++) {
+ final int key = mDurations.getKeyAt(i);
+ final int type = SparseMappingTable.getIdFromKey(key);
+ final int aggregatedType = DumpUtils.aggregateCurrentProcessState(type);
+
+ long time = mDurations.getValue(key);
+ if (mCurCombinedState == type) {
+ didCurState = true;
+ time += now - mStartTime;
+ }
+ int index = durationByState.indexOfKey(aggregatedType);
+ if (index >= 0) {
+ durationByState.put(aggregatedType, time + durationByState.valueAt(aggregatedType));
+ } else {
+ durationByState.put(aggregatedType, time);
+ }
+ }
+ if (!didCurState && mCurCombinedState != STATE_NOTHING) {
+ final int aggregatedType = DumpUtils.aggregateCurrentProcessState(mCurCombinedState);
+ int index = durationByState.indexOfKey(aggregatedType);
+ if (index >= 0) {
+ durationByState.put(aggregatedType,
+ (now - mStartTime) + durationByState.valueAt(index));
+ } else {
+ durationByState.put(aggregatedType, now - mStartTime);
+ }
+ }
+
+ // Now we have total durations, aggregate the RSS values
+ SparseLongArray meanRssByState = new SparseLongArray();
+ SparseLongArray maxRssByState = new SparseLongArray();
+ // compute weighted averages and max-of-max
+ for (int i = 0; i < mPssTable.getKeyCount(); i++) {
+ final int key = mPssTable.getKeyAt(i);
+ final int type = SparseMappingTable.getIdFromKey(key);
+ if (durationByState.indexOfKey(type) < 0) {
+ // state without duration should not have stats!
+ continue;
+ }
+ final int aggregatedType = DumpUtils.aggregateCurrentProcessState(type);
+
+ long[] rssMeanAndMax = mPssTable.getRssMeanAndMax(key);
+
+ // compute mean * duration, then store sum of that in meanRssByState
+ long meanTimesDuration = rssMeanAndMax[0] * mDurations.getValue(key);
+ if (meanRssByState.indexOfKey(aggregatedType) >= 0) {
+ meanRssByState.put(aggregatedType,
+ meanTimesDuration + meanRssByState.get(aggregatedType));
+ } else {
+ meanRssByState.put(aggregatedType, meanTimesDuration);
+ }
+
+ // accumulate max-of-maxes in maxRssByState
+ if (maxRssByState.indexOfKey(aggregatedType) >= 0
+ && maxRssByState.get(aggregatedType) < rssMeanAndMax[1]) {
+ maxRssByState.put(aggregatedType, rssMeanAndMax[1]);
+ } else if (maxRssByState.indexOfKey(aggregatedType) < 0) {
+ maxRssByState.put(aggregatedType, rssMeanAndMax[1]);
+ }
+ }
+
+ // divide the means by the durations to get the weighted mean-of-means
+ for (int i = 0; i < durationByState.size(); i++) {
+ int aggregatedKey = durationByState.keyAt(i);
+ if (meanRssByState.indexOfKey(aggregatedKey) < 0) {
+ // these data structures should be consistent
+ continue;
+ }
+ meanRssByState.put(aggregatedKey,
+ meanRssByState.get(aggregatedKey) / durationByState.get(aggregatedKey));
+ }
+
+ // build the output
+ final long token = proto.start(fieldId);
+ proto.write(ProcessStatsProto.PROCESS, procName);
+ proto.write(ProcessStatsProto.UID, uid);
+
+ for (int i = 0; i < durationByState.size(); i++) {
+ final int aggregatedKey = mPssTable.getKeyAt(i);
+
+ final long stateToken = proto.start(ProcessStatsProto.STATES);
+ DumpUtils.printAggregatedProcStateTagProto(proto,
+ ProcessStatsStateProto.SCREEN_STATE,
+ ProcessStatsStateProto.PROCESS_STATE,
+ durationByState.keyAt(i));
+ proto.write(ProcessStatsStateProto.DURATION_MS, durationByState.valueAt(i));
+
+ ProtoUtils.toAggStatsProto(proto, ProcessStatsStateProto.RSS,
+ 0, /* do not output a minimum value */
+ meanRssByState.get(aggregatedKey),
+ maxRssByState.get(aggregatedKey));
+
+ proto.end(stateToken);
+ }
+
+ proto.end(token);
+ }
}
diff --git a/core/java/com/android/internal/app/procstats/PssTable.java b/core/java/com/android/internal/app/procstats/PssTable.java
index fc93c3a..a6bae6e 100644
--- a/core/java/com/android/internal/app/procstats/PssTable.java
+++ b/core/java/com/android/internal/app/procstats/PssTable.java
@@ -16,17 +16,17 @@
package com.android.internal.app.procstats;
+import static com.android.internal.app.procstats.ProcessStats.PSS_AVERAGE;
+import static com.android.internal.app.procstats.ProcessStats.PSS_COUNT;
+import static com.android.internal.app.procstats.ProcessStats.PSS_MAXIMUM;
+import static com.android.internal.app.procstats.ProcessStats.PSS_MINIMUM;
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_AVERAGE;
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_MAXIMUM;
import static com.android.internal.app.procstats.ProcessStats.PSS_RSS_MINIMUM;
import static com.android.internal.app.procstats.ProcessStats.PSS_SAMPLE_COUNT;
-import static com.android.internal.app.procstats.ProcessStats.PSS_MINIMUM;
-import static com.android.internal.app.procstats.ProcessStats.PSS_AVERAGE;
-import static com.android.internal.app.procstats.ProcessStats.PSS_MAXIMUM;
-import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MINIMUM;
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_AVERAGE;
import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MAXIMUM;
-import static com.android.internal.app.procstats.ProcessStats.PSS_COUNT;
+import static com.android.internal.app.procstats.ProcessStats.PSS_USS_MINIMUM;
import android.service.procstats.ProcessStatsStateProto;
import android.util.proto.ProtoOutputStream;
@@ -133,7 +133,6 @@
}
if (stats[statsIndex + PSS_RSS_MINIMUM] > minRss) {
- stats[statsIndex + PSS_RSS_MINIMUM] = minRss;
}
stats[statsIndex + PSS_RSS_AVERAGE] = (long)(((stats[statsIndex + PSS_RSS_AVERAGE]
@@ -167,4 +166,10 @@
stats[statsIndex + PSS_RSS_AVERAGE],
stats[statsIndex + PSS_RSS_MAXIMUM]);
}
+
+ long[] getRssMeanAndMax(int key) {
+ final long[] stats = getArrayForKey(key);
+ final int statsIndex = SparseMappingTable.getIndexFromKey(key);
+ return new long[]{stats[statsIndex + PSS_RSS_AVERAGE], stats[statsIndex + PSS_RSS_MAXIMUM]};
+ }
}
diff --git a/core/java/com/android/internal/os/KernelCpuThreadReader.java b/core/java/com/android/internal/os/KernelCpuThreadReader.java
index d92f725b..3407670 100644
--- a/core/java/com/android/internal/os/KernelCpuThreadReader.java
+++ b/core/java/com/android/internal/os/KernelCpuThreadReader.java
@@ -25,6 +25,7 @@
import com.android.internal.util.Preconditions;
import java.io.IOException;
+import java.nio.file.DirectoryIteratorException;
import java.nio.file.DirectoryStream;
import java.nio.file.Files;
import java.nio.file.Path;
@@ -276,7 +277,7 @@
}
threadCpuUsages.add(threadCpuUsage);
}
- } catch (IOException e) {
+ } catch (IOException | DirectoryIteratorException e) {
// Expected when a process finishes
return null;
}
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java
index ff03f1a..8dda149 100644
--- a/core/java/com/android/internal/os/Zygote.java
+++ b/core/java/com/android/internal/os/Zygote.java
@@ -567,7 +567,7 @@
static Runnable forkUsap(LocalServerSocket usapPoolSocket,
int[] sessionSocketRawFDs,
boolean isPriorityFork) {
- FileDescriptor[] pipeFDs = null;
+ FileDescriptor[] pipeFDs;
try {
pipeFDs = Os.pipe2(O_CLOEXEC);
diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java
index bc8dfd4..a6e3e95 100644
--- a/core/java/com/android/internal/os/ZygoteConnection.java
+++ b/core/java/com/android/internal/os/ZygoteConnection.java
@@ -504,8 +504,8 @@
parsedArgs.mDisabledCompatChanges,
parsedArgs.mRemainingArgs, null /* classLoader */);
} else {
- return ZygoteInit.childZygoteInit(parsedArgs.mTargetSdkVersion,
- parsedArgs.mRemainingArgs, null /* classLoader */);
+ return ZygoteInit.childZygoteInit(
+ parsedArgs.mRemainingArgs /* classLoader */);
}
}
}
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index ec1f516..e95ba5c 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -115,7 +115,7 @@
/**
* Controls whether we should preload resources during zygote init.
*/
- public static final boolean PRELOAD_RESOURCES = true;
+ private static final boolean PRELOAD_RESOURCES = true;
private static final int UNPRIVILEGED_UID = 9999;
private static final int UNPRIVILEGED_GID = 9999;
@@ -157,7 +157,7 @@
sPreloadComplete = true;
}
- public static void lazyPreload() {
+ static void lazyPreload() {
Preconditions.checkState(!sPreloadComplete);
Log.i(TAG, "Lazily preloading resources.");
@@ -342,7 +342,7 @@
}
if ("true".equals(prop)) {
Trace.traceBegin(Trace.TRACE_TAG_DALVIK, "ResetJitCounters");
- runtime.resetJitCounters();
+ VMRuntime.resetJitCounters();
Trace.traceEnd(Trace.TRACE_TAG_DALVIK);
}
@@ -391,8 +391,6 @@
* larger.
*/
private static void preloadResources() {
- final VMRuntime runtime = VMRuntime.getRuntime();
-
try {
mResources = Resources.getSystem();
mResources.startPreloading();
@@ -436,9 +434,7 @@
int N = ar.length();
for (int i = 0; i < N; i++) {
int id = ar.getResourceId(i, 0);
- if (false) {
- Log.v(TAG, "Preloading resource #" + Integer.toHexString(id));
- }
+
if (id != 0) {
if (mResources.getColorStateList(id, null) == null) {
throw new IllegalArgumentException(
@@ -456,9 +452,7 @@
int N = ar.length();
for (int i = 0; i < N; i++) {
int id = ar.getResourceId(i, 0);
- if (false) {
- Log.v(TAG, "Preloading resource #" + Integer.toHexString(id));
- }
+
if (id != 0) {
if (mResources.getDrawable(id, null) == null) {
throw new IllegalArgumentException(
@@ -655,13 +649,12 @@
final String packageName = "*";
final String outputPath = null;
final int dexFlags = 0;
- final String compilerFilter = systemServerFilter;
final String uuid = StorageManager.UUID_PRIVATE_INTERNAL;
final String seInfo = null;
final int targetSdkVersion = 0; // SystemServer targets the system's SDK version
try {
installd.dexopt(classPathElement, Process.SYSTEM_UID, packageName,
- instructionSet, dexoptNeeded, outputPath, dexFlags, compilerFilter,
+ instructionSet, dexoptNeeded, outputPath, dexFlags, systemServerFilter,
uuid, classLoaderContext, seInfo, false /* downgrade */,
targetSdkVersion, /*profileName*/ null, /*dexMetadataPath*/ null,
"server-dexopt");
@@ -737,7 +730,7 @@
capabilities &= ((long) data[0].effective) | (((long) data[1].effective) << 32);
/* Hardcoded command line to start the system server */
- String args[] = {
+ String[] args = {
"--setuid=1000",
"--setgid=1000",
"--setgroups=1001,1002,1003,1004,1005,1006,1007,1008,1009,1010,1018,1021,1023,"
@@ -748,7 +741,7 @@
"--target-sdk-version=" + VMRuntime.SDK_VERSION_CUR_DEVELOPMENT,
"com.android.server.SystemServer",
};
- ZygoteArguments parsedArgs = null;
+ ZygoteArguments parsedArgs;
int pid;
@@ -821,7 +814,7 @@
* @param argv Command line arguments used to specify the Zygote's configuration.
*/
@UnsupportedAppUsage
- public static void main(String argv[]) {
+ public static void main(String[] argv) {
ZygoteServer zygoteServer = null;
// Mark zygote start. This ensures that thread creation will throw
@@ -980,7 +973,7 @@
* are enabled)
* @param argv arg strings
*/
- public static final Runnable zygoteInit(int targetSdkVersion, long[] disabledCompatChanges,
+ public static Runnable zygoteInit(int targetSdkVersion, long[] disabledCompatChanges,
String[] argv, ClassLoader classLoader) {
if (RuntimeInit.DEBUG) {
Slog.d(RuntimeInit.TAG, "RuntimeInit: Starting application from zygote");
@@ -1000,11 +993,10 @@
* to zygoteInit(), which skips calling into initialization routines that start the Binder
* threadpool.
*/
- static final Runnable childZygoteInit(
- int targetSdkVersion, String[] argv, ClassLoader classLoader) {
+ static Runnable childZygoteInit(String[] argv) {
RuntimeInit.Arguments args = new RuntimeInit.Arguments(argv);
- return RuntimeInit.findStaticMain(args.startClass, args.startArgs, classLoader);
+ return RuntimeInit.findStaticMain(args.startClass, args.startArgs, /* classLoader= */null);
}
- private static final native void nativeZygoteInit();
+ private static native void nativeZygoteInit();
}
diff --git a/core/java/com/android/internal/os/ZygoteServer.java b/core/java/com/android/internal/os/ZygoteServer.java
index 8d281b7..a0b50df 100644
--- a/core/java/com/android/internal/os/ZygoteServer.java
+++ b/core/java/com/android/internal/os/ZygoteServer.java
@@ -411,7 +411,7 @@
}
}
- void resetUsapRefillState() {
+ private void resetUsapRefillState() {
mUsapPoolRefillAction = UsapPoolRefillAction.NONE;
mUsapPoolRefillTriggerTimestamp = INVALID_TIMESTAMP;
}
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index 138d0dd..127bbe5 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -358,7 +358,7 @@
super(context);
mLayoutInflater = LayoutInflater.from(context);
mRenderShadowsInCompositor = Settings.Global.getInt(context.getContentResolver(),
- DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR, 1) != 0;
+ DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR, 0) != 0;
}
/**
diff --git a/core/java/com/android/internal/statusbar/IStatusBar.aidl b/core/java/com/android/internal/statusbar/IStatusBar.aidl
index 5b79b18..9f66e94 100644
--- a/core/java/com/android/internal/statusbar/IStatusBar.aidl
+++ b/core/java/com/android/internal/statusbar/IStatusBar.aidl
@@ -227,4 +227,12 @@
* display.
*/
void suppressAmbientDisplay(boolean suppress);
+
+ /**
+ * Requests {@link WindowMagnification} to set window magnification connection through
+ * {@link AccessibilityManager#setWindowMagnificationConnection(IWindowMagnificationConnection)}
+ *
+ * @param connect {@code true} if needs connection, otherwise set the connection to null.
+ */
+ void requestWindowMagnificationConnection(boolean connect);
}
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index 189a0a7..52c5ff0 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -303,5 +303,8 @@
"android_util_FileObserver.cpp",
],
},
+ windows: {
+ enabled: true,
+ },
},
}
diff --git a/core/jni/android_view_InputChannel.cpp b/core/jni/android_view_InputChannel.cpp
index 891520a..cc182b6 100644
--- a/core/jni/android_view_InputChannel.cpp
+++ b/core/jni/android_view_InputChannel.cpp
@@ -37,7 +37,6 @@
jclass clazz;
jfieldID mPtr; // native object attached to the DVM InputChannel
- jmethodID ctor;
} gInputChannelClassInfo;
// ----------------------------------------------------------------------------
@@ -88,12 +87,6 @@
return reinterpret_cast<NativeInputChannel*>(longPtr);
}
-static void android_view_InputChannel_setNativeInputChannel(JNIEnv* env, jobject inputChannelObj,
- NativeInputChannel* nativeInputChannel) {
- env->SetLongField(inputChannelObj, gInputChannelClassInfo.mPtr,
- reinterpret_cast<jlong>(nativeInputChannel));
-}
-
sp<InputChannel> android_view_InputChannel_getInputChannel(JNIEnv* env, jobject inputChannelObj) {
NativeInputChannel* nativeInputChannel =
android_view_InputChannel_getNativeInputChannel(env, inputChannelObj);
@@ -111,20 +104,15 @@
}
}
-static jobject android_view_InputChannel_createInputChannel(JNIEnv* env,
+static jlong android_view_InputChannel_createInputChannel(JNIEnv* env,
sp<InputChannel> inputChannel) {
std::unique_ptr<NativeInputChannel> nativeInputChannel =
std::make_unique<NativeInputChannel>(inputChannel);
- jobject inputChannelObj = env->NewObject(gInputChannelClassInfo.clazz,
- gInputChannelClassInfo.ctor);
- if (inputChannelObj) {
- android_view_InputChannel_setNativeInputChannel(env, inputChannelObj,
- nativeInputChannel.release());
- }
- return inputChannelObj;
+
+ return reinterpret_cast<jlong>(nativeInputChannel.release());
}
-static jobjectArray android_view_InputChannel_nativeOpenInputChannelPair(JNIEnv* env,
+static jlongArray android_view_InputChannel_nativeOpenInputChannelPair(JNIEnv* env,
jclass clazz, jstring nameObj) {
ScopedUtfChars nameChars(env, nameObj);
std::string name = nameChars.c_str();
@@ -140,96 +128,71 @@
return nullptr;
}
- jobjectArray channelPair = env->NewObjectArray(2, gInputChannelClassInfo.clazz, nullptr);
+ jlongArray channelPair = env->NewLongArray(2);
+ if (channelPair == nullptr) {
+ return nullptr;
+ }
+
+ jlong* outArray = env->GetLongArrayElements(channelPair, 0);
+ outArray[0] = android_view_InputChannel_createInputChannel(env, serverChannel);
if (env->ExceptionCheck()) {
return nullptr;
}
- jobject serverChannelObj = android_view_InputChannel_createInputChannel(env, serverChannel);
+ outArray[1] = android_view_InputChannel_createInputChannel(env, clientChannel);
if (env->ExceptionCheck()) {
return nullptr;
}
+ env->ReleaseLongArrayElements(channelPair, outArray, 0);
- jobject clientChannelObj = android_view_InputChannel_createInputChannel(env, clientChannel);
- if (env->ExceptionCheck()) {
- return nullptr;
- }
-
- env->SetObjectArrayElement(channelPair, 0, serverChannelObj);
- env->SetObjectArrayElement(channelPair, 1, clientChannelObj);
return channelPair;
}
-static void android_view_InputChannel_nativeDispose(JNIEnv* env, jobject obj, jboolean finalized) {
+static void InputChannel_nativeDestroy(void *rawInputChannel) {
NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
+ reinterpret_cast<NativeInputChannel *>(rawInputChannel);
if (nativeInputChannel) {
- if (finalized) {
- ALOGW("Input channel object '%s' was finalized without being disposed!",
- nativeInputChannel->getInputChannel()->getName().c_str());
- }
+ delete nativeInputChannel;
+ }
+}
+static jlong android_view_InputChannel_getNativeFinalizer(JNIEnv* env, jobject obj) {
+ return static_cast<jlong>(reinterpret_cast<uintptr_t>(&InputChannel_nativeDestroy));
+}
+
+static void android_view_InputChannel_nativeDispose(JNIEnv* env, jobject obj, jlong channel) {
+ NativeInputChannel* nativeInputChannel =
+ reinterpret_cast<NativeInputChannel*>(channel);
+
+ if (nativeInputChannel) {
nativeInputChannel->invokeAndRemoveDisposeCallback(env, obj);
-
- android_view_InputChannel_setNativeInputChannel(env, obj, nullptr);
- delete nativeInputChannel;
}
}
-static void android_view_InputChannel_nativeRelease(JNIEnv* env, jobject obj, jboolean finalized) {
- NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
- if (nativeInputChannel) {
- android_view_InputChannel_setNativeInputChannel(env, obj, nullptr);
- delete nativeInputChannel;
- }
-}
-
-static void android_view_InputChannel_nativeTransferTo(JNIEnv* env, jobject obj,
- jobject otherObj) {
- if (android_view_InputChannel_getNativeInputChannel(env, otherObj) != nullptr) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "Other object already has a native input channel.");
- return;
- }
-
- NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
- android_view_InputChannel_setNativeInputChannel(env, otherObj, nativeInputChannel);
- android_view_InputChannel_setNativeInputChannel(env, obj, nullptr);
-}
-
-static void android_view_InputChannel_nativeReadFromParcel(JNIEnv* env, jobject obj,
+static jlong android_view_InputChannel_nativeReadFromParcel(JNIEnv* env, jobject obj,
jobject parcelObj) {
- if (android_view_InputChannel_getNativeInputChannel(env, obj) != nullptr) {
- jniThrowException(env, "java/lang/IllegalStateException",
- "This object already has a native input channel.");
- return;
- }
-
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel) {
bool isInitialized = parcel->readInt32();
if (isInitialized) {
sp<InputChannel> inputChannel = InputChannel::read(*parcel);
-
NativeInputChannel* nativeInputChannel = new NativeInputChannel(inputChannel);
-
- android_view_InputChannel_setNativeInputChannel(env, obj, nativeInputChannel);
+ return reinterpret_cast<jlong>(nativeInputChannel);
}
}
+ return 0;
}
static void android_view_InputChannel_nativeWriteToParcel(JNIEnv* env, jobject obj,
- jobject parcelObj) {
+ jobject parcelObj, jlong channel) {
Parcel* parcel = parcelForJavaObject(env, parcelObj);
if (parcel == nullptr) {
ALOGE("Could not obtain parcel for Java object");
return;
}
-
NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
+ reinterpret_cast<NativeInputChannel*>(channel);
+
if (!nativeInputChannel) {
parcel->writeInt32(0); // not initialized
return;
@@ -238,9 +201,9 @@
nativeInputChannel->getInputChannel()->write(*parcel);
}
-static jstring android_view_InputChannel_nativeGetName(JNIEnv* env, jobject obj) {
+static jstring android_view_InputChannel_nativeGetName(JNIEnv* env, jobject obj, jlong channel) {
NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
+ reinterpret_cast<NativeInputChannel*>(channel);
if (! nativeInputChannel) {
return nullptr;
}
@@ -249,18 +212,19 @@
return name;
}
-static void android_view_InputChannel_nativeDup(JNIEnv* env, jobject obj, jobject otherObj) {
+static jlong android_view_InputChannel_nativeDup(JNIEnv* env, jobject obj, jlong channel) {
NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
+ reinterpret_cast<NativeInputChannel*>(channel);
+
if (nativeInputChannel == nullptr) {
jniThrowRuntimeException(env, "InputChannel has no valid NativeInputChannel");
- return;
+ return 0;
}
sp<InputChannel> inputChannel = nativeInputChannel->getInputChannel();
if (inputChannel == nullptr) {
jniThrowRuntimeException(env, "NativeInputChannel has no corresponding InputChannel");
- return;
+ return 0;
}
sp<InputChannel> dupInputChannel = inputChannel->dup();
if (dupInputChannel == nullptr) {
@@ -268,13 +232,12 @@
"Could not duplicate input channel %s", inputChannel->getName().c_str());
jniThrowRuntimeException(env, message.c_str());
}
- android_view_InputChannel_setNativeInputChannel(env, otherObj,
- new NativeInputChannel(dupInputChannel));
+ return reinterpret_cast<jlong>(new NativeInputChannel(dupInputChannel));
}
-static jobject android_view_InputChannel_nativeGetToken(JNIEnv* env, jobject obj) {
+static jobject android_view_InputChannel_nativeGetToken(JNIEnv* env, jobject obj, jlong channel) {
NativeInputChannel* nativeInputChannel =
- android_view_InputChannel_getNativeInputChannel(env, obj);
+ reinterpret_cast<NativeInputChannel*>(channel);
if (nativeInputChannel) {
return javaObjectForIBinder(env,
nativeInputChannel->getInputChannel()->getConnectionToken());
@@ -286,23 +249,21 @@
static const JNINativeMethod gInputChannelMethods[] = {
/* name, signature, funcPtr */
- { "nativeOpenInputChannelPair", "(Ljava/lang/String;)[Landroid/view/InputChannel;",
+ { "nativeOpenInputChannelPair", "(Ljava/lang/String;)[J",
(void*)android_view_InputChannel_nativeOpenInputChannelPair },
- { "nativeDispose", "(Z)V",
+ { "nativeGetFinalizer", "()J",
+ (void*)android_view_InputChannel_getNativeFinalizer },
+ { "nativeDispose", "(J)V",
(void*)android_view_InputChannel_nativeDispose },
- { "nativeRelease", "()V",
- (void*)android_view_InputChannel_nativeRelease },
- { "nativeTransferTo", "(Landroid/view/InputChannel;)V",
- (void*)android_view_InputChannel_nativeTransferTo },
- { "nativeReadFromParcel", "(Landroid/os/Parcel;)V",
+ { "nativeReadFromParcel", "(Landroid/os/Parcel;)J",
(void*)android_view_InputChannel_nativeReadFromParcel },
- { "nativeWriteToParcel", "(Landroid/os/Parcel;)V",
+ { "nativeWriteToParcel", "(Landroid/os/Parcel;J)V",
(void*)android_view_InputChannel_nativeWriteToParcel },
- { "nativeGetName", "()Ljava/lang/String;",
+ { "nativeGetName", "(J)Ljava/lang/String;",
(void*)android_view_InputChannel_nativeGetName },
- { "nativeDup", "(Landroid/view/InputChannel;)V",
+ { "nativeDup", "(J)J",
(void*)android_view_InputChannel_nativeDup },
- { "nativeGetToken", "()Landroid/os/IBinder;",
+ { "nativeGetToken", "(J)Landroid/os/IBinder;",
(void*)android_view_InputChannel_nativeGetToken },
};
@@ -315,9 +276,6 @@
gInputChannelClassInfo.mPtr = GetFieldIDOrDie(env, gInputChannelClassInfo.clazz, "mPtr", "J");
- gInputChannelClassInfo.ctor = GetMethodIDOrDie(env, gInputChannelClassInfo.clazz, "<init>",
- "()V");
-
return res;
}
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index c72668f..cfd3c09 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -33,6 +33,7 @@
// Static whitelist of open paths that the zygote is allowed to keep open.
static const char* kPathWhitelist[] = {
+ "/apex/com.android.appsearch/javalib/framework-appsearch.jar",
"/apex/com.android.conscrypt/javalib/conscrypt.jar",
"/apex/com.android.ipsec/javalib/ike.jar",
"/apex/com.android.media/javalib/updatable-media.jar",
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index a3313b2..c7f49b9 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -75,9 +75,11 @@
// Settings for accessibility timeout
optional SettingProto non_interactive_ui_timeout_ms = 32 [ (android.privacy).dest = DEST_AUTOMATIC ];
optional SettingProto interactive_ui_timeout_ms = 33 [ (android.privacy).dest = DEST_AUTOMATIC ];
- // Settings for magnification mode
+ // Settings for accessibility magnification.
optional SettingProto accessibility_magnification_mode = 34 [ (android.privacy).dest = DEST_AUTOMATIC ];
- optional SettingProto button_long_press_targets = 35 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto accessibility_magnification_capability = 35 [ (android.privacy).dest = DEST_AUTOMATIC ];
+ optional SettingProto button_long_press_targets = 36 [ (android.privacy).dest = DEST_AUTOMATIC ];
+
}
optional Accessibility accessibility = 2;
diff --git a/core/proto/android/service/procstats_enum.proto b/core/proto/android/service/procstats_enum.proto
index cc3fe5a..2abf373 100644
--- a/core/proto/android/service/procstats_enum.proto
+++ b/core/proto/android/service/procstats_enum.proto
@@ -76,3 +76,27 @@
SERVICE_OPERATION_STATE_BOUND = 4;
SERVICE_OPERATION_STATE_EXECUTING = 5;
}
+
+// this enum list is from frameworks/base/core/java/com/android/internal/app/procstats/ProcessStats.java
+// and not frameworks/base/core/java/android/app/ActivityManager.java
+enum AggregatedProcessState {
+ AGGREGATED_PROCESS_STATE_UNKNOWN = 0;
+ // Persistent system process; PERSISTENT or PERSISTENT_UI in ActivityManager
+ AGGREGATED_PROCESS_STATE_PERSISTENT = 1;
+ // Top activity; actually any visible activity; TOP or TOP_SLEEPING in ActivityManager
+ AGGREGATED_PROCESS_STATE_TOP = 2;
+ // Bound top foreground process; BOUND_TOP or BOUND_FOREGROUND_SERVICE in ActivityManager
+ AGGREGATED_PROCESS_STATE_BOUND_TOP_OR_FGS = 3;
+ // Important foreground process; FOREGROUND_SERVICE in ActivityManager
+ AGGREGATED_PROCESS_STATE_FGS = 4;
+ // Important foreground process ; IMPORTANT_FOREGROUND in ActivityManager
+ AGGREGATED_PROCESS_STATE_IMPORTANT_FOREGROUND = 5;
+ // Various background processes; IMPORTANT_BACKGROUND, TRANSIENT_BACKGROUND, BACKUP, SERVICE,
+ // HEAVY_WEIGHT in ActivityManager
+ AGGREGATED_PROCESS_STATE_BACKGROUND = 6;
+ // Process running a receiver; RECEIVER in ActivityManager
+ AGGREGATED_PROCESS_STATE_RECEIVER = 7;
+ // Various cached processes; HOME, LAST_ACTIVITY, CACHED_ACTIVITY, CACHED_RECENT,
+ // CACHED_ACTIVITY_CLIENT, CACHED_EMPTY in ActivityManager
+ AGGREGATED_PROCESS_STATE_CACHED = 8;
+}
\ No newline at end of file
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index f7400bd..e132735 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -5017,10 +5017,12 @@
<attribution android:tag="CountryDetector" android:label="@string/country_detector"/>
<!-- Attribution for Location service. -->
<attribution android:tag="LocationService" android:label="@string/location_service"/>
+ <!-- Attribution for Gnss service. -->
+ <attribution android:tag="GnssService" android:label="@string/gnss_service"/>
<!-- Attribution for Sensor Notification service. -->
<attribution android:tag="SensorNotificationService"
android:label="@string/sensor_notification_service"/>
- <!-- Feature Id for Twilight service. -->
+ <!-- Attribution for Twilight service. -->
<attribution android:tag="TwilightService" android:label="@string/twilight_service"/>
<application android:process="system"
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index 2e93904..f38436a 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Jou organisasie bestuur hierdie toestel en kan netwerkverkeer monitor. Tik vir besonderhede."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Ligginginstellings is deur jou administrateur verander"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tik om jou ligginginstellings te sien."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Landaanwyser"</string>
+ <string name="location_service" msgid="2439187616018455546">"Liggingdiens"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-diens"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensorkennisgewingdiens"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Skemerdiens"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Jou toestel sal uitgevee word"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Die administrasieprogram kan nie gebruik word nie. Jou toestel sal nou uitgevee word.\n\nKontak jou organisasie se administrateur as jy vrae het."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Druk is gedeaktiveer deur <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Neem skermkiekie vir foutverslag oor <xliff:g id="NUMBER_1">%d</xliff:g> sekondes.</item>
<item quantity="one">Neem skermkiekie vir foutverslag oor <xliff:g id="NUMBER_0">%d</xliff:g> sekonde.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Skermkiekie met foutverslag geneem"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Kon nie skermkiekie met foutverslag neem nie"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Stilmodus"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Klank is AF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Klank is AAN"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Kry toegang tot ekstra liggingverskaffer-bevele"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Gee die program toegang tot ekstra liggingverskaffer-bevele. Dit kan die program dalk toelaat om in te meng met die werking van die GPS of ander liggingbronne."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"kry net op die voorgrond toegang tot presiese ligging"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Hierdie program kan jou presiese ligging kry net wanneer dit op die voorgrond is. Liggingdienste moet aangeskakel wees en op jou toestel beskikbaar wees sodat die program hulle kan gebruik. Dit kan veroorsaak dat meer batterykrag gebruik word."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Hierdie program kan jou presiese ligging van liggingdienste af kry terwyl die program gebruik word. Liggingdienste vir jou toestel moet aangeskakel wees vir die program om die ligging te kry. Dit kan batterygebruik verhoog."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"kry benaderde ligging net op die voorgrond"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Hierdie program kan jou benaderde ligging net kry wanneer dit op die voorgrond is. Liggingdienste moet aangeskakel wees en op jou toestel beskikbaar wees sodat die program hulle kan gebruik."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Hierdie program kan jou benaderde ligging van liggingdienste af kry terwyl die program gebruik word. Liggingdienste vir jou toestel moet aangeskakel wees vir die program om die ligging te kry."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"kry ligging op die agtergrond"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Hierdie program het toegang tot ligging terwyl dit op die agtergrond werk, asook voorgrondtoegang tot ligging."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Hierdie program kan op enige tydstip toegang tot ligging kry, selfs wanneer die program nie gebruik word nie."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"verander jou klankinstellings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Laat die program toe om globale klankinstellings soos volume en watter luidspreker vir uitvoer gebruik word, te verander."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"neem klank op"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Hierdie program kan enige tyd met die kamera foto\'s neem en video\'s opneem."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Gee \'n program of diens toegang tot stelselkameras om foto\'s en video\'s te neem"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Hierdie bevoorregte | stelselprogram kan enige tyd met \'n stelselkamera foto\'s neem en video\'s opneem. Vereis dat die program ook die android.permission.CAMERA-toestemming het"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Laat \'n program of diens toe om terugbeloproepe te ontvang oor kameratoestelle wat oopgemaak of toegemaak word."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Hierdie handtekeningprogram kan terugbeloproepe ontvang wanneer enige kameratoestel oopgemaak (deur watter programpakket) of toegemaak word."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"beheer vibrasie"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Laat die program toe om die vibrator te beheer."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Stel die program in staat om toegang tot die vibreerderstand te kry."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Laat die program toe om sy oproepe deur die stelsel te stuur om die oproepervaring te verbeter."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"sien en beheer oproepe deur die stelsel."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Laat die program toe om deurlopende oproepe op die toestel te sien en te beheer. Dit sluit inligting in soos oproepnommers vir oproepe en die toedrag van die oproepe."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"vrygestel van beperkings op oudio-opnames"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Stel die program vry van beperkings om oudio op te neem."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"gaan voort met \'n oproep uit \'n ander program"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Laat die program toe om \'n oproep voort te sit wat in \'n ander program begin is."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lees foonnommers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Laat die program toe om toegang tot die toestel se foonnommers te kry."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"hou motorskerm aan"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"verhoed dat tablet slaap"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"keer dat jou Android TV-toestel slaap"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"verhoed foon om te slaap"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Laat die program toe om die motorskerm aan te hou."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Laat die program toe om die tablet te keer om te slaap."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Laat die program toe om te keer dat jou Android TV-toestel slaap."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Laat die program toe om die foon te keer om te slaap."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Probeer weer."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Geen vingerafdrukke is geregistreer nie."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Hierdie toetstel het nie \'n vingerafdruksensor nie."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor is tydelik gedeaktiveer."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Vinger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan nie gesig verifieer nie. Probeer weer."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Jy het nie gesigslot opgestel nie."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Gesigslot word nie op hierdie toestel gesteun nie."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor is tydelik gedeaktiveer."</string>
<string name="face_name_template" msgid="3877037340223318119">"Gesig <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Selnetwerk het nie internettoegang nie"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Netwerk het nie internettoegang nie"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Daar kan nie by private DNS-bediener ingegaan word nie"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Gekoppel"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> het beperkte konnektiwiteit"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tik om in elk geval te koppel"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Het oorgeskakel na <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-ontfouting gekoppel"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tik om USB-ontfouting af te skakel"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Kies om USB-ontfouting te deaktiveer."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Draadlose ontfouting is gekoppel"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tik om draadlose ontfouting af te skakel"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Kies om draadlose ontfouting te deaktiveer."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Toetsraamwerkmodus is geaktiveer"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Voer \'n fabriekterugstelling uit om Toetsraamwerkmodus te deaktiveer."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Reekskonsole is geaktiveer"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Die voorgronddiens wat in die agtergrond begin het vanaf <xliff:g id="PACKAGENAME">%1$s</xliff:g> sal nie ingebruik-toestemming hê in toekomstige R-bouweergawes nie. Raadpleeg asseblief go/r-bg-fgs-restriction en dien \'n foutverslag in."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Verhoog volume bo aanbevole vlak?\n\nOm lang tydperke teen hoë volume te luister, kan jou gehoor beskadig."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gebruik toeganklikheidkortpad?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wanneer die kortpad aan is, sal \'n toeganklikheidkenmerk begin word as albei volumeknoppies 3 sekondes lank gedruk word."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gee <xliff:g id="SERVICE">%1$s</xliff:g> volle beheer oor jou toestel?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"As jy <xliff:g id="SERVICE">%1$s</xliff:g> aanskakel, sal jou toestel nie jou skermslot gebruik om data-enkripsie te verbeter nie."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volle beheer is gepas vir programme wat jou help met toeganklikheidsbehoeftes, maar nie vir die meeste programme nie."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bekyk en beheer skerm"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Dit kan alle inhoud op die skerm lees en inhoud bo-oor ander programme vertoon."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Bekyk en voer handelinge uit"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Dit kan jou interaksies met \'n program of \'n hardewaresensor naspoor en namens jou met programme interaksie hê."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Laat toe"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Weier"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tik op \'n kenmerk om dit te begin gebruik:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Kies programme om saam met die toeganklikheidknoppie te gebruik"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Kies programme om saam met die volumesleutelkortpad te gebruik"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is afgeskakel"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Wysig kortpaaie"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Kanselleer"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klaar"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Skakel kortpad af"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gebruik kortpad"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Kleuromkering"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Ongekategoriseer"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Jy stel die belangrikheid van hierdie kennisgewings."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Dit is belangrik as gevolg van die mense wat betrokke is."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Gepasmaakte programkennisgewing"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Laat <xliff:g id="APP">%1$s</xliff:g> toe om \'n nuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> te skep (\'n gebruiker met hierdie rekening bestaan reeds)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Laat <xliff:g id="APP">%1$s</xliff:g> toe om \'n nuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> te skep?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Voeg \'n taal by"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toeganklikheid-kieslys"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> se onderskrifbalk."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in die BEPERK-groep geplaas"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Persoonlik"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Werk"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Persoonlike aansig"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Werkaansig"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Kan nie met werkprogramme deel nie"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Kan nie met persoonlike programme deel nie"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Jou IT-admin het deling tussen persoonlike en werkprofiele geblokkeer"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Kan nie toegang tot werkprogramme kry nie"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Jou IT-admin laat jou nie toe om persoonlike inhoud in werkprogramme te bekyk nie"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Kan nie toegang tot persoonlike programme kry nie"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Jou IT-admin laat jou nie toe om werkinhoud in persoonlike programme te bekyk nie"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Skakel werkprofiel aan om inhoud te deel"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Skakel werkprofiel aan om inhoud te bekyk"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Geen programme beskikbaar nie"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Skakel aan"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Neem oudio in telefonie-oproepe op of speel dit"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Laat hierdie program, indien dit as die verstekbellerprogram aangewys is, toe om oudio in telefonie-oproepe op te neem of te speel."</string>
</resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index f49e2ef..080b707 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"የእርስዎ ድርጅት ይህን መሣሪያ ያስተዳድራል፣ እና የአውታረ መረብ ትራፊክን ሊከታተል ይችላል። ዝርዝሮችን ለማግኘት መታ ያድርጉ።"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"የአካባቢ ቅንብሮች በአስተዳዳሪዎ ተቀይረዋል"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"የአካባቢ ቅንብሮችዎን ለመመልከት መታ ያድርጉ።"</string>
+ <string name="country_detector" msgid="7023275114706088854">"የአገር ማወቂያ"</string>
+ <string name="location_service" msgid="2439187616018455546">"የአካባቢ አገልግሎት"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS አገልግሎት"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"የዳሳሽ ማሳወቂያ አገልግሎት"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"የውጋገን አገልግሎት"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"የእርስዎ መሣሪያ ይደመሰሳል"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"የአስተዳዳሪ መተግበሪያ ስራ ላይ ሊውል አይችልም። የእርስዎን መሣሪያ አሁን ይደመሰሳል።\n\nጥያቄዎች ካለዎት የድርጅትዎን አስተዳዳሪ ያነጋግሩ።"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ማተም በ<xliff:g id="OWNER_APP">%s</xliff:g> ተሰናክሏል።"</string>
@@ -245,6 +250,8 @@
<item quantity="one">በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገጽ ዕይታን በማንሳት ላይ።</item>
<item quantity="other">በ<xliff:g id="NUMBER_1">%d</xliff:g> ሰከንዶች ውስጥ ለሳንካ ሪፖርት ቅጽበታዊ ገጽ ዕይታን በማንሳት ላይ።</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ቅጽበታዊ ገጽ እይታ ከሳንካ ሪፖርት ጋር ተነስቷል"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ቅጽበታዊ ገጽ እይታን ከሳንካ ሪፖርት ጋር ማንሳት አልተሳካም"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"የፀጥታ ሁነታ"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ድምፅ ጠፍቷል"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ድምፅ በርቷል"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ተጨማሪ ሥፍራ አቅራቢ ትዕዛዞችን ድረስ።"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"መተግበሪያው ተጨማሪ የአካባቢ አቅራቢ ትእዛዞችን እንዲደርስ ይፈቅድለታል። ይሄ መተግበሪያው በጂፒኤስ ወይም ሌላ የአካባቢ ምንጮች ስራ ላይ ጣልቃ እንዲገባ ሊፈቅድለት ይችላል።"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"መዳረሻ ከፊት ለፊት ብቻ ትክክለኛ ነው"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ይህ መተግበሪያ ከፊት ላይ ሆኖ ሲበራ ብቻ ትክክለኛውን አካባቢዎ ማግኘት ይችላል። መተግበሪያው የአካባቢ አገልግሎቶች መጠቀም እንዲችል ሊበሩ እና በእርስዎ መሣሪያ ላይ ሊገኙ የሚችሉ መሆን አለባቸው።"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ይህ መተግበሪያ ስራ ላይ ሳለ ከአካባቢ አገልግሎቶች ትክክለኛ አካባቢዎን ማግኘት ይችላል። መተግበሪያው አካባቢን ማግኘት እንዲችል የመሣሪያዎ የአካባቢ አገልግሎቶች መብራት አለበት። ይህ የባትሪ ፍጆታን ሊጨምር ይችላል።"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ከፊት ለፊት ብቻ ግምታዊ አካባቢን ድረስ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ይህ መተግበሪያ ግምታዊ አካባቢዎን ማግኘት የሚችለው ከፊት ሲሆን ብቻ ነው። መተግበሪያው የአካባቢ አገልግሎቶች መጠቀም እንዲችል ሊበሩ እና በእርስዎ መሣሪያ ላይ ሊገኙ የሚችሉ መሆን አለባቸው።"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ይህ መተግበሪያ ስራ ላይ ሳለ ከአካባቢ አገልግሎቶች ግምታዊ አካባቢዎን ማግኘት ይችላል። መተግበሪያው አካባቢን ማግኘት እንዲችል የመሣሪያዎ የአካባቢ አገልግሎቶች መብራት አለበት።"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"አካባቢን በበስተጀርባ ድረስ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ይህ መተግበሪያ ከፊት የአካባቢ መዳረሻ በተጨማሪም ከበስተጀርባ እያሄደ ሳለ አካባቢን መድረስ ይችላል።"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ይህ መተግበሪያ በማንኛውም ጊዜ አካባቢን መድረስ ይችላል፣ መተግበሪያው ስራ ላይ ባይውልም እንኳ።"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"የድምፅ ቅንብሮችን ለውጥ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"መተግበሪያው አንደ የድምጽ መጠን እና ለውጽአት የትኛውን የድምጽ ማጉያ ጥቅም ላይ እንደዋለ የመሳሰሉ ሁለንተናዊ የድምጽ ቅንብሮችን እንዲያስተካክል ይፈቅድለታል።"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ኦዲዮ ይቅዱ"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ይህ መተግበሪያ በማናቸውም ጊዜ ካሜራውን በመጠቀም ፎቶ ሊያነሳ እና ቪዲዮዎችን ሊቀርጽ ይችላል።"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ሥዕሎችን ለማንሣት እና ቪዲዮዎችን ለመቅረጽ እንዲችሉ ወደ ሥርዓት ካሜራዎች ለመተግበሪያ ወይም ለአገልግሎት መዳረሻ ይፍቀዱ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ይህ ልዩ ፈቃድ ያለው | የሥርዓት መተግበሪያ በማናቸውም ጊዜ የሥርዓት ካሜራን በመጠቀም ሥዕሎችን ማንሣት እና ቪዲዮ መቅረጽ ይችላል። የ android.ፈቃድን ይጠይቃል። ካሜራ ፍቃድ በመተግበሪያውም ጭምር መያዝ ይኖርበታል"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"አንድ መተግበሪያ ወይም አገልግሎት እየተከፈቱ ወይም እየተዘጉ ስላሉ የካሜራ መሣሪያዎች መልሶ ጥሪዎችን እንዲቀበል ይፍቀዱ።"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"ማንኛውም የካሜራ መሣሪያ እየተከፈተ (በምን የመተግበሪያ ጥቅል) ወይም እየተዘጋ ሲሆን ይህ የፊርማ መተግበሪያ መልሶ ጥሪዎችን መቀበል ይችላል።"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ነዛሪ ተቆጣጠር"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ነዛሪውን ለመቆጣጠር ለመተግበሪያው ይፈቅዳሉ።"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"መተግበሪያው የንዝረት ሁኔታውን እንዲደርስ ያስችለዋል።"</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"መተግበሪያው የጥሪ ተሞክሮን እንዲያሻሽል ጥሪዎቹን በስርዓቱ በኩል እንዲያዞር ያስችለዋል።"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"በሥርዓቱ በኩል ጥሪዎችን ይመልከቱ እና ይቆጣጠሩ።"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"መተግበሪያው በመሣሪያው ላይ በመካሄድ ላይ ያሉ ጥሪዎችን እንዲመለከት እና እንዲቆጣጠር ይፈቅድለታል። ይህ ለጥሪዎች እንደ የጥሪ ቁጥሮች እና የጥሪዎች ሁኔታ የመሰለ መረጃን ያካትታል።"</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"ከኦዲዮ ቅጂ ገደቦች ያስወጡት"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"ኦዲዮን ለመቅዳት መተግበሪያውን ከገደቦች ያስወጡት።"</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"በሌላ መተግበሪያ የተጀመረ ጥሪን መቀጠል"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"መተግበሪያው በሌላ መተግበሪያ ውስጥ የተጀመረ ጥሪ እንዲቀጥል ያስችለዋል።"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ስልክ ቁጥሮች ያንብቡ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"መተግበሪያው የመሣሪያውን የስልክ ቁጥሮች እንዲደርስባቸው ይፈቅድለታል።"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"የመኪና ማያ ገጽ እንደበራ አቆይ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ጡባዊ ከማንቀላፋት ተከላከል"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"የእርስዎ Android TV መሣሪያ እንዳይተኛ ይከላከሉ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ስልክ ከማንቀላፋት ተከላከል"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"መተግበሪያው የመኪናው ማያ ገጽ እንደበራ እንዲያቆየው ያስችለዋል።"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ጡባዊውን ከመተኛት መከልከል ለመተግበሪያው ይፈቅዳሉ።"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"የእርስዎን Android TV ከመተኛት እንዲከላከል ለመተግበሪያው ይፈቅድለታል።"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ስልኩን ከመተኛት መከልከል ለመተግበሪያው ይፈቅዳሉ።"</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"እንደገና ይሞክሩ።"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ምንም የጣት አሻራዎች አልተመዘገቡም።"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ይህ መሣሪያ የጣት አሻራ ዳሳሽ የለውም።"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ዳሳሽ ለጊዜው ተሰናክሏል።"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ጣት <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ፊትን ማረጋገጥ አይቻልም። እንደገና ይሞክሩ።"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"በመልክ መክፈትን አላቀናበሩም።"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"በመልክ መክፈት መስጫ በዚህ መሣሪያ ላይ አይደገፍም።"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ዳሳሽ ለጊዜው ተሰናክሏል።"</string>
<string name="face_name_template" msgid="3877037340223318119">"ፊት <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"የተንቀሳቃሽ ስልክ አውታረ መረብ የበይነመረብ መዳረሻ የለውም"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"አውታረ መረብ የበይነመረብ መዳረሻ የለውም"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"የግል ዲኤንኤስ አገልጋይ ሊደረስበት አይችልም"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ተገናኝቷል"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> የተገደበ ግንኙነት አለው"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ለማንኛውም ለማገናኘት መታ ያድርጉ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"ወደ <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ተቀይሯል"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB አድስ ተያይዟል"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"የዩኤስቢ ማረሚያን ለማጥፋት መታ ያድርጉ"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ማረሚያ ላለማንቃት ምረጥ።"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ገመድ-አልባ ማረም ተገናኝቷል"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ገመድ-አልባ ማረምን ለማጥፋት ይምረጡ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ገመድ-አልባ ማረምን ለማሰናከል ይምረጡ።"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"የሙከራ ጥቅል ሁነታ ነቅቷል"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"የመሞከሪያ ጥቅል ሁነታን ለማሰናከል የፋብሪካ ዳግም ቅንብርን ይሞክሩ።"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ተከታታይ ኮንሶል ነቅቷል"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"ዳራው ከ<xliff:g id="PACKAGENAME">%1$s</xliff:g> የጀመረው የፊት አገልግሎት ወደፊት በሚኖሩት R ግንቦች ላይ ጥቅም ላይ እየዋለ ፈቃድ አይኖረውም። እባክዎ go/r-bg-fgs-restriction እና ፋይል ሳንካ ሪፖርትን ይመልከቱ።"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ድምጹ ከሚመከረው መጠን በላይ ከፍ ይበል?\n\nበከፍተኛ ድምጽ ለረጅም ጊዜ ማዳመጥ ጆሮዎን ሊጎዳው ይችላል።"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"የተደራሽነት አቋራጭ ጥቅም ላይ ይዋል?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"አቋራጩ ሲበራ ሁለቱንም የድምጽ አዝራሮች ለ3 ሰከንዶች ተጭኖ መቆየት የተደራሽነት ባህሪን ያስጀምረዋል።"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ሙሉ የመሣሪያዎ ቁጥጥር እንዲኖረው ይፈቀድለት?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>ን ካበሩት መሳሪያዎ የውሂብ ምስጠራን ለማላቅ የማያ ገጽ መቆለፊያዎን አይጠቀምም።"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ሙሉ ቁጥጥር ከተደራሽነት ፍላጎቶች ጋር እርስዎን ለሚያግዝዎት መተግበሪያዎች ተገቢ ነው ሆኖም ግን ለአብዛኛዎቹ መተግበሪያዎች አይሆንም።"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ማያ ገጽን ይመልከቱ እና ይቆጣጠሩ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"በማያ ገጹ ላይ ሁሉንም ይዘት ሊያነብ እና በሌሎች መተግበሪያዎች ላይ ይዘትን ሊያሳይ ይችላል።"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ይመልከቱ እና እርምጃዎችን ይውሰዱ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ከመተግበሪያ ጋር ወይም የሃርድዌር ዳሳሽ ጋር እርስዎ ያልዎትን መስተጋብሮች ዱካ መከታተል እና በእርስዎ ምትክ ከመተግበሪያዎች ጋር መስተጋብር መፈጸም ይችላል።"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ፍቀድ"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ከልክል"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"አንድ ባህሪን መጠቀም ለመጀመር መታ ያድርጉት፦"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"በተደራሽነት አዝራር የሚጠቀሙባቸው መተግበሪያዎች ይምረጡ"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"በድምፅ ቁልፍ አቋራጭ የሚጠቀሙባቸው መተግበሪያዎች ይምረጡ"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ጠፍቷል"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"አቋራጮችን አርትዕ ያድርጉ"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ይቅር"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ተከናውኗል"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"አቋራጩን አጥፋ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"አቋራጭ ይጠቀሙ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ተቃራኒ ቀለም"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ያልተመደቡ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"የእነዚህን ማሳወቂያዎች አስፈላጊነት አዘጋጅተዋል።"</string>
<string name="importance_from_person" msgid="4235804979664465383">"ይሄ በሚሳተፉ ሰዎች ምክንያት አስፈላጊ ነው።"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ብጁ የመተግበሪያ ማሳወቂያ"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> በ<xliff:g id="ACCOUNT">%2$s</xliff:g> አዲስ ተጠቃሚ እንዲፈጥር ይፈቀድለት (ይህ መለያ ያለው ተጠቃሚ አስቀድሞ አለ)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> አዲስ ተጠቃሚ ከ <xliff:g id="ACCOUNT">%2$s</xliff:g> ጋር መፍጠር እንዲችል ይፍቀዱ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ቋንቋ ያክሉ"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"የተደራሽነት ምናሌ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"የ<xliff:g id="APP_NAME">%1$s</xliff:g> የሥዕል ገላጭ ጽሑፍ አሞሌ።"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ወደ የRESTRICTED ባልዲ ተከትቷል"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"የግል"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ሥራ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"የግል እይታ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"የስራ እይታ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"በሥራ መተግበሪያዎች ማጋራት አይቻልም"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"በግል መተግበሪያዎች ማጋራት አይቻልም"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"የእርስዎ አይቲ አስተዳዳሪ በግል እና በሥራ መገለጫዎች መካከል ማጋራትን አግደዋል"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"የሥራ መተግበሪያዎችን መድረስ አልተቻለም"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"የእርስዎ የአይቲ አስተዳዳሪ የግል ይዘትን በስራ መተግበሪያዎች ውስጥ እንዲመለከቱ አልፈቀዱልዎትም"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"የግል መተግበሪያዎችን መድረስ አይቻልም"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"የእርስዎ የአይቲ አስተዳዳሪ የሥራ ይዘትን በግል መተግበሪያዎች ውስጥ እንዲመለከቱ አልፈቀዱልዎትም"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ይዘትን ለማጋራት የስራ መገለጫን ያብሩ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ይዘትን ለመመልከት የስራ መገለጫን ያብሩ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ምንም መተግበሪያዎች አይገኙም"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"አብራ"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"በስልክ ጥሪዎች ላይ ኦዲዮን መቅዳት ወይም ማጫወት"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ይህ መተግበሪያ እንደ ነባሪ የመደወያ መተግበሪያ ሲመደብ በስልክ ጥሪዎች ላይ ኦዲዮን እንዲቀዳ ወይም እንዲያጫውት ያስችለዋል።"</string>
</resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 93f5dc1..478e183 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -123,12 +123,12 @@
<string name="roamingText8" msgid="7774800704373721973">"التجوال - شريك متميز"</string>
<string name="roamingText9" msgid="1933460020190244004">"تجوال - وظائف الخدمة الكاملة"</string>
<string name="roamingText10" msgid="7434767033595769499">"تجوال - وظائف الخدمة الجزئية"</string>
- <string name="roamingText11" msgid="5245687407203281407">"إعلان بانر للتجوال قيد التشغيل"</string>
+ <string name="roamingText11" msgid="5245687407203281407">"إعلان بانر للتجوال قيد التفعيل"</string>
<string name="roamingText12" msgid="673537506362152640">"إعلان بانر للتجوال متوقف"</string>
<string name="roamingTextSearching" msgid="5323235489657753486">"البحث عن خدمة"</string>
<string name="wfcRegErrorTitle" msgid="3193072971584858020">"تعذّر إعداد الاتصال عبر Wi‑Fi."</string>
<string-array name="wfcOperatorErrorAlertMessages">
- <item msgid="468830943567116703">"لإجراء مكالمات وإرسال رسائل عبر Wi-Fi، اطلب من مشغّل شبكة الجوّال أولاً إعداد هذه الخدمة، ثم شغّل الاتصال عبر Wi-Fi مرة أخرى من خلال الإعدادات. (رمز الخطأ: <xliff:g id="CODE">%1$s</xliff:g>)"</item>
+ <item msgid="468830943567116703">"لإجراء مكالمات وإرسال رسائل عبر Wi-Fi، اطلب من مفعِّل شبكة الجوّال أولاً إعداد هذه الخدمة، ثم فعِّل الاتصال عبر Wi-Fi مرة أخرى من خلال الإعدادات. (رمز الخطأ: <xliff:g id="CODE">%1$s</xliff:g>)"</item>
</string-array>
<string-array name="wfcOperatorErrorNotificationMessages">
<item msgid="4795145070505729156">"حدثت مشكلة أثناء تسجيل الاتصال عبر Wi‑Fi باستخدام مشغِّل شبكة الجوّال: <xliff:g id="CODE">%1$s</xliff:g>"</item>
@@ -199,10 +199,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"تنازل المشرف عن الجهاز للاستخدام الشخصي"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"تتم إدارة الجهاز"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"تدير مؤسستك هذا الجهاز ويمكنها مراقبة حركة بيانات الشبكة. يمكنك النقر للحصول على تفاصيل."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"غيّرَ مشرفك إعدادات الموقع الجغرافي"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"انقر لعرض إعدادات الموقع الجغرافي."</string>
+ <string name="country_detector" msgid="7023275114706088854">"أداة التعرّف على البلدان"</string>
+ <string name="location_service" msgid="2439187616018455546">"خدمات الموقع الجغرافي"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"خدمة GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"خدمة إشعارات جهاز الاستشعار"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"خدمة الغسق"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"سيتم محو بيانات جهازك."</string>
<string name="factory_reset_message" msgid="2657049595153992213">"تعذّر استخدام تطبيق المشرف. سيتم محو بيانات جهازك الآن.\n\nإذا كانت لديك أسئلة، اتصل بمشرف مؤسستك."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"تم إيقاف الطباعة بواسطة <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -213,14 +216,14 @@
<string name="power_dialog" product="tv" msgid="7792839006640933763">"خيارات Android TV"</string>
<string name="power_dialog" product="default" msgid="1107775420270203046">"خيارات الهاتف"</string>
<string name="silent_mode" msgid="8796112363642579333">"وضع صامت"</string>
- <string name="turn_on_radio" msgid="2961717788170634233">"تشغيل اللاسلكي"</string>
+ <string name="turn_on_radio" msgid="2961717788170634233">"تفعيل اللاسلكي"</string>
<string name="turn_off_radio" msgid="7222573978109933360">"إيقاف تفعيل الشبكة اللاسلكية"</string>
<string name="screen_lock" msgid="2072642720826409809">"قفل الشاشة"</string>
<string name="power_off" msgid="4111692782492232778">"إيقاف التشغيل"</string>
<string name="silent_mode_silent" msgid="5079789070221150912">"إيقاف الرنين"</string>
<string name="silent_mode_vibrate" msgid="8821830448369552678">"اهتزاز الرنين"</string>
<string name="silent_mode_ring" msgid="6039011004781526678">"تشغيل الرنين"</string>
- <string name="reboot_to_update_title" msgid="2125818841916373708">"إعادة تحميل نظام Android"</string>
+ <string name="reboot_to_update_title" msgid="2125818841916373708">"تحديث نظام Android"</string>
<string name="reboot_to_update_prepare" msgid="6978842143587422365">"جارٍ الإعداد للتحديث…"</string>
<string name="reboot_to_update_package" msgid="4644104795527534811">"جارٍ معالجة حزمة التحديث…"</string>
<string name="reboot_to_update_reboot" msgid="4474726009984452312">"جارٍ إعادة التشغيل…"</string>
@@ -259,11 +262,13 @@
<item quantity="other">سيتم التقاط لقطة شاشة لتقرير الخطأ خلال <xliff:g id="NUMBER_1">%d</xliff:g> ثانية.</item>
<item quantity="one">سيتم التقاط لقطة شاشة لتقرير الخطأ خلال <xliff:g id="NUMBER_0">%d</xliff:g> ثانية.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"تم التقاط لقطة شاشة من خلال تقرير خطأ."</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"تعذّر التقاط لقطة شاشة من خلال تقرير خطأ."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"وضع صامت"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"الصوت متوقف"</string>
- <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"الصوت قيد التشغيل"</string>
+ <string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"الصوت قيد التفعيل"</string>
<string name="global_actions_toggle_airplane_mode" msgid="6911684460146916206">"وضع الطائرة"</string>
- <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطائرة قيد التشغيل"</string>
+ <string name="global_actions_airplane_mode_on_status" msgid="5508025516695361936">"وضع الطائرة قيد التفعيل"</string>
<string name="global_actions_airplane_mode_off_status" msgid="8522219771500505475">"وضع الطائرة متوقف"</string>
<string name="global_action_settings" msgid="4671878836947494217">"الإعدادات"</string>
<string name="global_action_assist" msgid="2517047220311505805">"مساعدة"</string>
@@ -321,7 +326,7 @@
<string name="permgroupdesc_sensors" msgid="2610631290633747752">"الوصول إلى بيانات المستشعر حول علاماتك الحيوية"</string>
<string name="capability_title_canRetrieveWindowContent" msgid="7554282892101587296">"استرداد محتوى النافذة"</string>
<string name="capability_desc_canRetrieveWindowContent" msgid="6195610527625237661">"فحص محتوى نافذة يتم التفاعل معها"</string>
- <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"تشغيل الاستكشاف باللمس"</string>
+ <string name="capability_title_canRequestTouchExploration" msgid="327598364696316213">"تفعيل الاستكشاف باللمس"</string>
<string name="capability_desc_canRequestTouchExploration" msgid="4394677060796752976">"سيتم قول العناصر التي تم النقر عليها بصوت عال ويمكن استكشاف الشاشة باستخدام الإيماءات."</string>
<string name="capability_title_canRequestFilterKeyEvents" msgid="2772371671541753254">"ملاحظة النص الذي تكتبه"</string>
<string name="capability_desc_canRequestFilterKeyEvents" msgid="2381315802405773092">"يتضمن بيانات شخصية مثل أرقام بطاقات الائتمان وكلمات المرور."</string>
@@ -372,7 +377,7 @@
<string name="permlab_reorderTasks" msgid="7598562301992923804">"إعادة ترتيب التطبيقات قيد التشغيل"</string>
<string name="permdesc_reorderTasks" msgid="8796089937352344183">"للسماح للتطبيق بنقل المهام إلى المقدمة والخلفية. وقد يجري التطبيق ذلك بدون إذنك."</string>
<string name="permlab_enableCarMode" msgid="893019409519325311">"تفعيل وضع السيارة"</string>
- <string name="permdesc_enableCarMode" msgid="56419168820473508">"للسماح للتطبيق بتمكين وضع السيارة."</string>
+ <string name="permdesc_enableCarMode" msgid="56419168820473508">"للسماح للتطبيق بتفعيل وضع السيارة."</string>
<string name="permlab_killBackgroundProcesses" msgid="6559320515561928348">"إغلاق التطبيقات الأخرى"</string>
<string name="permdesc_killBackgroundProcesses" msgid="2357013583055434685">"للسماح للتطبيق بإنهاء عمليات التطبيقات الأخرى في الخلفية. وقد يؤدي هذا إلى توقف تطبيقات أخرى عن العمل."</string>
<string name="permlab_systemAlertWindow" msgid="5757218350944719065">"يمكن لهذا التطبيق الظهور في مقدمة التطبيقات الأخرى"</string>
@@ -424,13 +429,13 @@
<string name="permdesc_writeCalendar" product="tv" msgid="951246749004952706">"يستطيع هذا التطبيق إضافة أحداث تقويم إلى جهاز Android TV أو إزالتها أو تغييرها، ويمكنه أيضًا إرسال رسائل تبدو واردة من مالكي التقويم، أو تغيير الأحداث بدون إبلاغ مالكيها."</string>
<string name="permdesc_writeCalendar" product="default" msgid="5416380074475634233">"يمكن لهذا التطبيق إضافة أحداث تقويم أو إزالتها أو تغييرها على الهاتف. كما يمكنه إرسال رسائل يبدو أنها واردة من مالكي التقويم، ويمكنه كذلك تغيير الأحداث بدون إشعار مالكيها."</string>
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"الدخول إلى المزيد من أوامر موفر الموقع"</string>
- <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"للسماح للتطبيق بالدخول إلى أوامر إضافية لموفر الموقع. قد يتيح هذا للتطبيق التداخل مع تشغيل تقنية نظام تحديد المواقع العالمي (GPS) أو مصادر الموقع الأخرى."</string>
+ <string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"للسماح للتطبيق بالدخول إلى أوامر إضافية لموفر الموقع. قد يتيح هذا للتطبيق التداخل مع تفعيل تقنية نظام تحديد المواقع العالمي (GPS) أو مصادر الموقع الأخرى."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"الوصول إلى الموقع الجغرافي الدقيق في الواجهة الأمامية فقط"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي بالضبط عندما يعمل في الخلفية. ويجب تفعيل خدمات الموقع الجغرافي وأن تكون متاحة على جهازك حتى يتمكن التطبيق من استخدامها. وقد يؤدي هذا إلى زيادة استهلاك طاقة البطارية."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"يمكن لهذا التطبيق معرفة موقعك الجغرافي الدقيق من خدمات الموقع الجغرافي عندما يكون التطبيق قيد التشغيل. يجب تفعيل خدمات الموقع الجغرافي على جهازك كي يتمكّن التطبيق من معرفة الموقع الجغرافي. قد يؤدي هذا إلى زيادة استهلاك شحن البطارية."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"الوصول إلى الموقع الجغرافي التقريبي في الواجهة الأمامية فقط"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي التقريبي إذا كان يعمل في الخلفية. ويجب تفعيل خدمات الموقع الجغرافي وأن تكون متاحة على جهازك حتى يتمكن التطبيق من استخدامها."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"لا يمكن لهذا التطبيق معرفة موقعك الجغرافي التقريبي من خدمات الموقع الجغرافي عندما يكون التطبيق قيد التشغيل. يجب تفعيل خدمات الموقع الجغرافي على جهازك كي يتمكّن التطبيق من معرفة الموقع الجغرافي."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"الوصول إلى الموقع الجغرافي في الخلفية"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"يمكن لهذا التطبيق الوصول إلى الموقع الجغرافي أثناء عمله في الخلفية، بالإضافة إلى إمكانية وصوله للموقع الجغرافي أثناء عمله في الواجهة الأمامية."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"يمكن لهذا التطبيق الوصول إلى الموقع الجغرافي في أي وقت، حتى أثناء عدم استخدام التطبيق."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"تغيير إعداداتك الصوتية"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"للسماح للتطبيق بتعديل إعدادات الصوت العامة مثل مستوى الصوت وأي السماعات يتم استخدامها للاستماع."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"تسجيل الصوت"</string>
@@ -443,10 +448,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"يمكن لهذا التطبيق التقاط صور وتسجيل فيديوهات باستخدام الكاميرا في أي وقت."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"السماح لتطبيق أو خدمة بالوصول إلى كاميرات النظام لالتقاط صور وتسجيل فيديوهات"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"إذا حصل تطبيق النظام على هذا الإذن، سيمكن لهذا التطبيق التقاط صور وتسجيل فيديوهات باستخدام كاميرا النظام في أي وقت. ويجب أن يحصل التطبيق أيضًا على الإذن android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"يسمح الإذن لتطبيق أو خدمة بتلقّي استدعاءات عما إذا كانت أجهزة الكاميرات مفتوحة أو مغلقة."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"يمكن أن يتلقّى تطبيق التوقيع هذا استدعاءات عندما يكون جهاز أي كاميرا مفتوحًا (بحزمة تطبيق) أو مغلقًا."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"التحكم في الاهتزاز"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"للسماح للتطبيق بالتحكم في الهزّاز."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"يسمح هذا الإذن للتطبيق بالوصول إلى حالة الهزّاز."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"اتصال مباشر بأرقام الهواتف"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"للسماح للتطبيق بطلب أرقام هاتفية بدون تدخل منك. وقد يؤدي ذلك إلى تحمل رسوم غير متوقعة أو إجراء مكالمات غير متوقعة. ومن الجدير بالذكر أن ذلك لا يتيح للتطبيق الاتصال بأرقام الطوارئ. وقد تؤدي التطبيقات الضارة إلى تحملك تكاليف مالية من خلال إجراء مكالمات بدون موافقة منك."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"الوصول إلى خدمة الاتصال عبر الرسائل الفورية"</string>
@@ -457,13 +463,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"يسمح للتطبيق بتوجيه المكالمات من خلال النظام لتحسين تجربة الاتصال."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"رؤية المكالمات والتحكّم فيها من خلال النظام"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"يستطيع التطبيق رؤية المكالمات الجارية على الجهاز والتحكّم فيها. ويشمل ذلك معلومات مثل الأرقام وحالة المكالمات."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"مواصلة مكالمة من تطبيق آخر"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"السماح للتطبيق بمواصلة مكالمة بدأت في تطبيق آخر."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"قراءة أرقام الهواتف"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"للسماح للتطبيق بالوصول إلى أرقام الهواتف على هذا الجهاز."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"الاحتفاظ بشاشة السيارة مفعَّلة"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"منع الجهاز اللوحي من الدخول في وضع السكون"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"منع جهاز Android TV من الانتقال إلى وضع السكون"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"منع الهاتف من الدخول في وضع السكون"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"يسمح هذا الإذن للتطبيق بالاحتفاظ بشاشة السيارة مفعَّلة."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"للسماح للتطبيق بمنع الجهاز اللوحي من الانتقال إلى وضع السكون."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"للسماح للتطبيق بمنع جهاز Android TV من الانتقال إلى وضع السكون."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"للسماح للتطبيق بمنع الهاتف من الانتقال إلى وضع السكون."</string>
@@ -561,8 +573,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"أعد المحاولة."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ليست هناك بصمات إصبع مسجَّلة."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"لا يحتوي هذا الجهاز على مستشعِر بصمات إصبع."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"تم إيقاف جهاز الاستشعار مؤقتًا."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"الإصبع <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -606,15 +617,14 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"يتعذّر التحقق من الوجه. حاول مرة أخرى."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"لم يسبق لك إعداد \"فتح القفل بالوجه\"."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"\"فتح القفل بالوجه\" غير متوفر على هذا الجهاز."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"تم إيقاف جهاز الاستشعار مؤقتًا."</string>
<string name="face_name_template" msgid="3877037340223318119">"الوجه <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
<string name="face_icon_content_description" msgid="465030547475916280">"رمز الوجه"</string>
<string name="permlab_readSyncSettings" msgid="6250532864893156277">"قراءة إعدادات المزامنة"</string>
<string name="permdesc_readSyncSettings" msgid="1325658466358779298">"للسماح للتطبيق بقراءة الإعدادات المتزامنة لحساب ما. على سبيل المثال، يمكن أن يؤدي هذا إلى تحديد ما إذا تمت مزامنة تطبيق \"الأشخاص\" مع حساب ما."</string>
- <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"التبديل بين تشغيل المزامنة وإيقافها"</string>
+ <string name="permlab_writeSyncSettings" msgid="6583154300780427399">"التبديل بين تفعيل المزامنة وإيقافها"</string>
<string name="permdesc_writeSyncSettings" msgid="6029151549667182687">"للسماح للتطبيق بتعديل إعدادات المزامنة لحساب ما. على سبيل المثال، يمكن استخدام ذلك لتفعيل مزامنة تطبيق \"الأشخاص\" مع حساب ما."</string>
<string name="permlab_readSyncStats" msgid="3747407238320105332">"قراءة إحصاءات المزامنة"</string>
<string name="permdesc_readSyncStats" msgid="3867809926567379434">"للسماح للتطبيق بقراءة إحصائيات المزامنة لحساب ما، بما في ذلك سجل الأحداث المتزامنة ومقدار البيانات التي تمت مزامنتها."</string>
@@ -695,8 +705,8 @@
<string name="policydesc_setGlobalProxy" msgid="7149665222705519604">"لضبط الخادم الوكيل العام في الجهاز على الاستخدام أثناء تفعيل السياسة. ولن يمكن لأحد سوى مالك الجهاز ضبط الخادم الوكيل العام."</string>
<string name="policylab_expirePassword" msgid="6015404400532459169">"تعيين مدة انتهاء صلاحية كلمة مرور قفل الشاشة"</string>
<string name="policydesc_expirePassword" msgid="9136524319325960675">"لتغيير عدد مرات تغيير كلمة المرور ورقم التعريف الشخصي والنمط في قفل الشاشة."</string>
- <string name="policylab_encryptedStorage" msgid="9012936958126670110">"تعيين تشفير التخزين"</string>
- <string name="policydesc_encryptedStorage" msgid="1102516950740375617">"يمكنك طلب تشفير بيانات التطبيق المخزنة."</string>
+ <string name="policylab_encryptedStorage" msgid="9012936958126670110">"تعيين ترميز التخزين"</string>
+ <string name="policydesc_encryptedStorage" msgid="1102516950740375617">"يمكنك طلب ترميز بيانات التطبيق المخزنة."</string>
<string name="policylab_disableCamera" msgid="5749486347810162018">"إيقاف الكاميرات"</string>
<string name="policydesc_disableCamera" msgid="3204405908799676104">"يمكنك منع استخدام جميع كاميرات الجهاز."</string>
<string name="policylab_disableKeyguardFeatures" msgid="5071855750149949741">"إيقاف بعض ميزات قفل الشاشة"</string>
@@ -850,7 +860,7 @@
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"إيقاف مؤقت"</string>
<string name="lockscreen_transport_play_description" msgid="106868788691652733">"تشغيل"</string>
<string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"إيقاف"</string>
- <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"إرجاع"</string>
+ <string name="lockscreen_transport_rew_description" msgid="7680106856221622779">"ترجيع"</string>
<string name="lockscreen_transport_ffw_description" msgid="4763794746640196772">"تقديم سريع"</string>
<string name="emergency_calls_only" msgid="3057351206678279851">"مكالمات الطوارئ فقط"</string>
<string name="lockscreen_network_locked_message" msgid="2814046965899249635">"الشبكة مؤمّنة"</string>
@@ -864,12 +874,12 @@
<string name="lockscreen_failed_attempts_almost_glogin" product="tablet" msgid="3069635524964070596">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الجهاز اللوحي باستخدام معلومات تسجيل الدخول إلى Google.\n\n أعد المحاولة خلال <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="tv" msgid="6399092175942158529">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء<xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة أخرى غير ناجحة، ستُطالب بإلغاء قفل جهاز Android TV باستخدام معلومات تسجيل الدخول إلى Google.\n\n يُرجى إعادة المحاولة بعد <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
<string name="lockscreen_failed_attempts_almost_glogin" product="default" msgid="5691623136957148335">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الهاتف باستخدام معلومات تسجيل الدخول إلى Google.\n\n أعد المحاولة خلال <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"لقد حاولت فتح قفل الجهاز اللوحي <xliff:g id="NUMBER_0">%1$d</xliff:g> من المرات. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة، ستتم إعادة تعيين الجهاز اللوحي إلى الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="tablet" msgid="7914445759242151426">"لقد حاولت فتح قفل الجهاز اللوحي <xliff:g id="NUMBER_0">%1$d</xliff:g> من المرات. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة، ستتم إعادة ضبط الجهاز اللوحي إلى الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
<string name="lockscreen_failed_attempts_almost_at_wipe" product="tv" msgid="4275591249631864248">"لقد حاولت فتح قفل جهاز Android TV بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة أخرى غير ناجحة، ستتم إعادة ضبط جهاز Android TV على الإعداد التلقائي للمصنع وسيتم فقدان جميع بيانات المستخدمين."</string>
- <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"لقد حاولت فتح قفل الهاتف <xliff:g id="NUMBER_0">%1$d</xliff:g> من المرات. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة، ستتم إعادة تعيين الهاتف إلى الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"لقد حاولت فتح قفل الجهاز اللوحي <xliff:g id="NUMBER">%d</xliff:g> من المرات بشكل غير صحيح. سيتم الآن إعادة تعيين الجهاز اللوحي إلى الإعدادات الأساسية."</string>
+ <string name="lockscreen_failed_attempts_almost_at_wipe" product="default" msgid="1166532464798446579">"لقد حاولت فتح قفل الهاتف <xliff:g id="NUMBER_0">%1$d</xliff:g> من المرات. بعد <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة، ستتم إعادة ضبط الهاتف إلى الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="tablet" msgid="8682445539263683414">"لقد حاولت فتح قفل الجهاز اللوحي <xliff:g id="NUMBER">%d</xliff:g> من المرات بشكل غير صحيح. سيتم الآن إعادة ضبط الجهاز اللوحي إلى الإعدادات الأساسية."</string>
<string name="lockscreen_failed_attempts_now_wiping" product="tv" msgid="2205435033340091883">"لقد حاولت فتح قفل جهاز Android TV بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. ستتم الآن إعادة ضبط جهاز Android TV على الإعداد التلقائي للمصنع."</string>
- <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"لقد حاولت فتح قفل الهاتف <xliff:g id="NUMBER">%d</xliff:g> من المرات بشكل غير صحيح. سيتم الآن إعادة تعيين الهاتف إلى الإعدادات الأساسية."</string>
+ <string name="lockscreen_failed_attempts_now_wiping" product="default" msgid="2203704707679895487">"لقد حاولت فتح قفل الهاتف <xliff:g id="NUMBER">%d</xliff:g> من المرات بشكل غير صحيح. سيتم الآن إعادة ضبط الهاتف إلى الإعدادات الأساسية."</string>
<string name="lockscreen_too_many_failed_attempts_countdown" msgid="6807200118164539589">"حاول مرة أخرى خلال <xliff:g id="NUMBER">%d</xliff:g> ثانية."</string>
<string name="lockscreen_forgot_pattern_button_text" msgid="8362442730606839031">"هل نسيت النمط؟"</string>
<string name="lockscreen_glogin_forgot_pattern" msgid="9218940117797602518">"فتح قفل الحساب"</string>
@@ -1260,7 +1270,7 @@
<string name="anr_activity_process" msgid="3477362583767128667">"<xliff:g id="ACTIVITY">%1$s</xliff:g> لا يستجيب"</string>
<string name="anr_application_process" msgid="4978772139461676184">"<xliff:g id="APPLICATION">%1$s</xliff:g> لا يستجيب"</string>
<string name="anr_process" msgid="1664277165911816067">"العملية <xliff:g id="PROCESS">%1$s</xliff:g> لا تستجيب"</string>
- <string name="force_close" msgid="9035203496368973803">"موافق"</string>
+ <string name="force_close" msgid="9035203496368973803">"حسنًا"</string>
<string name="report" msgid="2149194372340349521">"إرسال تقرير"</string>
<string name="wait" msgid="7765985809494033348">"انتظار"</string>
<string name="webpage_unresponsive" msgid="7850879412195273433">"أصبحت الصفحة لا تستجيب.\n\nهل تريد إغلاقها؟"</string>
@@ -1274,18 +1284,18 @@
<string name="unsupported_display_size_show" msgid="980129850974919375">"العرض دائمًا"</string>
<string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"تم تصميم <xliff:g id="APP_NAME">%1$s</xliff:g> لإصدار غير متوافق من نظام تشغيل Android وقد يحدث خلل في أدائه. قد يتوفّر إصدار محدّث من التطبيق."</string>
<string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"الإظهار دائمًا"</string>
- <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"البحث عن إعادة تحميل"</string>
+ <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"البحث عن تحديث"</string>
<string name="smv_application" msgid="3775183542777792638">"انتهك التطبيق <xliff:g id="APPLICATION">%1$s</xliff:g> (العملية <xliff:g id="PROCESS">%2$s</xliff:g>) سياسة StrictMode المفروضة ذاتيًا."</string>
<string name="smv_process" msgid="1398801497130695446">"انتهكت العملية <xliff:g id="PROCESS">%1$s</xliff:g> سياسة StrictMode المفروضة ذاتيًا."</string>
- <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"جارٍ إعادة تحميل الهاتف…"</string>
- <string name="android_upgrading_title" product="tablet" msgid="4268417249079938805">"جارٍ إعادة تحميل الجهاز اللوحي…"</string>
- <string name="android_upgrading_title" product="device" msgid="6774767702998149762">"جارٍ إعادة تحميل الجهاز…"</string>
+ <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"جارٍ تحديث الهاتف…"</string>
+ <string name="android_upgrading_title" product="tablet" msgid="4268417249079938805">"جارٍ تحديث الجهاز اللوحي…"</string>
+ <string name="android_upgrading_title" product="device" msgid="6774767702998149762">"جارٍ تحديث الجهاز…"</string>
<string name="android_start_title" product="default" msgid="4036708252778757652">"جارٍ بدء تشغيل الهاتف…"</string>
<string name="android_start_title" product="automotive" msgid="7917984412828168079">"جارٍ تشغيل Android…"</string>
<string name="android_start_title" product="tablet" msgid="4429767260263190344">"جارٍ بدء تشغيل الجهاز اللوحي…"</string>
<string name="android_start_title" product="device" msgid="6967413819673299309">"جارٍ بدء تشغيل الجهاز…"</string>
<string name="android_upgrading_fstrim" msgid="3259087575528515329">"جارٍ تحسين مساحة التخزين."</string>
- <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"جارٍ إنهاء إعادة تحميل النظام…"</string>
+ <string name="android_upgrading_notification_title" product="default" msgid="3509927005342279257">"جارٍ إنهاء تحديث النظام…"</string>
<string name="app_upgrading_toast" msgid="1016267296049455585">"جارٍ ترقية <xliff:g id="APPLICATION">%1$s</xliff:g>…"</string>
<string name="android_upgrading_apk" msgid="1339564803894466737">"جارٍ تحسين التطبيق <xliff:g id="NUMBER_0">%1$d</xliff:g> من <xliff:g id="NUMBER_1">%2$d</xliff:g>."</string>
<string name="android_preparing_apk" msgid="589736917792300956">"جارٍ تحضير <xliff:g id="APPNAME">%1$s</xliff:g>."</string>
@@ -1336,7 +1346,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"شبكة الجوّال هذه غير متصلة بالإنترنت"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"الشبكة غير متصلة بالإنترنت"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"لا يمكن الوصول إلى خادم أسماء نظام نطاقات خاص"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"تمّ الاتصال."</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"إمكانية اتصال <xliff:g id="NETWORK_SSID">%1$s</xliff:g> محدودة."</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"يمكنك النقر للاتصال على أي حال."</string>
<string name="network_switch_metered" msgid="1531869544142283384">"تم التبديل إلى <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1401,6 +1410,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"تم توصيل تصحيح أخطاء الجهاز عبر USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"انقر لإيقاف تصحيح أخطاء الجهاز عبر USB."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"اختيار إيقاف تصحيح أخطاء USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"تم تفعيل ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\""</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"انقر لإيقاف ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\"."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"اختيار إيقاف ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\""</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"تم تفعيل وضع \"مفعّل الاختبار\""</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"يمكنك إجراء إعادة ضبط على الإعدادات الأصلية لإيقاف وضع \"مفعِّل اختبار\"."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"وحدة التحكّم التسلسلية مفعّلة"</string>
@@ -1511,8 +1523,8 @@
<string name="vpn_title_long" msgid="6834144390504619998">"تم تفعيل VPN بواسطة <xliff:g id="APP">%s</xliff:g>"</string>
<string name="vpn_text" msgid="2275388920267251078">"انقر لإدارة الشبكة."</string>
<string name="vpn_text_long" msgid="278540576806169831">"تم الاتصال بـ <xliff:g id="SESSION">%s</xliff:g>. انقر لإدارة الشبكة."</string>
- <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"جارٍ الاتصال بشبكة افتراضية خاصة (VPN) دائمة التشغيل..."</string>
- <string name="vpn_lockdown_connected" msgid="2853127976590658469">"تم الاتصال بشبكة افتراضية خاصة (VPN) دائمة التشغيل"</string>
+ <string name="vpn_lockdown_connecting" msgid="6096725311950342607">"جارٍ الاتصال بشبكة افتراضية خاصة (VPN) دائمة التفعيل..."</string>
+ <string name="vpn_lockdown_connected" msgid="2853127976590658469">"تم الاتصال بشبكة افتراضية خاصة (VPN) دائمة التفعيل"</string>
<string name="vpn_lockdown_disconnected" msgid="5573611651300764955">"تم قطع الاتصال بالشبكة الافتراضية الخاصة (VPN) التي يتم تشغيلها دائمًا"</string>
<string name="vpn_lockdown_error" msgid="4453048646854247947">"تعذّر الاتصال بشبكة VPN التي يتم تشغيلها دائمًا."</string>
<string name="vpn_lockdown_config" msgid="8331697329868252169">"تغيير إعدادات الشبكة أو الشبكة الافتراضية الخاصة (VPN)"</string>
@@ -1698,12 +1710,12 @@
<string name="kg_too_many_failed_pin_attempts_dialog_message" msgid="23741434207544038">"لقد كتبت رمز PIN بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
<string name="kg_too_many_failed_password_attempts_dialog_message" msgid="3328686432962224215">"لقد كتبت كلمة المرور بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
<string name="kg_too_many_failed_pattern_attempts_dialog_message" msgid="7357404233979139075">"لقد رسمت نقش فتح القفل بطريقة غير صحيحة <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. \n\nأعد المحاولة خلال <xliff:g id="NUMBER_1">%2$d</xliff:g> ثانية."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"لقد حاولت فتح قفل الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة تعيين الجهاز اللوحي على الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="tablet" msgid="3479940221343361587">"لقد حاولت فتح قفل الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة ضبط الجهاز اللوحي على الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
<string name="kg_failed_attempts_almost_at_wipe" product="tv" msgid="9064457748587850217">"لقد حاولت فتح قفل جهاز Android TV بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة أخرى غير ناجحة، ستتم إعادة ضبط جهاز Android TV على الإعداد التلقائي للمصنع وسيتم فقدان جميع بيانات المستخدمين."</string>
- <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"لقد حاولت فتح قفل الهاتف بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة تعيين الهاتف على الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
- <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"لقد حاولت فتح قفل الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة تعيين الجهاز اللوحي على الإعدادات الأساسية."</string>
+ <string name="kg_failed_attempts_almost_at_wipe" product="default" msgid="5955398963754432548">"لقد حاولت فتح قفل الهاتف بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستتم إعادة ضبط الهاتف على الإعدادات الأساسية وسيتم فقد جميع بيانات المستخدم."</string>
+ <string name="kg_failed_attempts_now_wiping" product="tablet" msgid="2299099385175083308">"لقد حاولت فتح قفل الجهاز اللوحي بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة ضبط الجهاز اللوحي على الإعدادات الأساسية."</string>
<string name="kg_failed_attempts_now_wiping" product="tv" msgid="5045460916106267585">"لقد حاولت فتح قفل جهاز Android TV بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. ستتم الآن إعادة ضبط جهاز Android TV على الإعداد التلقائي للمصنع."</string>
- <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"لقد حاولت فتح قفل الهاتف بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة تعيين الهاتف على الإعدادات الأساسية."</string>
+ <string name="kg_failed_attempts_now_wiping" product="default" msgid="5043730590446071189">"لقد حاولت فتح قفل الهاتف بشكل غير صحيح <xliff:g id="NUMBER">%d</xliff:g> مرة. سيتم الآن إعادة ضبط الهاتف على الإعدادات الأساسية."</string>
<string name="kg_failed_attempts_almost_at_login" product="tablet" msgid="7086799295109717623">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستطالَب بإلغاء تأمين الجهاز اللوحي باستخدام معلومات حساب بريد إلكتروني.\n\n أعد المحاولة خلال <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
<string name="kg_failed_attempts_almost_at_login" product="tv" msgid="4670840383567106114">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> محاولة أخرى غير ناجحة، ستُطالب بإلغاء قفل جهاز Android TV باستخدام حساب بريد إلكتروني.\n\n يُرجى إعادة المحاولة بعد <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
<string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الهاتف باستخدام حساب بريد إلكتروني لإلغاء تأمين الهاتف.\n\n أعد المحاولة خلال <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
@@ -1712,10 +1724,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"لن يتم منح إذن الوصول إلى الموقع الجغرافي أثناء الاستخدام للخدمات التي تعمل في المقدّمة من <xliff:g id="PACKAGENAME">%1$s</xliff:g> والتي تبدأ من الخلفية في إصدارات R القادمة. يُرجى مراجعة go/r-bg-fgs-restriction وتقديم تقرير خطأ."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"هل تريد رفع مستوى الصوت فوق المستوى الموصى به؟\n\nقد يضر سماع صوت عالٍ لفترات طويلة بسمعك."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"هل تريد استخدام اختصار \"سهولة الاستخدام\"؟"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"عند تفعيل الاختصار، يؤدي الضغط على زرّي التحكّم في مستوى الصوت معًا لمدة 3 ثوانٍ إلى تفعيل إحدى ميزات إمكانية الوصول."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"هل تريد السماح لخدمة <xliff:g id="SERVICE">%1$s</xliff:g> بالتحكّم الكامل في جهازك؟"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"في حال تفعيل <xliff:g id="SERVICE">%1$s</xliff:g>، لن يستخدم جهازك ميزة قفل الشاشة لتحسين ترميز البيانات."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"إنّ التحكّم الكامل ليس ملائمًا لمعظم التطبيقات، باستثناء التطبيقات المعنية بسهولة الاستخدام."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"قراءة محتوى الشاشة والتحكم به"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"يمكنها قراءة كل المحتوى على الشاشة وعرض المحتوى عبر تطبيقات أخرى."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"عرض الإجراءات وتنفيذها"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"يمكنها تتبّع تعاملاتك مع تطبيق أو جهاز استشعار والتفاعل مع التطبيقات نيابةً عنك."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"سماح"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رفض"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"انقر على ميزة لبدء استخدامها:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"اختيار التطبيقات التي يتم استخدامها مع زر أدوات تمكين الوصول"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"اختيار التطبيقات التي يتم استخدامها مع اختصار مفتاح مستوى الصوت"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"تم إيقاف <xliff:g id="SERVICE_NAME">%s</xliff:g>."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"تعديل الاختصارات"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"إلغاء"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"تم"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"إيقاف الاختصار"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استخدام الاختصار"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"عكس الألوان"</string>
@@ -1859,12 +1883,12 @@
<string name="package_installed_device_owner" msgid="7035926868974878525">"تم التثبيت بواسطة المشرف"</string>
<string name="package_updated_device_owner" msgid="7560272363805506941">"تم التحديث بواسطة المشرف"</string>
<string name="package_deleted_device_owner" msgid="2292335928930293023">"تم الحذف بواسطة المشرف"</string>
- <string name="confirm_battery_saver" msgid="5247976246208245754">"موافق"</string>
+ <string name="confirm_battery_saver" msgid="5247976246208245754">"حسنًا"</string>
<string name="battery_saver_description_with_learn_more" msgid="1817385558636532621">"لإطالة عمر البطارية، \"توفير شحن البطارية\":\n·تفعيل \"التصميم الداكن\"\n إيقاف النشاط في الخلفية أو تقييده وأيضًا بعض التأثيرات المرئية والميزات الأخرى، مثلاً \"Ok Google\"\n\n"<annotation id="url">"مزيد من المعلومات"</annotation></string>
<string name="battery_saver_description" msgid="7618492104632328184">"لإطالة عمر البطارية، \"توفير شحن البطارية\":\n·تفعيل \"التصميم الداكن\"\n إيقاف النشاط في الخلفية أو تقييده وأيضًا بعض التأثيرات المرئية والميزات الأخرى، مثلاً \"Ok Google\"."</string>
<string name="data_saver_description" msgid="4995164271550590517">"للمساعدة في خفض استخدام البيانات، تمنع ميزة \"توفير البيانات\" بعض التطبيقات من إرسال البيانات وتلقّيها في الخلفية. يمكن للتطبيق الذي تستخدمه الآن الوصول إلى البيانات، ولكن لا يمكنه تنفيذ ذلك كثيرًا. وهذا يعني أن الصور مثلاً لا تظهر حتى تنقر عليها."</string>
- <string name="data_saver_enable_title" msgid="7080620065745260137">"هل تريد تشغيل توفير البيانات؟"</string>
- <string name="data_saver_enable_button" msgid="4399405762586419726">"تشغيل"</string>
+ <string name="data_saver_enable_title" msgid="7080620065745260137">"هل تريد تفعيل توفير البيانات؟"</string>
+ <string name="data_saver_enable_button" msgid="4399405762586419726">"تفعيل"</string>
<plurals name="zen_mode_duration_minutes_summary" formatted="false" msgid="2877101784123058273">
<item quantity="zero">لمدة أقل من دقيقة (%1$d) (حتى <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
<item quantity="two">لمدة دقيقتين (%1$d) (حتى <xliff:g id="FORMATTEDTIME_1">%2$s</xliff:g>)</item>
@@ -1976,6 +2000,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"غير مصنفة"</string>
<string name="importance_from_user" msgid="2782756722448800447">"لقد عيَّنت أهمية هذه الإشعارات."</string>
<string name="importance_from_person" msgid="4235804979664465383">"هذه الرسالة مهمة نظرًا لأهمية الأشخاص المعنيين."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"إشعار تطبيق مخصّص"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"هل تسمح لتطبيق <xliff:g id="APP">%1$s</xliff:g> بإنشاء مستخدم جديد باستخدام <xliff:g id="ACCOUNT">%2$s</xliff:g> (يوجد مستخدم بهذا الحساب مسبقًا)؟"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"هل تسمح لتطبيق <xliff:g id="APP">%1$s</xliff:g> بإنشاء مستخدم جديد باستخدام <xliff:g id="ACCOUNT">%2$s</xliff:g> ؟"</string>
<string name="language_selection_title" msgid="52674936078683285">"إضافة لغة"</string>
@@ -1991,11 +2016,11 @@
<string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"استئناف تشغيل التطبيق"</string>
<string name="work_mode_off_title" msgid="5503291976647976560">"تفعيل الملف الشخصي للعمل؟"</string>
<string name="work_mode_off_message" msgid="8417484421098563803">"سيتم تفعيل تطبيقات العمل التي تستخدمها والإشعارات والبيانات وغيرها من ميزات الملف الشخصي للعمل"</string>
- <string name="work_mode_turn_on" msgid="3662561662475962285">"تشغيل"</string>
+ <string name="work_mode_turn_on" msgid="3662561662475962285">"تفعيل"</string>
<string name="app_blocked_title" msgid="7353262160455028160">"التطبيق غير متاح"</string>
<string name="app_blocked_message" msgid="542972921087873023">"تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> غير متاح الآن."</string>
<string name="deprecated_target_sdk_message" msgid="5203207875657579953">"تمّ إنشاء هذا التطبيق لإصدار قديم من Android وقد لا يعمل بشكل صحيح. جرِّب البحث عن تحديثات أو الاتصال بمطوّر البرامج."</string>
- <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"البحث عن إعادة تحميل"</string>
+ <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"البحث عن تحديث"</string>
<string name="new_sms_notification_title" msgid="6528758221319927107">"لديك رسائل جديدة"</string>
<string name="new_sms_notification_content" msgid="3197949934153460639">"فتح تطبيق الرسائل القصيرة SMS للعرض"</string>
<string name="profile_encrypted_title" msgid="9001208667521266472">"قد تكون بعض الوظائف مُقيّدة."</string>
@@ -2010,7 +2035,7 @@
<string name="app_info" msgid="6113278084877079851">"معلومات عن التطبيق"</string>
<string name="negative_duration" msgid="1938335096972945232">"−<xliff:g id="TIME">%1$s</xliff:g>"</string>
<string name="demo_starting_message" msgid="6577581216125805905">"جارٍ بدء العرض التوضيحي…"</string>
- <string name="demo_restarting_message" msgid="1160053183701746766">"جارٍ إعادة تعيين الجهاز…"</string>
+ <string name="demo_restarting_message" msgid="1160053183701746766">"جارٍ إعادة ضبط الجهاز…"</string>
<string name="suspended_widget_accessibility" msgid="6331451091851326101">"تم إيقاف <xliff:g id="LABEL">%1$s</xliff:g>"</string>
<string name="conference_call" msgid="5731633152336490471">"مكالمة جماعية"</string>
<string name="tooltip_popup_title" msgid="7863719020269945722">"تلميح"</string>
@@ -2048,15 +2073,15 @@
<string name="autofill_save_title_with_2types" msgid="3783270967447869241">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> في "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"؟"</string>
<string name="autofill_save_title_with_3types" msgid="6598228952100102578">"هل تريد حفظ <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g> في "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>"؟"</string>
<string name="autofill_update_title" msgid="3630695947047069136">"هل تريد التحديث في "<b>"<xliff:g id="LABEL">%1$s</xliff:g>"</b>"؟"</string>
- <string name="autofill_update_title_with_type" msgid="5264152633488495704">"هل تريد إعادة تحميل <xliff:g id="TYPE">%1$s</xliff:g> في "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"؟"</string>
- <string name="autofill_update_title_with_2types" msgid="1797514386321086273">"هل تريد إعادة تحميل <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> في "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"؟"</string>
- <string name="autofill_update_title_with_3types" msgid="1312232153076212291">"هل تريد إعادة تحميل هذه العناصر في "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>": <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g>؟"</string>
+ <string name="autofill_update_title_with_type" msgid="5264152633488495704">"هل تريد تحديث <xliff:g id="TYPE">%1$s</xliff:g> في "<b>"<xliff:g id="LABEL">%2$s</xliff:g>"</b>"؟"</string>
+ <string name="autofill_update_title_with_2types" msgid="1797514386321086273">"هل تريد تحديث <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> في "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"؟"</string>
+ <string name="autofill_update_title_with_3types" msgid="1312232153076212291">"هل تريد تحديث هذه العناصر في "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>": <xliff:g id="TYPE_0">%1$s</xliff:g> و<xliff:g id="TYPE_1">%2$s</xliff:g> و<xliff:g id="TYPE_2">%3$s</xliff:g>؟"</string>
<string name="autofill_save_yes" msgid="8035743017382012850">"حفظ"</string>
<string name="autofill_save_no" msgid="9212826374207023544">"لا، شكرًا"</string>
<string name="autofill_save_notnow" msgid="2853932672029024195">"ليس الآن"</string>
<string name="autofill_save_never" msgid="6821841919831402526">"أبدًا"</string>
<string name="autofill_update_yes" msgid="4608662968996874445">"تعديل"</string>
- <string name="autofill_continue_yes" msgid="7914985605534510385">"مواصلة"</string>
+ <string name="autofill_continue_yes" msgid="7914985605534510385">"متابعة"</string>
<string name="autofill_save_type_password" msgid="5624528786144539944">"كلمة مرور"</string>
<string name="autofill_save_type_address" msgid="3111006395818252885">"عنوان"</string>
<string name="autofill_save_type_credit_card" msgid="3583795235862046693">"بطاقة ائتمان"</string>
@@ -2155,22 +2180,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"قائمة \"سهولة الاستخدام\""</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"شريط الشرح لتطبيق <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"تم وضع <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> في الحزمة \"محظورة\"."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"شخصي"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"عمل"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"عرض المحتوى الشخصي"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"عرض محتوى العمل"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"تتعذّر المشاركة مع تطبيقات العمل"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"تتعذّر المشاركة مع التطبيقات الشخصية"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"حظر مشرف تكنولوجيا المعلومات إمكانية المشاركة بين التطبيقات الشخصية وتطبيقات العمل."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"لا يمكن الوصول إلى تطبيقات العمل"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"لا يسمح لك مشرف تكنولوجيا المعلومات بالاطّلاع على المحتوى الشخصي في تطبيقات العمل."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"لا يمكن الوصول إلى التطبيقات الشخصية"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"لا يسمح لك مشرف تكنولوجيا المعلومات بالاطّلاع على محتوى العمل في التطبيقات الشخصية."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"عليك تفعيل الملف الشخصي للعمل لمشاركة المحتوى."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"عليك تفعيل الملف الشخصي للعمل لعرض المحتوى."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ليس هناك تطبيقات متاحة"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"تفعيل"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"تسجيل الصوت أو تشغيله في المكالمات الهاتفية"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"يسمح الإذن لهذا التطبيق بتسجيل الصوت أو تشغيله في المكالمات الهاتفية عندما يتم تخصيصه كالتطبيق التلقائي لبرنامج الاتصال."</string>
</resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 9b42cf2..0699329 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"আপোনাৰ প্ৰতিষ্ঠানটোৱে এই ডিভাইচটো পৰিচালনা কৰে আৰু ই নেটৱৰ্কৰ ট্ৰেফিক পৰ্যবেক্ষণ কৰিব পাৰে। সবিশেষ জানিবলৈ টিপক।"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"আপোনাৰ প্ৰশাসকে অৱস্থানৰ ছেটিংসমূহ সলনি কৰিছে"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"আপোনাৰ অৱস্থানৰ ছেটিংসমূহ চাবলৈ টিপক।"</string>
+ <string name="country_detector" msgid="7023275114706088854">"দেশ চিনাক্তকাৰী"</string>
+ <string name="location_service" msgid="2439187616018455546">"অৱস্থান সেৱা"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS সেৱা"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"ছেন্সৰ জাননী সেৱা"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight সেৱা"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"আপোনাৰ ডিভাইচৰ ডেটা মচা হ\'ব"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"এই প্ৰশাসক এপটো ব্যৱহাৰ কৰিব নোৱাৰি। এতিয়া আপোনাৰ ডিভাইচটোৰ ডেটা মচা হ\'ব।\n\nআপোনাৰ কিবা প্ৰশ্ন থাকিলে আপোনাৰ প্ৰতিষ্ঠানৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"প্ৰিণ্ট কৰা কাৰ্য <xliff:g id="OWNER_APP">%s</xliff:g>এ অক্ষম কৰি ৰাখিছে।"</string>
@@ -245,6 +250,8 @@
<item quantity="one">ত্ৰুটি সম্পর্কীয় অভিযোগৰ বাবে <xliff:g id="NUMBER_1">%d</xliff:g>ছেকেণ্ডৰ ভিতৰত স্ক্ৰীণশ্বট লোৱা হ\'ব।</item>
<item quantity="other">ত্ৰুটি সম্পর্কীয় অভিযোগৰ বাবে <xliff:g id="NUMBER_1">%d</xliff:g>ছেকেণ্ডৰ ভিতৰত স্ক্ৰীণশ্বট লোৱা হ\'ব।</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"বাগ ৰিপ’ৰ্টৰ সৈতে স্ক্ৰীনশ্বট লোৱা হ’ল"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"বাগ ৰিপ’ৰ্টৰ সৈতে স্ক্ৰীনশ্বট ল’ব পৰা নগ’ল"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"নিঃশব্দ ম\'ড"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ধ্বনি অফ আছে"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ধ্বনি অন আছে"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"অতিৰিক্ত অৱস্থান দেখুওৱা নির্দেশত প্ৰৱেশ কৰক"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"অৱস্থানৰ অতিৰিক্ত নির্দেশনাসমূহত প্ৰৱেশ কৰিবলৈ এপক অনুমতি দিয়ে। ইয়ে এপটোক জিপিএছ বা অন্য অৱস্থান উৎসসমূহৰ কাৰ্যকলাপত হস্তক্ষেপ কৰাৰ সুযোগ দিব পাৰে।"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"কেৱল অগ্ৰভূমিত অৱস্থানৰ সঠিক তথ্য় পাওক"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"এই এপ্টো কেৱল অগ্ৰভূমিত থাকিলেহে এইটোৱে আপোনাৰ সঠিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান সেৱাসমূহ ব্যৱহাৰ কৰিবলৈ হ’লে সেইবোৰ অন হৈ থকাৰ লগতে সেয়া আপোনাৰ ডিভাইচত উপলব্ধ থাকিবই লাগিব। ইয়াৰ ফলত বেটাৰিৰ খৰচ বাঢ়িব পাৰে।"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"এই এপ্টো ব্যৱহাৰ হৈ থকা অৱস্থাত ই অৱস্থান সেৱাসমূহৰ পৰা আপোনাৰ সঠিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান লাভ কৰিবলৈ হ’লে আপোনাৰ ডিভাইচৰ অৱস্থান সেৱাসমূহ অন কৰি ৰাখিবই লাগিব। ইয়াৰ ফলত বেটাৰীৰ ব্যৱহাৰ বাঢ়িব পাৰে।"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"কেৱল অগ্ৰভূমিত আনুমানিক অৱস্থান এক্সেছ কৰক"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"এই এপ্টো অগ্ৰভূমিত থাকিলেহে এইটোৱে আপোনাৰ আনুমানিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান সেৱাসমূহ ব্যৱহাৰ কৰিবলৈ হ’লে সেইবোৰ অন হৈ থকাৰ লগতে সেয়া আপোনাৰ ডিভাইচত উপলব্ধ থাকিবই লাগিব।"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"এই এপ্টো ব্যৱহাৰ হৈ থকা অৱস্থাত ই অৱস্থান সেৱাসমূহৰ পৰা আপোনাৰ আনুমানিক অৱস্থান লাভ কৰিব পাৰে। এপ্টোৱে অৱস্থান লাভ কৰিবলৈ হ’লে আপোনাৰ ডিভাইচৰ অৱস্থান সেৱাসমূহ অন কৰি ৰাখিবই লাগিব।"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"নেপথ্যত চলি থকা সময়ত অৱস্থানৰ এক্সেছ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"এই এপ্টোৱে অগ্ৰভূমিত অৱস্থান এক্সেছ কৰাৰ ওপৰিও নেপথ্যত চলি থাকিলেও অৱস্থান এক্সেছ কৰিব পাৰে।"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"এই এপ্টোৱে যিকোনো সময়তে অৱস্থান এক্সেছ কৰিব পাৰে, আনকি এপ্টো ব্যৱহাৰ হৈ নথকা অৱস্থাতো।"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"আপোনাৰ অডিঅ\' ছেটিংসমূহ সলনি কৰক"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"এপটোক ভলিউমৰ দৰে গ্ল\'বেল অডিঅ\' ছেটিংসমূহ যাৰ স্পীকাৰক আউটপুটৰ বাবে ব্যৱহাৰ হয় তাক সলনি কৰিবলৈ অনুমতি দিয়ে৷"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"অডিঅ\' ৰেকর্ড কৰক"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"এই এপে যিকোনো সময়তে কেমেৰা ব্যৱহাৰ কৰি ফট\' তুলিব আৰু ভিডিঅ\' ৰেকর্ড কৰিব পাৰে।"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ফট’ উঠাবলৈ আৰু ভিডিঅ’ ৰেকৰ্ড কৰিবলৈ এটা এপ্লিকেশ্বন অথবা সেৱাক ছিষ্টেম কেমেৰাসমূহ এক্সেছ কৰিবলৈ দিয়ক"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"এই বিশেষাধিকাৰ প্ৰাপ্ত | ছিষ্টেম এপ্টোৱে এটা ছিষ্টেম কেমেৰা ব্যৱহাৰ কৰি যিকোনো সময়তে ফট’ উঠাব পাৰে আৰু ভিডিঅ’ ৰেকৰ্ড কৰিব পাৰে। লগতে এপ্টোৰো android.permission.CAMERAৰ অনুমতি থকাটো প্ৰয়োজনীয়"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"কম্পন নিয়ন্ত্ৰণ কৰক"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ভাইব্ৰেটৰ নিয়ন্ত্ৰণ কৰিবলৈ এপটোক অনুমতি দিয়ে।"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"এপ্টোক কম্পন স্থিতিটো এক্সেছ কৰিবলৈ অনুমতি দিয়ে।"</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"কল কৰাৰ অভিজ্ঞতাক উন্নত কৰিবলৈ এপটোক ছিষ্টেমৰ জৰিয়তে কলসমূহ কৰিবলৈ দিয়ে।"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ছিষ্টেমৰ জৰিয়তে কলবোৰ চোৱা আৰু নিয়ন্ত্ৰণ কৰা।"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"এপটোক ডিভাইচত চলি থকা কল চাবলৈ আৰু নিয়ন্ত্ৰণ কৰিবলৈ অনুমতি দিয়ে। কলৰ সংখ্যা আৰু কলবোৰৰ স্থিতি ইয়াত অন্তৰ্ভুক্ত হয়।"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"অইন এটা এপত আৰম্ভ হোৱা কল এটা অব্যাহত ৰাখিব পাৰে"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"এপটোক এনে কল কৰিবলৈ দিয়ে যিটোৰ আৰম্ভণি অইন এটা এপত হৈছিল।"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ফ\'ন নম্বৰসমূহ পঢ়ে"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"এপটোক ডিভাইচটোৰ ফ\'ন নম্বৰসমূহ চাবলৈ অনুমতি দিয়ে।"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"গাড়ীৰ স্ক্রীনখন অন কৰি ৰখা"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"টে\'বলেট সুপ্ত অৱস্থালৈ যোৱাত বাধা দিয়ক"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"আপোনাৰ Android TV ডিভাইচটো সুপ্ত অৱস্থালৈ যোৱাত বাধা দিয়ক"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ফ\'ন সুপ্ত অৱস্থালৈ যোৱাত বাধা দিয়ক"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"এপ্টোক গাড়ীৰ স্ক্রীনখন অন কৰি ৰাখিবলৈ অনুমতি দিয়ে।"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"টে\'বলেট সুপ্ত অৱস্থালৈ যোৱাৰ পৰা প্ৰতিৰোধ কৰিবলৈ এপটোক অনুমতি দিয়ে।"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"এপ্টোক আপোনাৰ Android TV ডিভাইচটো সুপ্ত অৱস্থালৈ যোৱাত বাধা দিবলৈ অনুমতি দিয়ে।"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ফ\'ন সুপ্ত অৱস্থালৈ যোৱাৰ পৰা প্ৰতিৰোধ কৰিবলৈ এপটোক অনুমতি দিয়ে।"</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"আকৌ চেষ্টা কৰক।"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"কোনো ফিংগাৰপ্ৰিণ্ট যোগ কৰা নহ\'ল।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"এই ডিভাইচটোত ফিংগাৰপ্ৰিণ্ট ছেন্সৰ নাই।"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ছেন্সৰটো সাময়িকভাৱে অক্ষম হৈ আছে।"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> আঙুলি"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"মুখমণ্ডল সত্যাপন কৰিব পৰা নগ’ল। আকৌ চেষ্টা কৰক।"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"আপুনি মুখাৱয়বৰদ্বাৰা আনলক কৰাটো ছেট আপ কৰা নাই।"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"এই ডিভাইচটোত মুখাৱয়বৰদ্বাৰা আনলক কৰা সুবিধাটো নচলে।"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ছেন্সৰটো সাময়িকভাৱে অক্ষম হৈ আছে।"</string>
<string name="face_name_template" msgid="3877037340223318119">"মুখমণ্ডল <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ম’বাইল নেটৱৰ্কৰ কোনো ইণ্টাৰনেটৰ এক্সেছ নাই"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"নেটৱৰ্কৰ কোনো ইণ্টাৰনেটৰ এক্সেছ নাই"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ব্যক্তিগত DNS ছাৰ্ভাৰ এক্সেছ কৰিব নোৱাৰি"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"সংযোগ কৰা হ’ল"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>ৰ সকলো সেৱাৰ এক্সেছ নাই"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"যিকোনো প্ৰকাৰে সংযোগ কৰিবলৈ টিপক"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>লৈ সলনি কৰা হ’ল"</string>
@@ -1318,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"ইউএছবি ডিবাগিং সংযোগ কৰা হ’ল"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"ইউএছবি ডিবাগিং বন্ধ কৰিবলৈ টিপক"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"ইউএছবি ডিবাগিং অক্ষম কৰিবলৈ বাছনি কৰক।"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ৱায়াৰলেছ ডিবাগিং সংযোগ কৰা হৈছে"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ৱায়াৰলেছ ডিবাগিং অফ কৰিবলৈ টিপক"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ৱায়াৰলেছ ডিবাগিং অক্ষম কৰিবলৈ বাছনি কৰক।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"টেষ্ট হাৰনেছ ম’ড সক্ষম কৰা আছে"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"টেষ্ট হাৰনেছ ম’ড অক্ষম কৰিবলৈ ফেক্টৰী ৰিছেট কৰক।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ক্ৰমিক কনছ’ল সক্ষম কৰা আছে"</string>
@@ -1621,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"নেপথ্যই <xliff:g id="PACKAGENAME">%1$s</xliff:g>ৰ পৰা আৰম্ভ কৰা অগ্ৰভূমিৰ সেৱাটোৰ ভৱিষ্যতৰ R বিল্ডসমূহত ব্যৱহাৰ হৈ থকা সম্পৰ্কীয় অনুমতি নাথাকিব। অনুগ্ৰহ কৰি go/r-bg-fgs-restriction চাওক আৰু এটা বাগৰিপ\'ৰ্ট ফাইল কৰক।"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"অনুমোদিত স্তৰতকৈ ওপৰলৈ ভলিউম বঢ়াব নেকি?\n\nদীৰ্ঘ সময়ৰ বাবে উচ্চ ভলিউমত শুনাৰ ফলত শ্ৰৱণ ক্ষমতাৰ ক্ষতি হ\'ব পাৰে।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাট ব্যৱহাৰ কৰেনে?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শ্বৰ্টকাটটো অন হৈ থকাৰ সময়ত দুয়োটা ভলিউম বুটাম ৩ ছেকেণ্ডৰ বাবে হেঁচি ধৰি ৰাখিলে এটা সাধ্য সুবিধা আৰম্ভ হ’ব।"</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"আপোনাক সাধ্য সুবিধাৰ প্ৰয়োজনসমূহৰ জৰিয়তে সহায় কৰা এপ্সমূহৰ বাবে সম্পূর্ণ নিয়ন্ত্ৰণৰ সুবিধাটো সঠিক যদিও অধিকাংশ এপৰ বাবে এয়া সঠিক নহয়।"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"চাওক আৰু স্ক্ৰীণ নিয়ন্ত্ৰণ কৰক"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ই স্ক্ৰীণৰ সকলো সমল পঢ়িব পাৰে আৰু অন্য এপ্সমূহৰ ওপৰত সমল প্ৰদর্শন কৰিব পাৰে।"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"কার্যসমূহ চাওক আৰু কৰক"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ই আপুনি কোনো এপ্ বা হার্ডৱেৰ ছেন্সৰৰ সৈতে কৰা ভাব-বিনিময় আৰু আপোনাৰ হৈ অন্য কোনো লোকে এপৰ সৈতে কৰা ভাব-বিনিময় ট্ৰেক কৰিব পাৰে।"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"অনুমতি দিয়ক"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"অস্বীকাৰ কৰক"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"শ্বৰ্টকাটসমূহ সম্পাদনা কৰক"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"বাতিল কৰক"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"শ্বৰ্টকাট অফ কৰক"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শ্বৰ্টকাট ব্যৱহাৰ কৰক"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ৰং বিপৰীতকৰণ"</string>
@@ -1845,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"শ্ৰেণীবদ্ধ নকৰা"</string>
<string name="importance_from_user" msgid="2782756722448800447">"এই জাননীবোৰৰ গুৰুত্ব আপুনি ছেট কৰব লাগিব।"</string>
<string name="importance_from_person" msgid="4235804979664465383">"এই কার্যৰ সৈতে জড়িত থকা লোকসকলক ভিত্তি কৰি এইয়া গুৰুত্বপূর্ণ বুলি বিবেচনা কৰা হৈছ।"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"কাষ্টম এপৰ জাননী"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>ক <xliff:g id="ACCOUNT">%2$s</xliff:g>ৰ (এই একাউণ্টটোৰ এজন ব্যৱহাৰকাৰী ইতিমধ্যে আছে) জৰিয়তে এজন নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>ক <xliff:g id="ACCOUNT">%2$s</xliff:g>ৰ জৰিয়তে এজন নতুন ব্যৱহাৰকাৰী সৃষ্টি কৰিবলৈ অনুমতি দিবনে?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ভাষা যোগ কৰক"</string>
@@ -2016,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"সাধ্য সুবিধাৰ মেনু"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ কেপশ্বন বাৰ।"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ক সীমাবদ্ধ বাকেটটোত ৰখা হৈছে"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ব্যক্তিগত"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"কৰ্মস্থান"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ব্যক্তিগত ভিউ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"কৰ্মস্থানৰ ভিউ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"কৰ্মস্থানৰ এপ্সমূহৰ সৈতে শ্বেয়াৰ কৰিব নোৱাৰি"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ব্যক্তিগত এপ্সমূহৰ সৈতে শ্বেয়াৰ কৰিব নোৱাৰি"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"আপোনাৰ আইটি প্ৰশাসকে ব্যক্তিগত আৰু কৰ্মস্থানৰ প্ৰ’ফাইলসমূহৰ মাজত শ্বেয়াৰ কৰাটো অৱৰোধ কৰিছে"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"কৰ্মস্থানৰ এপ্সমূহ এক্সেছ কৰিব নোৱাৰি"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক কৰ্মস্থানৰ এপ্সমূহত ব্যক্তিগত সমল চাবলৈ নিদিয়ে"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ব্যক্তিগত এপ্সমূহ এক্সেছ কৰিব নোৱাৰি"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"আপোনাৰ আইটি প্ৰশাসকে আপোনাক ব্যক্তিগত এপ্সমূহত কৰ্মস্থানৰ সমল চাবলৈ নিদিয়ে"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"সমল শ্বেয়াৰ কৰিবলৈ কৰ্মস্থানৰ প্ৰ’ফাইল অন কৰক"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"সমল চাবলৈ কৰ্মস্থানৰ প্ৰ’ফাইল অন কৰক"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"কোনো এপ্ উপলব্ধ নহয়"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"অন কৰক"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"টেলিফ’নী কলসমূহত অডিঅ’ ৰেকৰ্ড অথবা প্লে’ কৰক"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ডিফ’ল্ট ডায়েলাৰ এপ্লিকেশ্বন হিচাপে আবণ্টন কৰিলে, এই এপ্টোক টেলিফ’নী কলসমূহত অডিঅ’ ৰেকৰ্ড অথবা প্লে’ কৰিবলৈ অনুমতি দিয়ে।"</string>
</resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index 73adbd8..c6f9d04 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Təşkilat bu cihazı idarə edir və şəbəkənin ötürülməsinə nəzarət edə bilər. Detallar üçün klikləyin."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Məkan ayarları admininiz tərəfindən dəyişildi"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Məkan ayarlarınıza baxmaq üçün toxunun."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Ölkə Aşkarlayıcısı"</string>
+ <string name="location_service" msgid="2439187616018455546">"Məkan Xidməti"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS Xidməti"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Bildiriş Xidməti"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Alaqaranlıq Xidməti"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız təmizlənəcəkdir"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Admin tətbiqini istifadə etmək mümkün deyil. Cihaz indi təmizlənəcək.\n\nSualınız varsa, təşkilatın admini ilə əlaqə saxlayın."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Çap <xliff:g id="OWNER_APP">%s</xliff:g> tərəfindən deaktiv edildi."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Baq hesabatı üçün <xliff:g id="NUMBER_1">%d</xliff:g> saniyədə sktinşot çəkilir.</item>
<item quantity="one">Baq hesabatı üçün <xliff:g id="NUMBER_0">%d</xliff:g> saniyədə skrinşot çəkilir.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Xəta hesabatı ilə ekran şəkli çəkildi"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Xəta hesabatı ilə ekran şəkli çəkmək alınmadı."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Səssiz rejim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Səs qapalıdır"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Səs Aktivdir"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"əlavə məkan provayderi əmrlərinə çıxış"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tətbiqə ekstra məkan provayder əmrlərinə girişə imkan verir. Bu, tətbiqə GPS və ya digər lokal mənbələrlə əməliyyata müdaxiləyə imkan verə bilər."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"yalnız ön planda dəqiq məkana daxil olun"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu tətbiq yalnız ön fonda olduqda dəqiq məkanınızı əldə edə bilər. Tətbiqin bunlardan istifadə etməsi üçün məkan xidmətləri aktiv edilməli və cihazda əlçatan olmalıdır. Bu, batareya sərfiyyatını artıra bilər."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu tətbiq istifadə olunan zaman məkan xidmətlərindən dəqiq məkanınızı əldə edə bilər. Tətbiq tərəfindən məkanın əldə edilməsi üçün cihazınızda məkan xidmətləri aktiv olmalıdır. Bu zaman batareya istifadəsi arta bilər."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"yalnız ön planda təqribi məkana giriş"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu tətbiq yalnız ön fonda olduqda təqribi məkanınızı əldə edə bilər. Tətbiqin istifadə edə bilməsi üçün məkan xidmətləri cihazda aktiv edilməli və əlçatan olmalıdır."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu tətbiq istifadə olunan zaman məkan xidmətlərindən təqribi məkanınızı əldə edə bilər. Tətbiq tərəfindən məkanın əldə edilməsi üçün cihazınızda məkan xidmətləri aktiv olmalıdır."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"arxa fonda məkan girişi"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu tətbiq ön planda məkana girişlə yanaşı, arxa fonda işləyərkən məkana giriş edə bilər."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu tətbiq istənilən vaxt, hətta tətbiq istifadə olunmadıqda belə, məkana giriş edə bilər."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"audio ayarlarınızı dəyişir"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tətbiqə səs və hansı spikerin çıxış üçün istifadə olunduğu kimi qlobal səs ayarlarını dəyişdirməyə imkan verir."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"səs yaz"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Bu tətbiq istədiyiniz zaman kameranı istifadə edərək şəkil çəkə və video qeydə ala bilər."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Şəkil və video çəkmək üçün tətbiq və ya xidmətlərin sistem kameralarına girişinə icazə verin"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Bu icazəli | sistem tətbiqi istənilən vaxt sistem kamerasından istifadə edərək şəkil və videolar çəkə bilər. Tətbiqdə saxlanılması üçün android.permission.CAMERA icazəsini tələb edir"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tətbiqə və ya xidmətə kamera cihazlarının açılması və ya bağlanması haqqında geri zənglər qəbul etməyə icazə verin."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Hər hansı kamera cihazı açıldıqda (hansı tətbiq paketi tərəfindən) və ya bağlandıqda bu imza tətbiqi geri zənglər qəbul edə bilər."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"vibrasiyaya nəzarət edir"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Tətbiqə vibratoru idarə etmə icazəsi verir."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Tətbiqə vibrasiya vəziyyətinə daxil olmaq imkanı verir."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Tətbiqə, zəng təcrübəsini yaxşılaşdırmaq üçün, zəngləri sistem üzərindən yönləndirməyə icazə verilir."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"zənglərə sistemdə baxın və nəzarət edin."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Tətbiqin cihazda davam edən zəngləri görməsinə və nəzarət etməsinə icazə verin. Bura zəng edən nömrələr və zənglərin statusu haqqında məlumat daxildir."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"zəngə digər tətbiqdən davam edin"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Tətbiqə digər tətbiqdə başlayan zəngə davam etmək icazəsi verilir."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"telefon nömrələrini oxuyun"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Tətbiqə cihazın telefon nömrələrinə daxil olmağa icazə verir."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"avtomobilin ekranını aktiv saxlamaq"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"planşetin yuxu rejiminin qarşısını almaq"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV-nin yuxu rejiminə keçməsinə icazə verməyin"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"telefonun yuxu rejiminə keçməsini əngəllə"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Tətbiqə avtomobilin ekranını aktiv saxlamaq icazəsi verir."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Tətbiqə planşetin yuxu rejimini qadağan etməyə imkan verir."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Tətbiqə Android TV cihazında yuxu sessiyasını deaktiv etmək icazəsi verir."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Tətbiqə telefonun yuxu rejimini qadağan etmək imkanı verir."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Yenidən cəhd edin."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Barmaq izi qeydə alınmayıb."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Bu cihazda barmaq izi sensoru yoxdur."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor müvəqqəti deaktivdir."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Barmaq <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Üz doğrulanmadı. Yenidən cəhd edin."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Üz kilidi quraşdırmamısınız."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Üz kilidi bu cihazda dəstəklənmir."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor müvəqqəti deaktivdir."</string>
<string name="face_name_template" msgid="3877037340223318119">"Üz <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobil şəbəkənin internetə girişi yoxdur"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Şəbəkənin internetə girişi yoxdur"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Özəl DNS serverinə giriş mümkün deyil"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Qoşuldu"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> bağlantını məhdudlaşdırdı"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"İstənilən halda klikləyin"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> şəbəkə növünə keçirildi"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB sazlama qoşuludur"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB sazlamanı deaktiv etmək üçün klikləyin"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USb debaqı deaktivasiya etməyi seçin."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Simsiz sazlama qoşulub"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Simsiz sazlamanı deaktiv etmək üçün toxunun"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Simsiz sazlamanı deaktiv etmək üçün seçin."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Rejimi aktivdir"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Test Rejimini deaktiv etmək üçün fabrika ayarlarına sıfırlayın."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Ardıcıl konsol aktiv edildi"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Arxa fonda başladılan <xliff:g id="PACKAGENAME">%1$s</xliff:g> üzrə ön plan xidmətinin gələcək R versiyalarında \"istifadə zamanı\" icazəsi olmayacaq. go/r-bg-fgs-restriction bölməsinə keçin və baq hesabatı göndərin."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Səsin həcmi tövsiyə olunan səviyyədən artıq olsun?\n\nYüksək səsi uzun zaman dinləmək eşitmə qabiliyyətinizə zərər vura bilər."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Əlçatımlılıq Qısayolu istifadə edilsin?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Qısayol aktiv olduqda, hər iki səs düyməsinə 3 saniyə basıb saxlamaqla əlçatımlılıq funksiyası başladılacaq."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xidmətinin cihaza tam nəzarət etməsinə icazə verilsin?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktiv olarsa, cihazınız data şifrələnməsini genişləndirmək üçün ekran kilidini istifadə etməyəcək."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Tam nəzarət əlçatımlılıq ehtiyaclarınızı ödəyən bəzi tətbiqlər üçün uyğundur."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Baxış və nəzarət ekranı"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandakı bütün kontenti oxuya və digər tətbiqlərdəki kontenti göstərə bilər."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Əməliyyatlara baxın və icra edin"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"O, tətbiq və ya avadanlıq sensoru ilə interaktivliyinizi izləyir və əvəzinizdən tətbiqlərlə qarşılıqlı əlaqəyə girir."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İcazə verin"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"İmtina edin"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Funksiyanı istifadə etmək üçün onun üzərinə toxunun:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Əlçatımlılıq düyməsi ilə istifadə etmək üçün tətbiqləri seçin"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Səs düyməsi qısayolu ilə istifadə etmək üçün tətbiqləri seçin"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> deaktiv edilib"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Qısayolları redaktə edin"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Ləğv edin"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hazırdır"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Qısayolu Deaktiv edin"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Qısayol İstifadə edin"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Rəng İnversiyası"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Kateqoriyasız"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Bildirişlərin əhəmiyyətini Siz ayarlaryırsınız."</string>
<string name="importance_from_person" msgid="4235804979664465383">"İnsanlar cəlb olunduğu üçün bu vacibdir."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Fərdi tətbiq bildirişi"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> tətbiqinə <xliff:g id="ACCOUNT">%2$s</xliff:g> (artıq bu hesabı olan İstifadəçi mövcuddur) ilə yeni İstifadəçi yaratmağa icazə verilsin?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> tətbiqinə <xliff:g id="ACCOUNT">%2$s</xliff:g> ilə yeni İstifadəçi yartmağa icazə verilsin?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dil əlavə edin"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Əlçatımlılıq Menyusu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> başlıq paneli."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> MƏHDUDLAŞDIRILMIŞ səbətinə yerləşdirilib"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Şəxsi"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"İş"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Şəxsi məzmuna baxış"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"İş məzmununa baxış"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"İş tətbiqləri ilə paylaşmaq olmur"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Şəxsi tətbiqlərlə paylaşmaq olmur"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"İT admininiz şəxsi və iş profilləri arasında paylaşımı bloklayıb"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"İş tətbiqlərinə giriş mümkün deyil"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"İT admininiz iş tətbiqlərində şəxsi məzmuna baxmanıza icazə vermir"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Fərdi tətbiqlərə giriş mümkün deyil"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"İT admininiz şəxsi tətbiqlərdə iş məzmununa baxmanıza icazə vermir"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Məzmunu paylaşmaq üçün iş profilini aktiv edin"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Məzmuna baxmaq üçün iş profilini aktiv edin"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Heç bir tətbiq əlçatan deyil"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktiv edin"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefon zənglərində audio yazmaq və ya oxutmaq"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Defolt nömrəyığan tətbiq kimi təyin edildikdə, bu tətbiqə telefon zənglərində audio yazmaq və ya oxutmaq üçün icazə verir."</string>
</resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index bf250f7..a1a479a 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -195,6 +195,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizacija upravlja ovim uređajem i može da nadgleda mrežni saobraćaj. Dodirnite za detalje."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Administrator je promenio podešavanja lokacije"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da biste videli podešavanja lokacije."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string>
+ <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS usluga"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga obaveštenja senzora"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Usluga Sumrak"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti obrisan"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Ne možete da koristite ovu aplikaciju za administratore. Uređaj će sada biti obrisan.\n\nAko imate pitanja, kontaktirajte administratora organizacije."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="few">Napravićemo snimak ekrana radi izveštaja o grešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
<item quantity="other">Napravićemo snimak ekrana radi izveštaja o grešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekundi.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Ekran sa izveštajem o grešci je snimljen"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Snimanje ekrana sa izveštajem o grešci nije uspelo"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Nečujni režim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je ISKLJUČEN"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je UKLJUČEN"</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim komandama dobavljača lokacije"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Omogućava aplikaciji da pristupa dodatnim komandama davaoca usluga lokacije. To može da omogući aplikaciji da utiče na rad GPS-a ili drugih izvora lokacije."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristup preciznoj lokaciji samo u prvom planu"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ova aplikacija može da odredi vašu tačnu lokaciju samo kada radi u prvom planu. Usluge lokacije moraju da budu uključene i dostupne na uređaju da bi aplikacija mogla da ih koristi. To može da poveća potrošnju baterije."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ova aplikacija može da odredi vašu tačnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju. To može da poveća potrošnju baterije."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristup približnoj lokaciji samo u prvom planu"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ova aplikacija može da odredi vašu približnu lokaciju samo kada radi u prvom planu. Usluge lokacije moraju da budu uključene i dostupne na uređaju da bi aplikacija mogla da ih koristi."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ova aplikacija može da odredi vašu približnu lokaciju na osnovu usluga lokacije dok se aplikacija koristi. Usluge lokacije za uređaj moraju da budu uključene da bi aplikacija odredila lokaciju."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ova aplikacija može da pristupa lokaciji dok radi u pozadini, kao i kada radi u prvom planu."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ova aplikacija može da pristupa lokaciji u bilo kom trenutku, čak i dok se aplikacija ne koristi."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"promena audio podešavanja"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Dozvoljava aplikaciji da menja globalna audio podešavanja kao što su jačina zvuka i izbor zvučnika koji se koristi kao izlaz."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje audio zapisa"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ova aplikacija može da snima fotografije i video snimke pomoću kamere u bilo kom trenutku."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Dozvolite nekoj aplikaciji ili usluzi da pristupa kamerama sistema da bi snimala slike i video snimke"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ova privilegovana | sistemska aplikacija može da snima slike i video snimke pomoću kamere sistema u bilo kom trenutku. Aplikacija treba da ima i dozvolu android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dozvolite aplikaciji ili usluzi da dobija povratne pozive o otvaranju ili zatvaranju uređaja sa kamerom."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ova aplikacija za potpise može da dobija povratne pozive kada se bilo koji uređaj sa kamerom otvara ili zatvara (pomoću nekog paketa aplikacija)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrola vibracije"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Dozvoljava aplikaciji da kontroliše vibraciju."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dozvoljava aplikaciji da pristupa stanju vibriranja."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Dozvoljava aplikaciji da preusmerava pozive preko sistema da bi poboljšala doživljaj pozivanja."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"pregled i kontrola poziva preko sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Dozvoljava aplikaciji da pregleda i kontroliše trenutne pozive na uređaju. To obuhvata informacije poput brojeva telefona i statusa poziva."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"nastavi poziv u drugoj aplikaciji"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Dozvoljava aplikaciji da nastavi poziv koji je započet u drugoj aplikaciji."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"čitanje brojeva telefona"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Dozvoljava aplikaciji da pristupa brojevima telefona na uređaju."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ne isključuj ekran u automobilu"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"sprečavanje prelaska tableta u stanje spavanja"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"sprečava Android TV uređaj da pređe u stanje spavanja"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"sprečavanje prelaska telefona u stanje spavanja"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Dozvoljava aplikaciji da ne isključuje ekran u automobilu."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Dozvoljava aplikaciji da spreči tablet da pređe u stanje spavanja."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Dozvoljava aplikaciji da spreči Android TV uređaj da pređe u stanje spavanja."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Dozvoljava aplikaciji da spreči telefon da pređe u stanje spavanja."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Probajte ponovo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije registrovan nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor za otisak prsta."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Provera lica nije uspela. Probajte ponovo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Niste podesili otključavanje licem"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Otključavanje licem nije podržano na ovom uređaju"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string>
<string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1273,7 +1286,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilna mreža nema pristup internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Mreža nema pristup internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Pristup privatnom DNS serveru nije uspeo"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Povezano je"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ima ograničenu vezu"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Dodirnite da biste se ipak povezali"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Prešli ste na tip mreže <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1338,6 +1350,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Otklanjanje grešaka sa USB-a je omogućeno"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Dodirnite da biste isključili otklanjanje grešaka sa USB-a"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Izaberite da biste onemogućili otklanjanja grešaka sa USB-a."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bežično otklanjanje grešaka je povezano"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Dodirnite da biste isključili bežično otklanjanje grešaka"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Izaberite da biste onemogućili bežično otklanjanje grešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je režim probnog korišćenja"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Obavite resetovanje na fabrička podešavanja da biste onemogućili režim probnog korišćenja."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola je omogućena"</string>
@@ -1643,10 +1658,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluga u prvom planu sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> koja je pokrenuta u pozadini neće imati dozvolu tokom korišćenja u budućim R verzijama. Posetite go/r-bg-fgs-restriction i pošaljite izveštaj o grešci."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite da pojačate zvuk iznad preporučenog nivoa?\n\nSlušanje glasne muzike duže vreme može da vam ošteti sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li da koristite prečicu za pristupačnost?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritisnite oba dugmeta za jačinu zvuka da biste pokrenuli funkciju pristupačnosti."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li da dozvolite da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima potpunu kontrolu nad uređajem?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana da bi poboljšao šifrovanje podataka."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola je primerena za aplikacije koje vam pomažu kod usluga pristupačnosti, ali ne i za većinu aplikacija."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Pregledaj i kontroliši ekran"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Može da čita sav sadržaj na ekranu i prikazuje ga u drugim aplikacijama."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Pregledaj i obavljaj radnje"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Može da prati interakcije sa aplikacijom ili senzorom hardvera i koristi aplikacije umesto vas."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dozvoli"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite neku funkciju da biste počeli da je koristite:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Odaberite aplikacije koje ćete koristiti sa dugmetom Pristupačnost"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Odaberite aplikacije koje ćete koristiti sa tasterom jačine zvuka kao prečicom"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Izmenite prečice"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Otkaži"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečicu"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
@@ -1877,6 +1904,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nekategorizovano"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Vi podešavate važnost ovih obaveštenja."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ovo je važno zbog ljudi koji učestvuju."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Prilagođeno obaveštenje o aplikaciji"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Želite li da dozvolite da <xliff:g id="APP">%1$s</xliff:g> napravi novog korisnika sa nalogom <xliff:g id="ACCOUNT">%2$s</xliff:g> (korisnik sa tim nalogom već postoji)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Želite li da dozvolite da <xliff:g id="APP">%1$s</xliff:g> napravi novog korisnika sa nalogom <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dodajte jezik"</string>
@@ -2050,22 +2078,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni Pristupačnost"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka sa naslovima aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je dodat u segment OGRANIČENO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Lični"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Poslovni"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Lični prikaz"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Prikaz za posao"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ne možete da delite sadržaj sa aplikacijama za posao"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Ne možete da delite sadržaj sa ličnim aplikacijama"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT administrator je blokirao deljenje između ličnih aplikacija i profila za Work"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Pristup aplikacijama za posao nije moguć"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT administrator vam ne dozvoljava da u aplikacijama za posao pregledate lični sadržaj"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Pristup ličnim aplikacijama nije moguć"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT administrator vam ne dozvoljava da u ličnim aplikacijama pregledate sadržaj za posao"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Uključite profil za Work da biste delili sadržaj"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Uključite profil za Work da biste pregledali sadržaj"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nema dostupnih aplikacija"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Uključi"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili puštanje zvuka u telefonskim pozivima"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Omogućava ovoj aplikaciji, kada je dodeljena kao podrazumevana aplikacija za pozivanje, da snima ili pušta zvuk u telefonskim pozivima."</string>
</resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 454a21e..205d359 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -91,7 +91,7 @@
<string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Экстранныя выклікі ў сетцы Wi‑Fi недаступныя"</string>
<string name="notification_channel_network_alert" msgid="4788053066033851841">"Абвесткі"</string>
<string name="notification_channel_call_forward" msgid="8230490317314272406">"Пераадрасацыя выкліку"</string>
- <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Рэжым экстраннага зваротнага выкліку"</string>
+ <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Рэжым экстранных зваротных выклікаў"</string>
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Стан мабільнай перадачы даных"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"SMS-паведамленні"</string>
<string name="notification_channel_voice_mail" msgid="8457433203106654172">"Паведамленні галасавой пошты"</string>
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша арганізацыя кіруе гэтай прыладай і можа сачыць за сеткавым трафікам. Дакраніцеся для атрымання дадатковай інфармацыі."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Налады месцазнаходжання зменены адміністратарам"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Націсніце, каб праглядзець налады месцазнаходжання."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Дэтэктар краіны"</string>
+ <string name="location_service" msgid="2439187616018455546">"Служба геалакацыі"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Служба GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Служба апавяшчэнняў датчыка"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Служба Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Даныя вашай прылады будуць сцерты"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Немагчыма выкарыстоўваць праграму адміністравання. Звесткі на вашай прыладзе будуць выдалены.\n\nКалі ў вас ёсць пытанні, звярніцеся да адміністратара арганізацыі."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Друк адключаны ўладальнікам праграмы <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -251,6 +256,8 @@
<item quantity="many">Здымак экрана для справаздачы пра памылкі будзе зроблены праз <xliff:g id="NUMBER_1">%d</xliff:g> секунд.</item>
<item quantity="other">Здымак экрана для справаздачы пра памылкі будзе зроблены праз <xliff:g id="NUMBER_1">%d</xliff:g> секунды.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Зроблены здымак экрана са справаздачай пра памылкі"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Не ўдалося зрабіць здымак экрана са справаздачай пра памылкі"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Бязгучны рэжым"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Гук выкл."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Гук уключаны"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"доступ да дадатковых камандаў пастаўшчыка месцазнаходжання"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Дазваляе праграме атрымліваць доступ да дадатковых каманд службаў вызначэння месцазнаходжання. Гэта можа дазволіць праграме ўмешвацца ў функцыянаванне GPS або іншых крыніц даных аб месцазнаходжаннi."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"доступ да дакладнага месцазнаходжання толькі ў асноўным рэжыме"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Гэта праграма можа атрымліваць звесткі пра ваша дакладнае месцазнаходжанне толькі ў актыўным рэжыме. Службы геалакацыі павінны быць уключаны і даступныя на вашай прыладзе, каб праграма магла імі карыстацца. Гэта можа павялічыць спажыванне зараду акумулятара."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Падчас выкарыстання гэта праграма можа атрымліваць ад службаў геалакацыі звесткі пра ваша дакладнае месцазнаходжанне. Каб праграма мела такія звесткі, на вашай прыладзе павінны быць уключаны службы геалакацыі. Магчымае павышэнне выкарыстання зараду акумулятара."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"доступ да прыблізнага месцазнаходжання толькі ў актыўным рэжыме"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Гэта праграма можа атрымліваць звесткі пра ваша прыблізнае месцазнаходжанне толькі ў актыўным рэжыме. Службы геалакацыі павінны быць уключаны і даступныя на вашай прыладзе, каб праграма магла імі карыстацца."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Падчас выкарыстання гэта праграма можа атрымліваць ад службаў геалакацыі звесткі пра ваша прыблізнае месцазнаходжанне. Каб праграма мела такія звесткі, на вашай прыладзе павінны быць уключаны службы геалакацыі."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ да вызначэння месцазнаходжання ў фонавым рэжыме"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Гэта праграма можа мець доступ да даных пра месцазнаходжанне не толькі ў актыўным, але і ў фонавым рэжыме."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Гэта праграма можа мець доступ да даных пра месцазнаходжанне ў любы час, нават калі яна не выкарыстоўваецца."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"змяняць налады аудыё"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дазваляе прыкладанням змяняць глабальныя налады гуку, такія як моц і тое, што дынамік выкарыстоўваецца для выхаду."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"запіс аўдыя"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Гэта праграма можа рабіць фота і запісваць відэа з дапамогай камеры ў любы час."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Дазволіць праграме або сэрвісу атрымліваць доступ да сістэмных камер, каб здымаць фота і запісваць відэа"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Гэта прыярытэтная | сістэмная праграма можа здымаць фота і запісваць відэа, выкарыстоўваючы сістэмную камеру. Праграме патрэбны дазвол android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дазволіць праграме ці сэрвісу атрымліваць зваротныя выклікі наконт адкрыцця ці закрыцця прылад камеры."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Гэта праграма для подпісу можа атрымліваць зваротныя вылікі, калі адкрываецца (пакетам праграм) або закрываецца прылада камеры."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"кіраванне вібрацыяй"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Дазваляе прыкладанням кіраваць вібрацыяй."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дазваляе праграме атрымліваць доступ да вібрасігналу."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дазваляе праграме перанакіроўваць выклікі праз сістэму ў мэтах паляпшэння выклікаў."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"праглядаць выклікі і кіраваць імі праз сістэму."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Дазваляе праграме праглядаць на прыладзе ўваходныя выклікі і кіраваць імі. Гэта інфармацыя ўключае нумары выклікаў і звесткі пра іх краіну."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"працяг выкліку з іншай праграмы"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Дазваляе праграме працягваць выклік, які пачаўся ў іншай праграме."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"счытваць нумары тэлефонаў"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Дазваляе праграме атрымліваць доступ да нумароў тэлефонаў на прыладзе."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"пакідаць экран аўтамабіля ўключаным"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"прадухіліць планшэт ад пераходу ў рэжым сну"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"прадухіляць пераход прылады Android TV у рэжым сну"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"забараняць тэлефону пераходзіць ў рэжым сну"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дазваляе праграме пакідаць экран аўтамабіля ўключаным."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Дазваляе прыкладанням прадухіляць пераход планшэта ў рэжым сну."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дазваляе праграме прадухіляць пераход прылады Android TV у рэжым сну."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Дазваляе прыкладанням прадухіляць тэлефон ад пераходу ў рэжым сну."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Паспрабуйце яшчэ раз."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Адбіткі пальцаў не зарэгістраваны."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На гэтай прыладзе няма сканера адбіткаў пальцаў."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчык часова выключаны."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Палец <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Не ўдалося спраўдзіць твар. Паўтарыце спробу."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Вы не наладзілі распазнаванне твару."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"На гэтай прыладзе распазнаванне твару не падтрымліваецца."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчык часова выключаны."</string>
<string name="face_name_template" msgid="3877037340223318119">"Твар <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мабільная сетка не мае доступу ў інтэрнэт"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Сетка не мае доступу ў інтэрнэт"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Не ўдалося атрымаць доступ да прыватнага DNS-сервера"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Падключана"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> мае абмежаваную магчымасць падключэння"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Націсніце, каб падключыцца"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Выкананы пераход да <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Адладка па USB падключана"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Націсніце, каб выключыць адладку па USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Выберыце, каб адключыць адладку USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Бесправадная адладка падключана"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Націсніце, каб выключыць бесправадную адладку"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Выберыце, каб адключыць бесправадную адладку."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Тэставы рэжым уключаны"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Каб выключыць тэставы рэжым, скіньце налады да заводскіх значэнняў."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Паслядоўная кансоль уключана"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Запушчаны ў фонавым рэжыме асноўны сэрвіс з пакета \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" не будзе мець дазволу while-in-use у будучых зборках на мове R. Наведайце сайт go/r-bg-fgs-restriction і адпраўце справаздачу пра памылку."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Павялiчыць гук вышэй рэкамендаванага ўзроўню?\n\nДоўгае праслухоўванне музыкi на вялiкай гучнасцi можа пашкодзiць ваш слых."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Выкарыстоўваць камбінацыю хуткага доступу для спецыяльных магчымасцей?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Калі хуткі доступ уключаны, вы можаце націснуць абедзве кнопкі гучнасці і ўтрымліваць іх 3 секунды, каб запусціць функцыю спецыяльных магчымасцей."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дазволіць сэрвісу \"<xliff:g id="SERVICE">%1$s</xliff:g>\" мець поўны кантроль над вашай прыладай?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Калі вы ўключыце сэрвіс \"<xliff:g id="SERVICE">%1$s</xliff:g>\", на прыладзе не будзе выкарыстоўвацца блакіроўка экрана для паляпшэння шыфравання даных."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Поўны кантроль прызначаны для сэрвісаў спецыяльных магчымасцей, аднак не падыходзіць для большасці праграм."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Прагляд экрана і кіраванне ім"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Функцыя можа распазнаваць усё змесціва на экране і адлюстроўваць яго паверх іншых праграм."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Прагляд і выкананне дзеянняў"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Гэта функцыя можа адсочваць вашы ўзаемадзеянні з праграмай ці датчыкам апаратнага забеспячэння і ўзаемадзейнічаць з праграмамі ад вашага імя."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дазволіць"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Адмовіць"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Каб пачаць выкарыстоўваць функцыю, націсніце на яе:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Выберыце праграмы, якія будзеце выкарыстоўваць з кнопкай спецыяльных магчымасцей"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Выберыце праграмы, якія будзеце выкарыстоўваць са спалучэннем клавішы гучнасці"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сэрвіс \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" выключаны"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Змяніць ярлыкі"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Скасаваць"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Гатова"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Дэактываваць камбінацыю хуткага доступу"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Выкарыстоўваць камбінацыю хуткага доступу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія колеру"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Некатэгарызаванае"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Вы задалі важнасць гэтых апавяшчэнняў."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Гэта важна, бо з гэтым звязаны пэўныя людзі."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Апавяшчэнне пра карыстальніцкую праграму"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Дазволіць праграме \"<xliff:g id="APP">%1$s</xliff:g>\" стварыць новага Карыстальніка з уліковым запісам <xliff:g id="ACCOUNT">%2$s</xliff:g> (Карыстальнік з гэтым уліковым запісам ужо існуе)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Дазволіць праграме \"<xliff:g id="APP">%1$s</xliff:g>\" стварыць новага Карыстальніка з уліковым запісам <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Дадаць мову"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спецыяльных магчымасцей"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Панэль субцітраў праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" дададзены ў АБМЕЖАВАНУЮ групу"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Асабістыя"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Працоўныя"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Прагляд асабістага змесціва"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Прагляд працоўнага змесціва"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Не ўдалося абагуліць з працоўнымі праграмамі"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Не ўдалося абагуліць з асабістымі праграмамі"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Ваш ІТ-адміністратар заблакіраваў абагульванне паміж асабістымі і працоўнымі профілямі"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Не ўдалося атрымаць доступ да працоўных праграм"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Ваш ІТ-адміністратар не дазволіў вам праглядаць асабістае змесціва ў працоўных праграмах"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Не ўдалося атрымаць доступ да асабістых праграм"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Ваш ІТ-адміністратар не дазволіў вам праглядаць працоўнае змесціва ў асабістых праграмах"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Каб абагульваць змесціва, уключыце працоўны профіль"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Каб праглядаць змесціва, уключыце працоўны профіль"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Няма даступных праграм"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Уключыць"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Запісваць або прайграваць аўдыя ў тэлефонных выкліках"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дазваляе гэтай праграме (калі яна наладжана ў якасці стандартнага набіральніка нумара) запісваць або прайграваць аўдыя ў тэлефонных выкліках."</string>
</resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index ad8fdc6..7f1fb2f 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Организацията ви управлява това устройство и може да наблюдава мрежовия трафик. Докоснете за подробности."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Настройките за местоположението са променени от администратора ви"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Докоснете, за да видите настройките за местоположението."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Инструмент за установяване на държавата"</string>
+ <string name="location_service" msgid="2439187616018455546">"Услуга за местоположението"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Услуга за GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга за известия за сензорите"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Услуга Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Данните на устройството ви ще бъдат изтрити"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Приложението за администриране не може да се използва. Сега данните на устройството ви ще бъдат изтрити.\n\nАко имате въпроси, свържете се с администратора на организацията си."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Отпечатването е деактивиранo от <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Екранната снимка за сигнала за програмна грешка ще бъде направена след <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
<item quantity="one">Екранната снимка за сигнала за програмна грешка ще бъде направена след <xliff:g id="NUMBER_0">%d</xliff:g> секунда.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Екранната снимка със сигнал за програмна грешка бе направена"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Правенето на екранна снимка със сигнал за програмна грешка не бе успешно"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Тих режим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Звукът е ИЗКЛЮЧЕН"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Звукът е ВКЛЮЧЕН"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"достъп до допълнителни команди на доставчика на местоположение"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Разрешава на приложението достъп до допълнителни команди на доставчика на местоположение. Това може да позволи на приложението да смущава работата на GPS или на другите източници на местоположение."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"достъп до точното местоположение само на преден план"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Приложението може да получава данни за точното ви местоположение само когато работи на преден план. Услугите за местоположение трябва да са включени и налице на устройството ви, за да могат да се използват от приложението. Това може да увеличи потреблението на батерията."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Това приложение може да получава данни за точното ви местоположение от съответните услуги, докато се използва. За целта услугите за местоположение трябва да са включени за устройството ви. Това може да увеличи използването на батерията."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"достъп до приблизителното местоположение само на преден план"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Приложението може да получава данни за приблизителното ви местоположение само когато работи на преден план. Услугите за местоположение трябва да са включени и налице на устройството ви, за да могат да се използват от приложението."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Това приложение може да получава данни за приблизителното ви местоположение от съответните услуги, докато се използва. За целта услугите за местоположение трябва да са включени за устройството ви."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"достъп до местоположението на заден план"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Това приложение освен на преден план може да осъществява достъп до местоположението, докато работи на заден план."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Това приложение може да осъществява достъп до местоположението по всяко време – дори когато не се използва."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"промяна на настройките ви за звука"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Разрешава на приложението да променя глобалните настройки за звука, като например силата и това, кой високоговорител се използва за изход."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"записва звук"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Това приложение може по всяко време да прави снимки и да записва видеоклипове посредством камерата."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Разрешаване на достъп на приложение или услуга до системните камери с цел правене на снимки и видеоклипове"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Това привилегировано/системно приложение може по всяко време да прави снимки и да записва видеоклипове посредством системна камера. Необходимо е също на приложението да бъде дадено разрешението android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Разрешаване на приложение или услуга да получават обратни повиквания за отварянето или затварянето на снимачни устройства."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Това приложение за подписване може да получава обратни повиквания, когато снимачно устройство бъде отворено (от кой пакет на приложение) или затворено."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"контролиране на вибрирането"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Разрешава на приложението да контролира устройството за вибрация."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дава възможност на приложението да осъществява достъп до състоянието на вибриране."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Разрешава на приложението да маршрутизира обажданията си чрез системата с цел подобряване на свързаната с тях практическа работа."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"вижда и управлява обажданията чрез системата."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Разрешава на приложението да вижда и управлява текущите обаждания на устройството. Това включва различна информация, като например номерата и състоянието на обажданията."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"продължаване на обаждане от друго приложение"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Разрешава на приложението да продължи обаждане, стартирано в друго приложение."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"четене на телефонните номера"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Разрешава на приложението да осъществява достъп до телефонните номера на устройството."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"постоянно включен екран на автомобила"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"предотвратяване на спящия режим на таблета"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"предотвратяване на активирането на спящия режим на устройството ви с Android TV"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"предотвратява спящ режим на телефона"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дава възможност на приложението да поддържа екрана на автомобила включен."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Разрешава на приложението да предотвратява преминаването на таблета в спящ режим."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дава възможност на приложението да предотвратява преминаването в спящ режим на устройството ви с Android TV."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Разрешава на приложението да предотвратява преминаването на телефона в спящ режим."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Опитайте отново."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Няма регистрирани отпечатъци."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Това устройство няма сензор за отпечатъци."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензорът е временно деактивиран."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Пръст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Лицето не може да се потвърди. Опитайте отново."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Не сте настроили отключването с лице."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Отключването с лице не се поддържа на това устройство."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензорът е временно деактивиран."</string>
<string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобилната мрежа няма достъп до интернет"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Мрежата няма достъп до интернет"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Не може да се осъществи достъп до частния DNS сървър"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Установена е връзка"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> има ограничена свързаност"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Докоснете, за да се свържете въпреки това"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Превключи се към <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Отстраняване на грешки през USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Докоснете, за да изключите"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Изберете, за да деактивирате отстраняването на грешки през USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Функцията за безжично отстраняване на грешки е свързана"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Докоснете, за да изключите безжичното отстраняване на грешки"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изберете, за да деактивирате безжичното отстраняване на грешки."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Режимът за тестова среда е активиран"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Възстановете фабричните настройки, за да деактивирате режима за тестова среда."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Серийната конзола е активирана"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Задният план, който е стартирал услуга на преден план от <xliff:g id="PACKAGENAME">%1$s</xliff:g>, няма да има разрешение при използване в бъдещите компилации R. Моля, вижте go/r-bg-fgs-restriction и подайте сигнал за програмна грешка."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да се увеличи ли силата на звука над препоръчителното ниво?\n\nПродължителното слушане при висока сила на звука може да увреди слуха ви."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Искате ли да използвате пряк път към функцията за достъпност?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Когато прекият път е включен, можете да стартирате дадена функция за достъпност, като натиснете двата бутона за силата на звука и ги задържите за 3 секунди."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Искате ли да разрешите на <xliff:g id="SERVICE">%1$s</xliff:g> да има пълен контрол над устройството ви?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако включите <xliff:g id="SERVICE">%1$s</xliff:g>, устройството ви няма да подобрява шифроването на данни посредством опцията ви за заключване на екрана."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Пълният контрол е подходящ за приложенията, които помагат на потребителите със специални нужди, но не и за повечето приложения."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Преглед и управление на екрана"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Услугата може да чете цялото съдържание на екрана и да показва такова върху други приложения."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Преглед и извършване на действия"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Услугата може да проследява взаимодействията ви с дадено приложение или хардуерен сензор, както и да взаимодейства с приложенията от ваше име."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разреш."</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отказ"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Докоснете дадена функция, за да започнете да я използвате:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Изберете приложения, които да използвате с бутона за достъпност"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Изберете приложения, които да използвате с прекия път чрез бутона за силата на звука"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Изключихте <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Редактиране на преките пътища"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Отказ"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Изключване на прекия път"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Използване на пряк път"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инвертиране на цветовете"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Некатегоризирани"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Зададохте важността на тези известия."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Това е важно заради участващите хора."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Персонализирано известие за приложение"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Да се разреши ли на <xliff:g id="APP">%1$s</xliff:g> да създаде нов потребител с профила <xliff:g id="ACCOUNT">%2$s</xliff:g> (вече съществува потребител с този профил)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Да се разреши ли на <xliff:g id="APP">%1$s</xliff:g> да създаде нов потребител с профила <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Добавяне на език"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню за достъпност"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Лента за надписи на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакетът <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е поставен в ОГРАНИЧЕНИЯ контейнер"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Служебни"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Личен изглед"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Служебен изглед"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Споделянето със служебни приложения не е възможно"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Споделянето с лични приложения не е възможно"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Системният ви администратор е блокирал споделянето между лични и служебни потребителски профили"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Не може да се осъществи достъп до служебните приложения"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Системният ви администратор не разрешава прегледа на лично съдържание в служебните приложения"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Не може да се осъществи достъп до личните приложения"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Системният ви администратор не разрешава прегледа на служебно съдържание в личните приложения"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Включете служебния потребителски профил, за да споделяте съдържание"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Включете служебния потребителски профил, за да преглеждате съдържание"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Няма приложения"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Включване"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Записване или възпроизвеждане на аудио при телефонни обаждания"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дава възможност на това приложение да записва или възпроизвежда аудио при телефонни обаждания, когато е зададено като основно приложение за набиране."</string>
</resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index f5570c6..a6c2592 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"ব্যক্তিগত কাজের জন্য অ্যাডমিন এই ডিভাইস ব্যবহার করার অনুমতি দেয়নি"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"ডিভাইসটি পরিচালনা করা হচ্ছে"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"আপনার প্রতিষ্ঠান এই ডিভাইসটি পরিচালনা করে এবং এটির নেটওয়ার্ক ট্রাফিকের উপরে নজর রাখতে পারে। বিশদ বিবরণের জন্য ট্যাপ করুন।,"</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"আপনার অ্যাডমিন লোকেশন সেটিংস পরিবর্তন করেছেন"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"আপনার লোকেশন সেটিংস দেখার জন্য ট্যাপ করুন।"</string>
+ <string name="country_detector" msgid="7023275114706088854">"দেশ শনাক্তকারী"</string>
+ <string name="location_service" msgid="2439187616018455546">"লোকেশন পরিষেবা"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS পরিষেবা"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"সেন্সর বিজ্ঞপ্তি পরিষেবা"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"গোধূলি পরিষেবা"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"আপনার ডিভাইসটি মুছে ফেলা হবে"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"অ্যাডমিন অ্যাপটি ব্যবহার করা যাবে না। আপনার ডিভাইসে থাকা সবকিছু এখন মুছে ফেলা হবে।\n\nকোনও প্রশ্ন থাকলে আপনার প্রতিষ্ঠানের অ্যাডমিনের সাথে যোগাযোগ করুন।"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> প্রিন্টিং বন্ধ রেখেছে।"</string>
@@ -247,6 +250,8 @@
<item quantity="one"><xliff:g id="NUMBER_1">%d</xliff:g> সেকেন্ডের মধ্যে ত্রুটির প্রতিবেদনের জন্য স্ক্রিনশট নেওয়া হচ্ছে৷</item>
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> সেকেন্ডের মধ্যে ত্রুটির প্রতিবেদনের জন্য স্ক্রিনশট নেওয়া হচ্ছে৷</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"সমস্যা সংক্রান্ত রিপোর্টের স্ক্রিনশট নেওয়া হয়েছে"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"সমস্যার সংক্রান্ত রিপোর্টের স্ক্রিনশট নেওয়া যায়নি"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"নীরব মোড"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"শব্দ বন্ধ করা আছে"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"শব্দ চালু করা আছে"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"অতিরিক্ত লোকেশন প্রদানকারী কমান্ডগুলি অ্যাক্সেস করে"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"লোকেশনের সাথে সম্পর্কিত তথ্য প্রদানকারীর অতিরিক্ত কম্যান্ডগুলিকে অ্যাপ্লিকেশানটিকে মঞ্জুর করে৷ এটি অ্যাপ্লিকেশানটিকে GPS অথবা অন্যান্য লোকেশন নির্ণয়ের সাথে সম্পর্কিত উৎসগুলির ক্রিয়াপ্রণালীর নিয়ন্ত্রণকে মঞ্জুর করতে পারে৷"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"শুধুমাত্র অ্যাপটি খোলা থাকলে আপনার যথাযথ লোকেশন অ্যাক্সেস করা"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"এই অ্যাপটি ফোরগ্রাউন্ডে চলতে থাকলে যেকোনও সময়ে আপনার যথাযথ লোকেশন জানতে পারবে। তাছাড়াও লোকেশন পরিষেবাগুলি অবশ্যই চালু রাখতে হবে এবং আপনার ডিভাইসে সেগুলি উপলভ্য থাকতে হবে যাতে অ্যাপটি সেগুলি ব্যবহার করতে পারে। এর জন্য অতিরিক্ত ব্যাটারি খরচ হতে পারে।"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"এই অ্যাপটি ব্যবহার করার সময় আপনি লোকেশন পরিষেবাগুলি থেকে আপনার যথাযথ লোকেশন পেতে পারেন। আপনার লোকেশন পেতে আপনার ডিভাইসের লোকেশন পরিষেবা চালু করতে হবে। এটি ব্যাটারির ব্যবহার বাড়িয়ে তুলতে পারে।"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"শুধুমাত্র অ্যাপটি খোলা থাকলে আপনার আনুমানিক লোকেশন অ্যাক্সেস করা"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"এই অ্যাপটি যদি ফোরগ্রাউন্ডে চলতে থাকে তবেই শুধুমাত্র আপনার আনুমানিক লোকেশন জানতে পারবে। আপনার ডিভাইসে লোকেশন পরিষেবা চালু ও উপলভ্য থাকতে হবে, তবেই অ্যাপটি সেগুলি ব্যবহার করতে পারবে।"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"এই অ্যাপটি ব্যবহার করার সময় আপনি লোকেশন পরিষেবাগুলি থেকে আপনার আনুমানিক লোকেশন পেতে পারেন। আপনার লোকেশন পেতে আপনার ডিভাইসের লোকেশন পরিষেবা চালু করতে হবে।"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ব্যাকগ্রাউন্ডে লোকেশন অ্যাক্সেস করা"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ফোরগ্রাউন্ড লোকেশন অ্যাক্সেস করা ছাড়াও, ব্যাকগ্রাউন্ডে চলাকালীন এই অ্যাপটি লোকেশন অ্যাক্সেস করতে পারে।"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"অ্যাপটি ব্যবহার না করার সময়ও এই অ্যাপটি যেকোনও সময় লোকেশন অ্যাক্সেস করতে পারে।"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"আপনার অডিও সেটিংস পরিবর্তন করে"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ভলিউম এবং যেখানে স্পিকার আউটপুট হিসাবে ব্যবহৃত হয় সেই সব ক্ষেত্রে গ্লোবাল অডিও সেটিংসের সংশোধন করতে অ্যাপ্লিকেশনটিকে মঞ্জুর করে৷"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"অডিও রেকর্ড"</string>
@@ -431,10 +436,13 @@
<string name="permdesc_camera" msgid="1354600178048761499">"এই অ্যাপটি যে কোনো সময় ক্যামেরা ব্যবহার করে ছবি তুলতে বা ভিডিও রেকর্ড করতে পারে৷"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"সিস্টেম ক্যামেরা ব্যবহার করে ফটো এবং ভিডিও নেওয়ার জন্য অ্যাপ্লিকেশন বা পরিষেবা অ্যাক্সেসের অনুমতি দিন"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"এই প্রিভিলিজ | সিস্টেম অ্যাপটি যেকোনও সময়ে সিস্টেম ক্যামেরা ব্যবহার করে ছবি তুলতে এবং ভিডিও রেকর্ড করতে পারবে। এর জন্য অ্যাপের Android.permission.CAMERA -এর অনুমতি প্রয়োজন"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"ভাইব্রেশন নিয়ন্ত্রণ করুন"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"অ্যাপ্লিকেশানকে কম্পক নিয়ন্ত্রণ করতে দেয়৷"</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ভাইব্রেট করার স্থিতি অ্যাক্সেস করার অনুমতি দিন।"</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"সরাসরি ফোন নম্বরগুলিতে কল করে"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"অ্যাপ্লিকেশানটিকে আপনার হস্তক্ষেপ ছাড়াই ফোন নম্বরগুলিতে কল করতে মঞ্জুর করে৷ এটি অপ্রত্যাশিত পরিমাণ খরচা বা কলের কারণ হতে পারে৷ মনে রাখবেন, এটি অ্যাপ্লিকেশানটির দ্বারা জরুরি নম্বরগুলিতে কল করাকে অনুমতি দেয় না৷ ক্ষতিকারক অ্যাপ্লিকেশানগুলি আপনার সম্মতি ছাড়াই কল করার ফলে আপনাকে অহেতুক পেমেন্ট করতে হতে পারে৷"</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS পরিষেবাতে অ্যাক্সেস"</string>
@@ -445,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"কল করার অভিজ্ঞতা উন্নত করার জন্য অ্যাপকে সিস্টেমের মাধ্যমে তার কলগুলি রুট করতে দেয়।"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"সিস্টেমের মাধ্যমে কল দেখা এবং নিয়ন্ত্রণ করা।"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ডিভাইসে চালু আছে এমন কল দেখতে এবং নিয়ন্ত্রণ করতে অ্যাপকে অনুমতি দেয়। কল করা হচ্ছে যে নম্বরে সেটি এবং কলের স্ট্যাটাস কী সেই সব তথ্য এতে অন্তর্ভুক্ত।"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"অন্য কোনও অ্যাপ দিয়ে করে থাকা কল চালিয়ে যান"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"অন্য কোনও অ্যাপ দিয়ে কল করলে এই অ্যাপটিকে সেটি চালিয়ে যেতে দেয়।"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ফোন নম্বরগুলি পড়া হোক"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"অ্যাপটিকে এই ডিভাইসের ফোন নম্বরগুলি অ্যাক্সেস করতে দেয়।"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"গাড়ির স্ক্রিন চালু রাখা আছে"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ঘুমানো থেকে ট্যাবলেটকে প্রতিরোধ করে"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"আপনার Android TV ডিভাইসকে স্লিপ মোডে চলে যাওয়া থেকে আটকান"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ঘুমানো থেকে ফোনটিকে প্রতিরোধ করে"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"গাড়ির স্ক্রিন চালু রাখতে অ্যাপকে অনুমতি দেয়।"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"অ্যাপ্লিকেশানকে ট্যাবলেট নিদ্রায় যাওয়া থেকে প্রতিরোধ করার মঞ্জুরি দেয়৷"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"অ্যাপটিকে আপনার Android TV ডিভাইস স্লিপ মোডে চলে যাওয়া থেকে আটকানোর অনুমতি দেয়।"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"অ্যাপ্লিকেশানকে ফোনকে নিদ্রায় যাওয়া থেকে প্রতিরোধ করার মঞ্জুরি দেয়৷"</string>
@@ -549,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"আবার চেষ্টা করুন৷"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"কোনও আঙ্গুলের ছাপ নথিভুক্ত করা হয়নি।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"এই ডিভাইসে আঙ্গুলের ছাপ নেওয়ার সেন্সর নেই।"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"সেন্সর অস্থায়ীভাবে বন্ধ করা আছে।"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"আঙ্গুল <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"আপনার মুখ যাচাই করা যাচ্ছে না। আবার চেষ্টা করুন।"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"এখনও মুখের সাহায্যে আনলক করার সুবিধা সেট-আপ করেননি।"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"এই ডিভাইসে মুখের সাহায্যে আনলক করার সুবিধাটি কাজ করে না।"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"সেন্সর অস্থায়ীভাবে বন্ধ করা আছে।"</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> ফেস"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"মোবাইল নেটওয়ার্কে কোনও ইন্টারনেট অ্যাক্সেস নেই"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"নেটওয়ার্কে কোনও ইন্টারনেট অ্যাক্সেস নেই"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ব্যক্তিগত ডিএনএস সার্ভার অ্যাক্সেস করা যাবে না"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"কানেক্ট করা হয়েছে"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>-এর সীমিত কানেক্টিভিটি আছে"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"তবুও কানেক্ট করতে ট্যাপ করুন"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> এ পাল্টানো হয়েছে"</string>
@@ -1321,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ডিবাগিং কানেক্ট হয়েছে"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"ইউএসবি ডিবাগিং বন্ধ করতে ট্যাপ করুন"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ডিবাগিং অক্ষম করতে বেছে নিন।"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ওয়্যারলেস ডিবাগিং কানেক্ট করা হয়েছে"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ওয়্যারলেস ডিবাগিং বন্ধ করতে ট্যাপ করুন"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ওয়্যারলেস ডিবাগিং বন্ধ করতে বেছে নিন।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"টেস্ট হারনেস মোড চালু আছে"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"টেস্ট হারনেস মোড বন্ধ করতে ফ্যাক্টরি রিসেট করুন।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"সিরিয়াল কনসোল চালু করা হয়েছে"</string>
@@ -1624,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> থেকে শুরু হওয়া ফোরগ্রাউন্ড পরিষেবাটির ভবিষ্যতে আর বিল্ডগুলিতে ব্যবহারের অনুমতি নেই। go/r-bg-fgs-restriction দেখুন এবং বাগরিপোর্ট জমা দিন।"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"প্রস্তাবিত স্তরের চেয়ে বেশি উঁচুতে ভলিউম বাড়াবেন?\n\nউঁচু ভলিউমে বেশি সময় ধরে কিছু শুনলে আপনার শ্রবনশক্তির ক্ষতি হতে পারে।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"অ্যাক্সেসযোগ্যতা শর্টকাট ব্যবহার করবেন?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"শর্টকাট চালু করা থাকাকালীন দুটি ভলিউম বোতাম একসাথে ৩ সেকেন্ড টিপে ধরে রাখলে একটি অ্যাকসেসিবিলিটি ফিচার চালু হবে।"</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"যে অ্যাপগুলি আপনাকে অ্যাক্সেসিবিলিটির প্রয়োজন মেটাতে সাহায্য করে সেই অ্যাপগুলির জন্য সম্পূর্ণ নিয়ন্ত্রণের বিষয়টি উপযুক্ত, কিন্তু তা বলে সমস্ত অ্যাপের জন্য নয়।"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"স্ক্রিন দেখে নিয়ন্ত্রণ করা"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"এটি স্ক্রিনের সমস্ত কন্টেন্ট পড়তে এবং অন্য অ্যাপেও কন্টেন্ট ডিসপ্লে করতে পারে।"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"দেখুন এবং কাজটি করুন"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"এটি কোনও একটি অ্যাপের সাথে অথবা হার্ডওয়্যার সেন্সরের সাথে আপনার ইন্টার্যাকশন ট্র্যাক করতে এবং আপনার হয়ে বিভিন্ন অ্যাপের সাথে ইন্টার্যাক্ট করতে পারে।"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"অনুমতি দিন"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"খারিজ করুন"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"শর্টকাট এডিট করুন"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"বাতিল করুন"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"শর্টকাট বন্ধ করুন"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"শর্টকাট ব্যবহার করুন"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"রঙ উল্টানো"</string>
@@ -1848,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"বিভাগ নির্ধারিত নয়"</string>
<string name="importance_from_user" msgid="2782756722448800447">"আপনি এই বিজ্ঞপ্তিগুলির গুরুত্ব সেট করেছেন।"</string>
<string name="importance_from_person" msgid="4235804979664465383">"লোকজন জড়িত থাকার কারণে এটি গুরুত্বপূর্ণ।"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"কাস্টম অ্যাপ বিজ্ঞপ্তি"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g>-এ (একজন ব্যবহারকারী এই অ্যাকাউন্টে আগে থেকেই রয়েছেন) একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি <xliff:g id="APP">%1$s</xliff:g>-কে দেবেন?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g>-এ একজন নতুন ব্যবহারকারী তৈরি করার অনুমতি <xliff:g id="APP">%1$s</xliff:g>-কে দেবেন?"</string>
<string name="language_selection_title" msgid="52674936078683285">"একটি ভাষা যোগ করুন"</string>
@@ -2019,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"অ্যাক্সেসিবিলিটি মেনু"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর ক্যাপশন বার।"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> সীমাবদ্ধ গ্রুপে অন্তর্ভুক্ত করা হয়েছে"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ব্যক্তিগত"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"অফিস"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ব্যক্তিগত ভিউ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"অফিসের ভিউ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"অফিস অ্যাপের সাথে শেয়ার করা যাচ্ছে না"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ব্যক্তিগত অ্যাপের সাথে শেয়ার করা যাচ্ছে না"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"আপনার আইটি অ্যাডমিন ব্যক্তিগত ও অফিস অ্যাপের মধ্যে শেয়ার করা ব্লক করে রেখেছেন"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"অফিসের অ্যাপ অ্যাক্সেস করা যাচ্ছে না"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"আপনার আইটি অ্যাডমিন আপনাকে অফিস অ্যাপে ব্যক্তিগত কন্টেন্ট দেখতে দেয় না"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ব্যক্তিগত অ্যাপ অ্যাক্সেস করা যাচ্ছে না"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"আপনার আইটি অ্যাডমিন আপনাকে ব্যক্তিগত অ্যাপে অফিসের কন্টেন্ট দেখতে দেয় না"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"কন্টেন্ট শেয়ার করার জন্য অফিসের প্রোফাইল চালু করুন"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"কন্টেন্ট দেখার জন্য অফিসের প্রোফাইল চালু করুন"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"কোনও অ্যাপ উপলভ্য নেই"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"চালু করুন"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"টেলিফোন কলে অডিও রেকর্ড বা প্লে করুন"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ডিফল্ট ডায়ালার অ্যাপ্লিকেশন হিসেবে বেছে নেওয়া হলে, টেলিফোন কলে অডিও রেকর্ড বা প্লে করার জন্য এই অ্যাপকে অনুমতি দেয়।"</string>
</resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index fd53b69..d8326fc 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -193,8 +193,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"Administrator je ustupio uređaj za ličnu upotrebu"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"Uređajem se upravlja."</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može pratiti mrežni saobraćaj. Dodirnite za detalje."</string>
- <string name="location_changed_notification_title" msgid="4119726617105166830">"Postavke lokacije je promijenio vaš administrator"</string>
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Administrator je promijenio postavke lokacije"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da vidite postavke lokacije."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string>
+ <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Usluga GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga obavještavanja putem senzora"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Usluga Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti izbrisan"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Nije moguće koristiti aplikaciju administratora. Potpuno će se izbrisati podaci na vašem uređaju.\n\nAko imate pitanja, obratite se administratoru svoje organizacije."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="few">Snimak ekrana za prijavu greške pravim za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
<item quantity="other">Snimak ekrana za prijavu greške pravim za <xliff:g id="NUMBER_1">%d</xliff:g> sekundi.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Napravljen je snimak ekrana s izvještajem o grešci"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Snimanje ekrana s izvještajem o grešci nije uspjelo"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Nečujni način rada"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je isključen"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je uključen"</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim informacijama o lokaciji"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Dozvoljava aplikaciji pristup dodatnim naredbama pružatelja lokacija. Ovim se aplikaciji može dozvoliti da ometa rad GPS-a ili drugih izvora lokacija."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristup tačnoj lokaciji samo u prvom planu"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ova aplikacija može odrediti vašu tačnu lokaciju samo kada je u prvom planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da ih aplikacija može koristiti. To može dovesti do povećane potrošnje baterije."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ova aplikacija može odrediti vašu tačnu lokaciju iz usluga lokacije dok se aplikacija koristi. Da aplikacija odredi lokaciju, usluge lokacije moraju biti uključene na uređaju. Ovim se može povećati potrošnja baterija."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristup približnoj lokaciji samo u prvom planu"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ova aplikacija može odrediti vašu približnu lokaciju samo kada je u prvom planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da ih aplikacija može koristiti."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ova aplikacija može odrediti vašu približnu lokaciju iz usluga lokacije dok se aplikacija koristi. Da aplikacija odredi lokaciju, usluge lokacije moraju biti uključene na uređaju."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ova aplikacija može pristupati lokaciji dok radi u pozadini, pored pristupa lokaciji u prvom planu."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ova aplikacija može pristupiti lokaciji bilo kada, čak i kada se aplikacija ne koristi."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"izmjene postavki zvuka"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Omogućava aplikaciji izmjenu općih postavki zvuka, kao što su jačina zvuka i izbor izlaznog zvučnika."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje audiozapisa"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ova aplikacija može slikati fotografije i snimati videozapise koristeći kameru bilo kada."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Dopustite aplikaciji ili usluzi da pristupa kamerama sistema radi snimanja fotografija i videozapisa"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ova povlaštena | sistemska aplikacija u svakom trenutku može snimati fotografije i videozapise pomoću kamere sistema. Aplikacija također mora imati dopuštenje android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dozvoliti aplikaciji ili usluzi da prima povratne pozive o otvaranju ili zatvaranju kamera."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ova aplikacija za potpisivanje može primati povratne pozive kada se otvara ili zatvara bilo koja kamera (kojim paketom aplikacija)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrola vibracije"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Dozvoljava aplikaciji upravljanje vibracijom."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dozvoljava aplikaciji pristup stanju vibracije."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Dopušta aplikaciji da pozive usmjeri preko sistema radi poboljšanja iskustva pozivanja."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"vidjeti i kontrolirati pozive preko sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Dozvoljava aplikaciji da vidi i kontrolira odlazne pozive na uređaju. To uključuje informacije kao što su brojevi telefona i stanja poziva."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"nastavlja poziv iz druge aplikacije"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Dozvoljava aplikaciji nastavljanje poziva koji je započet u drugoj aplikaciji."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"čitanje telefonskih brojeva"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Dozvoljava aplikaciji pristup telefonskim brojevima uređaja."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ostavi ekran automobila uključenim"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"sprečavanje tableta da uđe u režim mirovanja"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"sprečavanje stupanja Android TV uređaja u stanje mirovanja"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"sprečavanje telefona da uđe u režim mirovanja"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Dozvoljava aplikaciji da ostavi ekran automobila uključenim."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Dozvoljava aplikaciji da spriječi tablet da ode u stanje mirovanja."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Omogućava aplikaciji da spriječi stupanje Android TV uređaja u stanje mirovanja."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Dozvoljava aplikaciji da spriječi telefon da ode u stanje mirovanja."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Pokušajte ponovo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije prijavljen nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor za otisak prsta."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nije moguće potvrditi lice. Pokušajte ponovo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Niste postavili otključavanje licem."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Otključavanje licem nije podržano na ovom uređaju."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string>
<string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1275,7 +1288,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilna mreža nema pristup internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Mreža nema pristup internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Nije moguće pristupiti privatnom DNS serveru"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Povezano"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Mreža <xliff:g id="NETWORK_SSID">%1$s</xliff:g> ima ograničenu povezivost"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Dodirnite da se ipak povežete"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Prebačeno na: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1340,6 +1352,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Otklanjanje grešaka putem USB-a je uspostavljeno"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Dodirnite da isključite otklanjanje grešaka putem USB-a"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Odaberite da onemogućite ispravljanje grešaka koristeći USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bežično otklanjanje grešaka je povezano"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Dodirnite da isključite bežično otklanjanje grešaka"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Odaberite da onemogućite bežično otklanjanje grešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen način rada okvira za testiranje"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Izvršite vraćanje na fabričke postavke da onemogućite način rada okvira za testiranje."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola omogućena"</string>
@@ -1645,10 +1660,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluge iz prvog plana započete u pozadini s web lokacije <xliff:g id="PACKAGENAME">%1$s</xliff:g> neće imati odobrenje za funkciju \"za vrijeme korištenja\" u budućim R verzijama. Pogledajte go/r-bg-fgs-restriction i podnesite izvještaj o greškama."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučenog nivoa?\n\nDužim slušanjem glasnog zvuka možete oštetiti sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li koristiti Prečicu za pristupačnost?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kada je prečica uključena, pritiskom i držanjem oba dugmeta za jačinu zvuka u trajanju od 3 sekunde pokrenut će se funkcija pristupačnosti."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Dozvoliti da usluga <xliff:g id="SERVICE">%1$s</xliff:g> ima punu kontrolu nad vašim uređajem?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite uslugu <xliff:g id="SERVICE">%1$s</xliff:g>, uređaj neće koristiti zaključavanje ekrana za poboljšanje šifriranja podataka."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Puna kontrola je prikladna za aplikacije koje vam pomažu kod potreba za pristupačnosti, ali nije za većinu aplikacija."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Prikaz i kontrola ekrana"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Može čitati sav sadržaj na ekranu i prikazivati sadržaj u drugim aplikacijama."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Prikaz i izvršavanje radnji"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Može pratiti vaše interakcije s aplikacijom ili hardverskim senzorom te ostvariti interakciju s aplikacijama umjesto vas."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dozvoli"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite funkciju da je počnete koristiti:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Odaberite aplikacije koje ćete koristiti s dugmetom pristupačnost"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Odaberite aplikacije koje ćete koristiti s tipkom prečice za jačinu zvuka"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi prečice"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Otkaži"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečicu"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Koristi prečicu"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
@@ -1879,6 +1906,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nije kategorizirano"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Vi određujete značaj ovih obavještenja."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ovo je značajno zbog osoba koje su uključene."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Prilagođeno obavještenje aplikacije"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Dozvoliti aplikaciji <xliff:g id="APP">%1$s</xliff:g> da kreira novog korisnika s računom <xliff:g id="ACCOUNT">%2$s</xliff:g> (korisnik s ovim računom već postoji)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Dozvoliti aplikaciji <xliff:g id="APP">%1$s</xliff:g> da kreira novog korisnika s računom <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dodajte jezik"</string>
@@ -2052,22 +2080,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni za pristupačnost"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka za natpis aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je stavljen u odjeljak OGRANIČENO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Lično"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Posao"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Prikaz ličnog sadržaja"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Prikaz poslovnog sadržaja"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nije moguće dijeliti s poslovnim aplikacijama"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nije moguće dijeliti s ličnim aplikacijama"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT administrator je blokirao dijeljenje između ličnih i poslovnih profila"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nije moguće pristupiti poslovnim aplikacijama"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT administrator ne dozvoljava da pregledate lični sadržaj u poslovnim aplikacijama"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nije moguće pristupiti ličnim aplikacijama"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT administrator ne dozvoljava da pregledate poslovni sadržaj u ličnim aplikacijama"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Uključite poslovni profil da dijelite sadržaj"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Uključite poslovni profil da pregledate sadržaj"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nema dostupnih aplikacija"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Uključi"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili reproduciranje zvuka u telefonskim pozivima"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kad je ova aplikacija postavljena kao zadana aplikacija za pozivanje, omogućava joj snimanje ili reproduciranje zvuka u telefonskim pozivima."</string>
</resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index fdb8f45..e48dad3 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"La teva organització gestiona aquest dispositiu i és possible que supervisi el trànsit de xarxa. Toca per obtenir més informació."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"L\'administrador ha modificat la configuració d\'ubicació"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toca per veure la configuració d\'ubicació."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servei d\'ubicació"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Servei GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Servei de notificacions de sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Servei Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"El contingut del dispositiu s\'esborrarà"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"No es pot utilitzar l\'aplicació d\'administració. S\'esborraran les dades del dispositiu.\n\nSi tens cap dubte, contacta amb l\'administrador de la teva organització."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha desactivat la impressió."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Es farà una captura de pantalla de l\'informe d\'errors d\'aquí a <xliff:g id="NUMBER_1">%d</xliff:g> segons.</item>
<item quantity="one">Es farà una captura de pantalla de l\'informe d\'errors d\'aquí a <xliff:g id="NUMBER_0">%d</xliff:g> segon.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"S\'ha fet la captura de pantalla amb l\'informe d\'errors"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"No s\'ha pogut fer la captura de pantalla amb l\'informe d\'errors"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mode silenciós"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"So desactivat"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"El so està activat"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accedir a ordres del proveïdor d\'ubicació addicionals"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet que l\'aplicació accedeixi a ordres addicionals del proveïdor d\'ubicacions; per tant, és possible que l\'aplicació pugui interferir en el funcionament del GPS o d\'altres fonts d\'ubicacions."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"accedeix a la ubicació exacta només en primer pla"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aquesta aplicació pot obtenir la teva ubicació exacta només quan està en primer pla. Els serveis d\'ubicació han d\'estar activats i disponibles al dispositiu perquè l\'aplicació els pugui utilitzar, i això pot fer que el consum de bateria augmenti."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aquesta aplicació pot obtenir la teva ubicació exacta a través dels serveis d\'ubicació mentre s\'està utilitzant. Els serveis d\'ubicació del dispositiu han d\'estar activats perquè l\'aplicació pugui obtenir la ubicació, i això pot fer que l\'ús de la bateria augmenti."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accedeix a la ubicació aproximada només en primer pla"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aquesta aplicació pot obtenir la teva ubicació aproximada només quan està en primer pla. Els serveis d\'ubicació han d\'estar activats i disponibles al dispositiu perquè l\'aplicació els pugui utilitzar."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aquesta aplicació pot obtenir la teva ubicació aproximada a través dels serveis d\'ubicació mentre s\'està utilitzant. Els serveis d\'ubicació del dispositiu han d\'estar activats perquè l\'aplicació pugui obtenir la ubicació."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accedir a la ubicació en segon pla"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aquesta aplicació pot accedir a la ubicació mentre s\'executa en segon pla, a més de poder fer-ho en primer pla."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aquesta aplicació pot accedir a la ubicació en qualsevol moment, encara que no s\'estigui utilitzant."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"canviar la configuració d\'àudio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet que l\'aplicació modifiqui la configuració d\'àudio general, com ara el volum i l\'altaveu de sortida que es fa servir."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"gravar àudio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Aquesta aplicació pot fer fotos i gravar vídeos amb la càmera en qualsevol moment."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permet que una aplicació o un servei tinguin accés a les càmeres del sistema per fer fotos i vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Aquesta aplicació del sistema pot fer fotos i gravar vídeos amb una càmera del sistema en qualsevol moment. L\'aplicació també ha de tenir el permís android.permission.CAMERA per accedir-hi"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permet que una aplicació o un servei pugui rebre crides de retorn sobre els dispositius de càmera que s\'obren o es tanquen."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Aquesta aplicació de signatures pot rebre crides de retorn quan s’obre o es tanca un dispositiu de càmera (segons el paquet d’aplicació)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibració"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permet que l\'aplicació controli el vibrador."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet que l\'aplicació accedeixi a l\'estat de vibració."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permet que l\'aplicació encamini les trucades a través del sistema per millorar-ne l\'experiència."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"consulta i controla les trucades a través del sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permet que l\'aplicació consulti i controli les trucades en curs al dispositiu. Inclou informació com ara l\'estat i els números de les trucades."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Continua una trucada d\'una altra aplicació"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permet que l\'aplicació continuï una trucada que s\'havia iniciat en una altra aplicació."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"llegir els números de telèfon"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permet que l\'aplicació accedeixi als números de telèfon del dispositiu."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"mantén la pantalla del cotxe encesa"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"evita que la tauleta entri en mode de repòs"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evita que el dispositiu Android TV activi el mode en repòs"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"impedir que el telèfon entri en mode de repòs"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permet que l\'aplicació mantingui la pantalla del cotxe encesa."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permet que l\'aplicació impedeixi que la tauleta entri en repòs."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permet que l\'aplicació impedeixi que el dispositiu Android TV entri en repòs."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permet que l\'aplicació impedeixi que el telèfon entri en repòs."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Torna-ho a provar."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No s\'ha registrat cap empremta digital."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Aquest dispositiu no té sensor d\'empremtes dactilars."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"El sensor està desactivat temporalment."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dit <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"No es pot verificar la cara. Torna-ho a provar."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"No has configurat el desbloqueig facial"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"El desbloqueig facial no és compatible amb el dispositiu."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"El sensor està desactivat temporalment."</string>
<string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"La xarxa mòbil no té accés a Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"La xarxa no té accés a Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"No es pot accedir al servidor DNS privat"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connectat"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> té una connectivitat limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toca per connectar igualment"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Actualment en ús: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuració per USB activada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Toca per desactivar la depuració per USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecciona per desactivar la depuració per USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"S\'ha connectat la depuració sense fil"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toca per desactivar la depuració sense fil"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona per desactivar la depuració sense fil."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"S\'ha activat el mode Agent de prova"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Si vols desactivar el mode Agent de prova, restableix les dades de fàbrica."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"S\'ha activat la consola de sèrie"</string>
@@ -1499,7 +1514,7 @@
<string name="shareactionprovider_share_with_application" msgid="4902832247173666973">"Comparteix amb <xliff:g id="APPLICATION_NAME">%s</xliff:g>"</string>
<string name="content_description_sliding_handle" msgid="982510275422590757">"Llisca el dit. Mantén premut."</string>
<string name="description_target_unlock_tablet" msgid="7431571180065859551">"Llisca per desbloquejar."</string>
- <string name="action_bar_home_description" msgid="1501655419158631974">"Torna a la pàgina d\'inici"</string>
+ <string name="action_bar_home_description" msgid="1501655419158631974">"Navega fins a la pàgina d\'inici"</string>
<string name="action_bar_up_description" msgid="6611579697195026932">"Navega cap amunt"</string>
<string name="action_menu_overflow_description" msgid="4579536843510088170">"Més opcions"</string>
<string name="action_bar_home_description_format" msgid="5087107531331621803">"%1$s, %2$s"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servei en primer pla (<xliff:g id="PACKAGENAME">%1$s</xliff:g>) iniciat en segon pla no tindrà permís durant l\'ús en compilacions R posteriors. Consulta la pàgina go/r-bg-fgs-restriction i presenta un informe d\'errors."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vols apujar el volum per sobre del nivell recomanat?\n\nSi escoltes música a un volum alt durant períodes llargs, pots danyar-te l\'oïda."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vols fer servir la drecera d\'accessibilitat?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si la drecera està activada, prem els dos botons de volum durant 3 segons per iniciar una funció d\'accessibilitat."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vols permetre que <xliff:g id="SERVICE">%1$s</xliff:g> controli el teu dispositiu per complet?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si actives <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositiu no farà servir el bloqueig de pantalla per millorar l\'encriptació de dades."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total és adequat per a les aplicacions que t\'ajuden amb l\'accessibilitat, però no per a la majoria de les aplicacions."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Veure i controlar la pantalla"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pot llegir tot el contingut de la pantalla i mostrar contingut sobre altres aplicacions."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Mostra i duu a terme accions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pot fer un seguiment de les teves interaccions amb una aplicació o un sensor de maquinari, i interaccionar amb aplicacions en nom teu."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permet"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denega"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toca una funció per començar a utilitzar-la:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Tria les aplicacions que vols fer servir amb el botó d\'accessibilitat"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Tria les aplicacions que vols fer servir amb la drecera per a tecles de volum"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> s\'ha desactivat"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edita les dreceres"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel·la"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fet"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactiva la drecera"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilitza la drecera"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversió dels colors"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sense classificar"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Has definit la importància d\'aquestes notificacions."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Aquest missatge és important per les persones implicades."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificació d\'aplicació personalitzada"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Concedeixes permís a <xliff:g id="APP">%1$s</xliff:g> per crear un usuari amb el compte <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Ja hi ha un usuari amb aquest compte.)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Concedeixes permís a <xliff:g id="APP">%1$s</xliff:g> per crear un usuari amb el compte <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Afegeix un idioma"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú d\'accessibilitat"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de títol de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> s\'ha transferit al segment RESTRINGIT"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Feina"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Visualització personal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Visualització de treball"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"No es pot compartir amb les aplicacions de treball"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"No es pot compartir amb les aplicacions personals"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"L\'administrador de TI ha bloquejat la compartició entre perfils personals i de treball"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"No es pot accedir a les aplicacions de treball"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"L\'administrador de TI no et permet veure el contingut personal a les aplicacions de treball"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"No es pot accedir a les aplicacions personals"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"L\'administrador de TI no et permet veure el contingut de feina a les aplicacions personals"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Activa el perfil de treball per compartir contingut"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Activa el perfil de treball per veure contingut"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"No hi ha cap aplicació disponible"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activa"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar o reproduir àudio en trucades"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet que l\'aplicació gravi o reprodueixi àudio en trucades si està assignada com a aplicació de marcador predeterminada."</string>
</resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index a1ff467..ac80bb6 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Toto zařízení je spravováno vaší organizací, která může sledovat síťový provoz. Podrobnosti zobrazíte klepnutím."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Administrátor změnil nastavení polohy"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Klepnutím zobrazíte nastavení polohy."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor země"</string>
+ <string name="location_service" msgid="2439187616018455546">"Služby určování polohy"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Služba GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Služba oznámení ze senzoru"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Služba detekce soumraku"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Zařízení bude vymazáno"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Aplikaci pro správu nelze použít. Zařízení teď bude vymazáno.\n\nV případě dotazů vám pomůže administrátor organizace."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Aplikace <xliff:g id="OWNER_APP">%s</xliff:g> tisk zakazuje."</string>
@@ -251,6 +256,8 @@
<item quantity="other">Snímek obrazovky pro zprávu o chybě bude pořízen za <xliff:g id="NUMBER_1">%d</xliff:g> sekund.</item>
<item quantity="one">Snímek obrazovky pro zprávu o chybě bude pořízen za <xliff:g id="NUMBER_0">%d</xliff:g> sekundu.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Se zprávou o chybě byl pořízen snímek obrazovky"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Pořízení snímku obrazovky se zprávou o chybě se nezdařilo"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tichý režim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je VYPNUTÝ."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je zapnutý"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"přístup k dalším příkazům poskytovatele polohy"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Umožňuje aplikaci přístup k dalším příkazům poskytovatele polohy. To aplikaci umožní zasahovat do fungování systému GPS a dalších zdrojů polohy."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"přístup k přesné poloze jen na popředí"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Tato aplikace může zjistit vaši přesnou polohu, jen když běží na popředí. Aby aplikace mohla služby určování polohy používat, musí být v zařízení dostupné a musí být zapnuté. To může vést k rychlejšímu vybíjení baterie."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Když tuto aplikaci používáte, může pomocí služeb určování polohy získat vaši přesnou polohu. Aby ji mohla zjistit, musí být na zařízení zapnuté služby určování polohy. Tato funkce může vést k rychlejšímu vybíjení baterie."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"přístup k přibližné poloze jen na popředí"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Tato aplikace může zjistit vaši přibližnou polohu, jen když běží na popředí. Aby aplikace mohla služby určování polohy používat, musí být v zařízení dostupné a musí být zapnuté."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Když tuto aplikaci používáte, může pomocí služeb určování polohy získat vaši přibližnou polohu. Aby ji mohla zjistit, musí být na zařízení zapnuté služby určování polohy."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"přístup k poloze na pozadí"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Tato aplikace má přístup k poloze, nejen když je v popředí, ale i když běží na pozadí."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tato aplikace má kdykoliv přístup k poloze (i když ji zrovna nepoužíváte)."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"změna nastavení zvuku"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikaci změnit globální nastavení zvuku, například hlasitost či reproduktor pro výstup zvuku."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"nahrávání zvuku"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Tato aplikace může pomocí fotoaparátu kdykoli pořídit snímek nebo nahrát video."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Povolte aplikaci nebo službě k systémovým fotoaparátům za účelem pořizování fotek a videí"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Tato privilegovaná | systémová aplikace může pomocí fotoaparátu kdykoli pořídit snímek nebo nahrát video. Aplikace musí zároveň mít oprávnění android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Povolte aplikaci nebo službě přijímat zpětná volání o otevření nebo zavření zařízení s fotoaparátem."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Tato podpisová aplikace může přijímat zpětná volání při otevírání nebo zavírání jakéhokoli zařízení s fotoaparátem (balíčkem příslušné aplikace)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ovládání vibrací"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Umožňuje aplikaci ovládat vibrace."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Umožňuje aplikaci přístup ke stavu vibrací."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Umožňuje aplikaci směrovat volání prostřednictvím systému za účelem vylepšení funkcí volání."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"zobrazení a ovládání hovorů v systému."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Umožňuje aplikaci zobrazit a ovládat probíhající hovory v zařízení. Zahrnuje to informace jako zúčastněna čísla a stav hovoru."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"pokračování v hovoru v jiné aplikaci"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Umožňuje aplikace pokračovat v hovoru, který byl zahájen v jiné aplikaci."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"přístup k telefonním číslům"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Umožňuje aplikaci přístup k telefonním číslům v zařízení."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ponechání zapnuté obrazovky auta"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"bránění přechodu tabletu do režimu spánku"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"bránění přechodu zařízení Android TV do režimu spánku"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"bránění přechodu telefonu do režimu spánku"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Umožňuje aplikaci nechat obrazovku auta zapnutou."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Umožňuje aplikaci zabránit přechodu tabletu do režimu spánku."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Umožňuje aplikaci zabránit přechodu zařízení Android TV do režimu spánku."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Umožňuje aplikaci zabránit přechodu telefonu do režimu spánku."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Zkuste to znovu."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nejsou zaregistrovány žádné otisky prstů."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Toto zařízení nemá snímač otisků prstů."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je dočasně deaktivován."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Obličej se nepodařilo ověřit. Zkuste to znovu."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Ověření obličejem nemáte nastavené."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Odemknutí obličejem na tomto zařízení není podporováno."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je dočasně deaktivován."</string>
<string name="face_name_template" msgid="3877037340223318119">"Obličej <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilní síť nemá přístup k internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Síť nemá přístup k internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Nelze získat přístup k soukromému serveru DNS"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Připojeno"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Síť <xliff:g id="NETWORK_SSID">%1$s</xliff:g> umožňuje jen omezené připojení"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Klepnutím se i přesto připojíte"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Přechod na síť <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Ladění přes USB připojeno"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím vypnete ladění přes USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Vyberte, chcete-li zakázat ladění přes USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bezdrátové ladění je připojeno"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Klepnutím vypnete bezdrátové ladění"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Vyberte, chcete-li zakázat bezdrátové ladění."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Režim správce testů je aktivní"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Chcete-li deaktivovat režim správce testů, restartujte zařízení do továrního nastavení."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Je zapnutá sériová konzole"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Služba v popředí z balíčku <xliff:g id="PACKAGENAME">%1$s</xliff:g>, která byla spuštěna na pozadí, v budoucích sestavenách typu R nebude mít oprávnění ke spuštění při používání. Přejděte na adresu go/r-bg-fgs-restriction a vyplňte zprávu o chybě."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšit hlasitost nad doporučenou úroveň?\n\nDlouhodobý poslech hlasitého zvuku může poškodit sluch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použít zkratku přístupnosti?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Když je tato zkratka zapnutá, můžete funkci přístupnosti spustit tím, že na tři sekundy podržíte obě tlačítka hlasitosti."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete službě <xliff:g id="SERVICE">%1$s</xliff:g> povolit, aby nad vaším zařízením měla plnou kontrolu?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Pokud zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, zařízení nebude používat zámek obrazovky k vylepšení šifrování dat."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Plná kontrola je vhodná u aplikací, které vám pomáhají s usnadněním přístupu, nikoli u většiny aplikací."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Zobrazení a ovládání obrazovky"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Může číst veškerý obsah obrazovky a zobrazovat obsah přes ostatní aplikace."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Zobrazení a provádění akcí"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Může sledovat vaše interakce s aplikací nebo hardwarovým senzorem a komunikovat s aplikacemi namísto vás."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povolit"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zakázat"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Chcete-li některou funkci začít používat, klepněte na ni:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Vyberte aplikace, které budete používat s tlačítkem přístupnosti"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Vyberte aplikace, které budete používat se zkratkou tlačítka hlasitosti"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> byla vypnuta"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upravit zkratky"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Zrušit"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vypnout zkratku"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použít zkratku"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Převrácení barev"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Neklasifikováno"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Důležitost oznámení určujete vy."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Tato zpráva je důležitá kvůli lidem zapojeným do konverzace."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Vlastní oznámení aplikace"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Povolit aplikaci <xliff:g id="APP">%1$s</xliff:g> vytvořit nového uživatele s účtem <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Uživatel s tímto účtem již existuje.)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Povolit aplikaci <xliff:g id="APP">%1$s</xliff:g> vytvořit nového uživatele s účtem <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Přidat jazyk"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Nabídka usnadnění přístupu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popisek aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balíček <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> byl vložen do sekce OMEZENO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Osobní"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Pracovní"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Osobní zobrazení"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Pracovní zobrazení"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Sdílení s pracovními aplikacemi je zakázáno"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Sdílení s osobními aplikacemi je zakázáno"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Sdílení mezi osobními a pracovními profily zablokoval váš administrátor IT"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Pracovní aplikace nelze použít"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Zobrazení osobního obsahu v pracovních aplikacích zakazuje váš administrátor IT"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Osobní aplikace nelze použít"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Zobrazení pracovního obsahu v osobních aplikacích zakazuje váš administrátor IT"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Chcete-li sdílet obsah, zapněte pracovní profil"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Chcete-li zobrazit obsah, zapněte pracovní profil"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Žádné aplikace k dispozici"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Zapnout"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Záznam a přehrávání zvuků při telefonických hovorech"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Pokud aplikace bude mít toto oprávnění a bude vybrána jako výchozí aplikace pro vytáčení, bude při telefonických hovorech moci přehrávat a zaznamenávat zvuky."</string>
</resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 10da1e7..7258714 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Din organisation administrerer denne enhed og kan overvåge netværkstrafik. Tryk for at se info."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Placeringsindstillinger blev ændret af din administrator"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tryk for at se dine placeringsindstillinger."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Landeregistrering"</string>
+ <string name="location_service" msgid="2439187616018455546">"Placeringstjeneste"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-tjeneste"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Tjenesten Sensor Notification"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Tjenesten Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheden slettes"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administrationsappen kan ikke bruges. Enheden vil nu blive ryddet. \n\nKontakt din organisations administrator, hvis du har spørgsmål."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Udskrivning er deaktiveret af <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Der tages et screenshot til fejlrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekund.</item>
<item quantity="other">Der tages et screenshot til fejlrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Der er taget et screenshot af fejlrapporten"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Der kunne ikke tages et screenshot af fejlrapporten"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Lydløs"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Lyden er slået FRA"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Lyden er TIL"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"få adgang til yderligere kommandoer for placeringsudbyder"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tillader, at appen kan få adgang til yderligere kommandoer for placeringsudbydere. Dette kan gøre det muligt for appen at forstyrre GPS-funktionen eller andre placeringskilder."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"få kun adgang til nøjagtig placering i forgrunden"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Denne app kan kun finde din nøjagtige placering, når den er i forgrunden. Placeringstjenester skal være aktiverede og tilgængelige på din telefon, før appen kan anvende dem. Dette kan øge batteriforbruget."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Denne app kan finde din nøjagtige placering via placeringstjenester, når appen er i brug. Placeringstjenester skal være aktiveret på din enhed, før appen kan finde din placering. Dette kan øge batteriforbruget."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"få kun adgang til omtrentlig placering i forgrunden"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Denne app kan kun finde din omtrentlige placering, når den er i forgrunden. Placeringstjenester skal være aktiverede og tilgængelige på din enhed, før appen kan anvende dem."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Denne app kan finde din omtrentlige placering via placeringstjenester, når appen er i brug. Placeringstjenester skal være aktiveret på din enhed, før appen kan finde din placering."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"adgang til placering i baggrunden"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Foruden adgang til placering ved kørsel i forgrunden har denne app også adgang til din placering, mens den kører i baggrunden."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Denne app kan til enhver tid få adgang til din placering, selv når den ikke er i brug."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"skifte dine lydindstillinger"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tillader, at appen kan ændre globale lydindstillinger, som f.eks. lydstyrke og hvilken højttaler der bruges til output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"optage lyd"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Med denne app kan du tage billeder og optage video med kameraet når som helst."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Giv en app eller tjeneste adgang til systemkameraer for at tage billeder og optage video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Denne privilegerede app | systemapp kan tage billeder og optage video med kameraet når som helst. Appen skal også have tilladelsen android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillad, at en app eller tjeneste modtager tilbagekald om kameraenheder, der åbnes eller lukkes."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Denne signaturapp kan modtage tilbagekald, når en kameraenhed åbnes (efter app-pakke) eller lukkes."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"administrere vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Tillader, at appen kan administrere vibratoren."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Tillader, at appen bruger vibration."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Tillader appen at dirigere sine opkald gennem systemet for at forbedre opkaldsoplevelsen."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"se og styre opkald via systemet."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Tillader, at appen kan se og styre igangværende opkald på enheden. Dette omfatter oplysninger såsom telefonnumre og status for opkaldene."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"fortsætte et opkald fra en anden app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Tillader, at appen fortsætter et opkald, der blev startet i en anden app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"læse telefonnumre"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Tillader, at appen får adgang til telefonnumrene på denne enhed."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"hold bilens skærm tændt"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"afholde tabletcomputeren fra at gå i dvale"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"undgå, at din Android TV-enhed ikke går i dvale"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"afholde telefonen fra at gå i dvale"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Tillader, at appen holder bilens skærm tændt."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Tillader, at appen kan forhindre tabletten i at gå i dvale."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Tillader, at appen kan forhindre din Android TV-enhed i at gå i dvale."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Tillader, at appen kan forhindre, at telefonen går i dvale."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Prøv igen."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Der er ikke registreret nogen fingeraftryk."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Denne enhed har ingen fingeraftrykslæser."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensoren er midlertidigt deaktiveret."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Fingeraftryk <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ansigtet kan ikke genkendes. Prøv igen."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Du har ikke konfigureret ansigtslås."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Ansigtslås understøttes ikke på denne enhed."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensoren er midlertidigt deaktiveret."</string>
<string name="face_name_template" msgid="3877037340223318119">"Ansigt <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilnetværket har ingen internetadgang"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Netværket har ingen internetadgang"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Der er ikke adgang til den private DNS-server"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Der er oprettet forbindelse"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> har begrænset forbindelse"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tryk for at oprette forbindelse alligevel"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Der blev skiftet til <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-fejlretning er tilsluttet"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tryk for at deaktivere USB-fejlretning"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Vælg for at deaktivere USB-fejlretning."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Der er oprettet forbindelse til trådløs fejlretning"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tryk for at deaktivere trådløs fejlretning"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Vælg for at deaktivere trådløs fejlretning."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tilstanden Testsele er aktiveret"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Gendan fabriksindstillingerne for at deaktivere tilstanden Testsele."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsollen er aktiveret"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Tjenesten i forgrunden fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, der starter i baggrunden, vil i fremtidige R-builds ikke have tilladelse, mens den er i brug. Se go/r-bg-fgs-restriction, og indsend en fejlrapport."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du skrue højere op end det anbefalede lydstyrkeniveau?\n\nDu kan skade hørelsen ved at lytte til meget høj musik over længere tid."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruge genvejen til Hjælpefunktioner?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når genvejen er aktiveret, kan du starte en hjælpefunktion ved at trykke på begge lydstyrkeknapper i tre sekunder."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du give <xliff:g id="SERVICE">%1$s</xliff:g> fuld kontrol over din enhed?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du aktiverer <xliff:g id="SERVICE">%1$s</xliff:g>, vil enheden ikke benytte skærmlåsen til at forbedre datakrypteringen."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fuld kontrol er velegnet til apps, der hjælper dig med hjælpefunktioner, men ikke de fleste apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Se og styre skærm"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan læse alt indhold på skærmen og vise indhold oven på andre apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og udfør handlinger"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan spore dine interaktioner med en app eller en hardwaresensor og interagere med apps på dine vegne."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillad"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Afvis"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tryk på en funktion for at bruge den:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Vælg, hvilke apps du vil bruge med knappen Hjælpefunktioner"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Vælg, hvilke apps du vil bruge med genvejen via lydstyrkeknapperne"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> er blevet deaktiveret"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Rediger genveje"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Annuller"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Udfør"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Deaktiver genvej"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Brug genvej"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ombytning af farver"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uden kategori"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Du angiver, hvor vigtige disse notifikationer er."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Dette er vigtigt på grund af de personer, det handler om."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Tilpasset appnotifikation"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Vil du give <xliff:g id="APP">%1$s</xliff:g> tilladelse til at oprette en ny bruger med <xliff:g id="ACCOUNT">%2$s</xliff:g> (der findes allerede en bruger med denne konto)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Vil du give <xliff:g id="APP">%1$s</xliff:g> tilladelse til at oprette en nye bruger med <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Tilføj et sprog"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menuen Hjælpefunktioner"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Titellinje for <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blevet placeret i samlingen BEGRÆNSET"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personlig"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Arbejde"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Visningen Personligt"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Visningen Arbejde"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Der kan ikke deles med arbejdsapps"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Der kan ikke deles med personlige apps"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Din it-administrator har blokeret deling mellem personlige apps og arbejdsprofiler"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Du har ikke adgang til arbejdsapps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Din it-administrator har ikke givet dig tilladelse til at se personligt indhold i arbejdsapps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Du har ikke adgang til personlige apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Din it-administrator har ikke givet dig tilladelse til at se arbejdsindhold i personlige apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Aktivér arbejdsprofilen for at dele indhold"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Aktivér arbejdsprofilen for at se indhold"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Ingen tilgængelige apps"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktivér"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Optage eller afspille lyd i telefonopkald"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillader, at denne app kan optage og afspille lyd i telefonopkald, når den er angivet som standardapp til opkald."</string>
</resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 98d9f92..f795826 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Deine Organisation verwaltet dieses Gerät und überprüft unter Umständen den Netzwerkverkehr. Tippe hier, um weitere Informationen zu erhalten."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Standorteinstellungen durch Administrator geändert"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tippe, um deine Standorteinstellungen anzuzeigen."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Standortdienst"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-Dienst"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Die Daten auf deinem Gerät werden gelöscht."</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Die Admin-App kann nicht verwendet werden. Die Daten auf deinem Gerät werden nun gelöscht.\n\nBitte wende dich bei Fragen an den Administrator deiner Organisation."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Drucken wurde von <xliff:g id="OWNER_APP">%s</xliff:g> deaktiviert."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Screenshot für den Fehlerbericht wird in <xliff:g id="NUMBER_1">%d</xliff:g> Sekunden aufgenommen.</item>
<item quantity="one">Screenshot für den Fehlerbericht wird in <xliff:g id="NUMBER_0">%d</xliff:g> Sekunde aufgenommen.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot mit Fehlerbericht erstellt"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Fehler beim Erstellen eines Screenshots mit Fehlerbericht"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Lautlos-Modus"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Ton ist AUS."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Ton ist AN."</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Auf zusätzliche Dienstanbieterbefehle für Standort zugreifen"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ermöglicht der App, auf zusätzliche Standortanbieterbefehle zuzugreifen. Damit könnte die App die Funktionsweise von GPS oder anderen Standortquellen beeinträchtigen."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"Nur bei Ausführung im Vordergrund auf den genauen Standort zugreifen"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Diese App kann deinen genauen Standort nur dann ermitteln, wenn sie im Vordergrund ausgeführt wird. Damit die App Standortdienste nutzen kann, müssen sie auf deinem Gerät aktiviert und verfügbar sein. Hierdurch kann sich der Akkuverbrauch erhöhen."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Wenn diese App verwendet wird, kann sie über die Standortdienste deinen genauen Standort ermitteln. Damit das funktioniert, müssen die Standortdienste auf deinem Gerät aktiviert sein. Das kann den Akkuverbrauch erhöhen."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Nur bei Ausführung im Vordergrund auf den ungefähren Standort zugreifen"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Diese App kann deinen ungefähren Standort nur dann ermitteln, wenn sie im Vordergrund ausgeführt wird. Damit die App Standortdienste nutzen kann, müssen sie auf deinem Gerät aktiviert und verfügbar sein."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Wenn diese App verwendet wird, kann sie über die Standortdienste deinen ungefähren Standort ermitteln. Damit das funktioniert, müssen die Standortdienste auf deinem Gerät aktiviert sein."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"Im Hintergrund auf den Standort zugreifen"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Diese App kann bei Ausführung im Vorder- und Hintergrund auf den Standort zugreifen."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Diese App kann jederzeit auf den Standort zugreifen, auch wenn sie gerade nicht verwendet wird."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Audio-Einstellungen ändern"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ermöglicht der App, globale Audio-Einstellungen zu ändern, etwa die Lautstärke und den Lautsprecher für die Ausgabe."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"Audio aufnehmen"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Diese App kann mit der Kamera jederzeit Bilder und Videos aufnehmen."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Einer App oder einem Dienst Zugriff auf Systemkameras erlauben, um Fotos und Videos aufnehmen zu können"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Diese privilegierte App | System-App kann jederzeit mit einer Systemkamera Bilder und Videos aufnehmen. Die App benötigt auch die Berechtigung \"android.permission.CAMERA\"."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Einer App oder einem Dienst den Empfang von Callbacks erlauben, wenn eine Kamera geöffnet oder geschlossen wird."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Diese Premium-App kann Callbacks empfangen, wenn eine Kamera mit einem Anwendungspaket geöffnet oder geschlossen wird."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"Vibrationsalarm steuern"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Ermöglicht der App, den Vibrationsalarm zu steuern"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ermöglicht der App, auf den Vibrationsstatus zuzugreifen."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Ermöglicht der App, Anrufe über das System durchzuführen, um die Anrufqualität zu verbessern."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Anrufe durch das System einsehen und verwalten."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Ermöglicht der App, aktuelle Anrufe einzusehen und zu verwalten. Dies beinhaltet Informationen wie Nummern für Anrufe und den Status der Anrufe."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Anruf aus einer anderen App weiterführen"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Ermöglicht der App, einen Anruf weiterzuführen, der in einer anderen App begonnen wurde."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"Telefonnummern vorlesen"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Ermöglicht der App, auf die Telefonnummern auf dem Gerät zuzugreifen."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"Autodisplay eingeschaltet lassen"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"Ruhezustand des Tablets deaktivieren"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV-Gerät daran hindern, in den Ruhemodus zu wechseln"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"Ruhezustand deaktivieren"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Ermöglicht der App, das Autodisplay eingeschaltet zu lassen."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Ermöglicht der App, den Ruhezustand des Tablets zu deaktivieren"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Ermöglicht der App zu verhindern, dass das Android TV-Gerät in den Ruhemodus wechselt."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Ermöglicht der App, den Ruhezustand des Telefons zu deaktivieren"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Bitte versuche es noch einmal."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Keine Fingerabdrücke erfasst."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dieses Gerät hat keinen Fingerabdrucksensor."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Der Sensor ist vorübergehend deaktiviert."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Gesichtsprüfung nicht möglich. Noch mal versuchen."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Face Unlock ist nicht eingerichtet."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Face Unlock wird auf diesem Gerät nicht unterstützt."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Der Sensor ist vorübergehend deaktiviert."</string>
<string name="face_name_template" msgid="3877037340223318119">"Gesicht <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobiles Netzwerk hat keinen Internetzugriff"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Netzwerk hat keinen Internetzugriff"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Auf den privaten DNS-Server kann nicht zugegriffen werden"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Verbunden"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Schlechte Verbindung mit <xliff:g id="NETWORK_SSID">%1$s</xliff:g>"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tippen, um die Verbindung trotzdem herzustellen"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Zu <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> gewechselt"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-Debugging aktiviert"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Zum Deaktivieren von USB-Debugging tippen"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB-Debugging deaktivieren: auswählen"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Kabelloses Debugging verbunden"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tippen, um kabelloses Debugging zu deaktivieren"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Auswählen, um kabelloses Debugging zu deaktivieren."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test-Harnischmodus aktiviert"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Setz das Gerät auf die Werkseinstellungen zurück, um den Test-Harnischmodus zu deaktivieren."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serielle Konsole aktiviert"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Der Dienst im Vordergrund von <xliff:g id="PACKAGENAME">%1$s</xliff:g>, der im Hintergrund gestartet wurde, hat in zukünftigen R-Builds keine Zugriffsberechtigung mehr während der Nutzung. Siehe dazu go/r-bg-fgs-restriction und reiche einen Fehlerbericht ein."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lautstärke über den Schwellenwert anheben?\n\nWenn du über einen längeren Zeitraum Musik in hoher Lautstärke hörst, kann dies dein Gehör schädigen."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Verknüpfung für Bedienungshilfen verwenden?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Wenn die Verknüpfung aktiviert ist, kannst du die beiden Lautstärketasten drei Sekunden lang gedrückt halten, um eine Bedienungshilfe zu starten."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> die vollständige Kontrolle über dein Gerät geben?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Wenn du <xliff:g id="SERVICE">%1$s</xliff:g> aktivierst, verwendet dein Gerät nicht die Displaysperre, um die Datenverschlüsselung zu verbessern."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Die vollständige Kontrolle sollte nur für die Apps aktiviert werden, die dir den Zugang zu den App-Funktionen erleichtern. Das ist in der Regel nur ein kleiner Teil der Apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Bildschirm aufrufen und steuern"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Die Funktion kann alle Inhalte auf dem Bildschirm lesen und diese Inhalte über andere Apps anzeigen."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Aktionen aufrufen und durchführen"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Die Funktion kann deine Interaktionen mit einer App oder einem Hardwaresensor verfolgen und in deinem Namen mit Apps interagieren."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Zulassen"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Ablehnen"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Zum Auswählen der gewünschten Funktion tippen:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Apps auswählen, die du mit der Schaltfläche \"Bedienungshilfen\" verwenden möchtest"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Apps auswählen, die du mit der Verknüpfung für die Lautstärketaste verwenden möchtest"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> wurde deaktiviert"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Verknüpfungen bearbeiten"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Abbrechen"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fertig"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Verknüpfung deaktivieren"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Verknüpfung verwenden"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Farbumkehr"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Unkategorisiert"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Du hast die Wichtigkeit dieser Benachrichtigungen festgelegt."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Diese Benachrichtigung ist aufgrund der beteiligten Personen wichtig."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Benutzerdefinierte App-Benachrichtigung"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Es gibt bereits einen Nutzer mit <xliff:g id="ACCOUNT">%2$s</xliff:g>. Möchtest du zulassen, dass <xliff:g id="APP">%1$s</xliff:g> einen neuen Nutzer mit diesem Konto erstellt?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Möchtest du zulassen, dass <xliff:g id="APP">%1$s</xliff:g> einen neuen Nutzer mit <xliff:g id="ACCOUNT">%2$s</xliff:g> erstellt?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Sprache hinzufügen"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menü \"Bedienungshilfen\""</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Untertitelleiste von <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> wurde in den BESCHRÄNKT-Bucket gelegt"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Privat"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Geschäftlich"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Private Ansicht"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Geschäftliche Ansicht"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Teilen mit geschäftlichen Apps nicht möglich"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Teilen mit privaten Apps nicht möglich"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Dein IT-Administrator lässt das Teilen zwischen privaten und geschäftlichen Profilen nicht zu"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Zugriff auf geschäftliche Apps nicht möglich"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Dein IT-Administrator lässt den Zugriff auf private Inhalte in geschäftlichen Apps nicht zu"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Zugriff auf private Apps nicht möglich"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Dein IT-Administrator lässt den Zugriff auf geschäftliche Inhalte in privaten Apps nicht zu"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Zum Teilen von Inhalten muss das Arbeitsprofil aktiviert werden"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Zum Ansehen von Inhalten muss das Arbeitsprofil aktiviert werden"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Keine Apps verfügbar"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktivieren"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audio bei Telefonanrufen aufnehmen oder wiedergeben"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ermöglicht dieser App das Aufnehmen und Wiedergeben von Audio bei Telefonanrufen, wenn sie als Standard-Telefon-App festgelegt wurde."</string>
</resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index e5cb635..78bf139 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ο οργανισμός σας διαχειρίζεται αυτήν τη συσκευή και ενδέχεται να παρακολουθεί την επισκεψιμότητα δικτύου. Πατήστε για λεπτομέρειες."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Οι ρυθμίσεις τοποθεσίας άλλαξαν από τον διαχειριστή"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Πατήστε, για να δείτε τις ρυθμίσεις τοποθεσίας."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Ανιχνευτής χώρας"</string>
+ <string name="location_service" msgid="2439187616018455546">"Υπηρεσία τοποθεσίας"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Υπηρεσία GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Υπηρεσία ειδοποίησης αισθητήρα"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Υπηρεσία Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Η συσκευή σας θα διαγραφεί"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Δεν είναι δυνατή η χρήση της εφαρμογής διαχειριστή. Η συσκευή σας θα διαγραφεί.\n\nΕάν έχετε ερωτήσεις, επικοινωνήστε με τον διαχειριστή του οργανισμού σας."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Η εκτύπωση απενεργοποιήθηκε από τον χρήστη <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Λήψη στιγμιότυπου οθόνης για αναφορά σφαλμάτων σε <xliff:g id="NUMBER_1">%d</xliff:g> δευτερόλεπτα.</item>
<item quantity="one">Λήψη στιγμιότυπου οθόνης για αναφορά σφαλμάτων σε <xliff:g id="NUMBER_0">%d</xliff:g> δευτερόλεπτο.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Έγινε λήψη στιγμιότυπου οθόνης με αναφορά σφάλματος"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Αποτυχία λήψης στιγμιότυπου οθόνης με αναφορά σφάλματος"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Λειτουργία σίγασης"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Ο ήχος είναι απενεργοποιημένος"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Ο ήχος είναι ενεργοποιημένος"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"έχει πρόσβαση σε επιπλέον εντολές παρόχου τοποθεσίας"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Επιτρέπει στην εφαρμογή την πρόσβαση σε επιπλέον εντολές παρόχου τοποθεσίας. Αυτό μπορεί να δώσει τη δυνατότητα στην εφαρμογή να παρέμβει στη λειτουργία του GPS ή άλλων πηγών τοποθεσίας."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"πρόσβαση στην ακριβή τοποθεσία μόνο στο προσκήνιο"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Αυτή η εφαρμογή μπορεί να ανιχνεύσει την ακριβή τοποθεσία σας μόνο όταν βρίσκεται στο προσκήνιο. Οι υπηρεσίες τοποθεσίας θα πρέπει να είναι ενεργοποιημένες και διαθέσιμες στη συσκευή σας, προκειμένου να μπορεί να τις χρησιμοποιήσει η εφαρμογή. Με την ενεργοποίηση αυτής της ρύθμισης, μπορεί να αυξηθεί η κατανάλωση μπαταρίας."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Αυτή η εφαρμογή έχει πρόσβαση στην ακριβή τοποθεσία από τις υπηρεσίες τοποθεσίας ενώ η εφαρμογή χρησιμοποιείται. Οι υπηρεσίες τοποθεσίας για τη συσκευή σας θα πρέπει να είναι ενεργοποιημένες έτσι ώστε η εφαρμογή να λάβει την τοποθεσία. Αυτό μπορεί να αυξήσει τη χρήση της μπαταρίας."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"πρόσβαση στην κατά προσέγγιση τοποθεσία μόνο στο προσκήνιο"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Αυτή η εφαρμογή έχει πρόσβαση στην τοποθεσία κατά προσέγγιση, μόνο όταν βρίσκεται στο προσκήνιο. Οι υπηρεσίες τοποθεσίας πρέπει να έχουν ενεργοποιηθεί και να είναι διαθέσιμες στη συσκευή σας, για να μπορεί να τις χρησιμοποιήσει η εφαρμογή."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Αυτή η εφαρμογή έχει πρόσβαση στην τοποθεσία κατά προσέγγιση από τις υπηρεσίες τοποθεσίας ενώ η εφαρμογή χρησιμοποιείται. Οι υπηρεσίες τοποθεσίας για τη συσκευή σας θα πρέπει να είναι ενεργοποιημένες έτσι ώστε η εφαρμογή να λάβει την τοποθεσία."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"πρόσβαση στην τοποθεσία στο παρασκήνιο"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Εκτός από την πρόσβαση τοποθεσίας ενώ βρίσκεται στο προσκήνιο, αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στην τοποθεσία ενώ εκτελείται στο παρασκήνιο."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Αυτή η εφαρμογή μπορεί να αποκτήσει πρόσβαση στην τοποθεσία ανά πάσα στιγμή, ακόμη και όταν συσκευή δεν χρησιμοποιείται."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"αλλάζει τις ρυθμίσεις ήχου"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Επιτρέπει στην εφαρμογή την τροποποίηση καθολικών ρυθμίσεων ήχου, όπως η ένταση και ποιο ηχείο χρησιμοποιείται για έξοδο."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"εγγράφει ήχο"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Αυτή η εφαρμογή μπορεί να τραβήξει φωτογραφίες και βίντεο χρησιμοποιώντας την κάμερα, ανά πάσα στιγμή."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Παραχωρήστε σε μια εφαρμογή ή υπηρεσία πρόσβαση στις κάμερες του συστήματος για τη λήψη φωτογραφιών και βίντεο"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Αυτή η προνομιούχα εφαρμογή | εφαρμογή συστήματος μπορεί να τραβάει φωτογραφίες και να εγγράφει βίντεο, χρησιμοποιώντας μια κάμερα του συστήματος ανά πάσα στιγμή. Απαιτείται, επίσης, η εφαρμογή να έχει την άδεια android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Επιτρέψτε σε μια εφαρμογή ή μια υπηρεσία να λαμβάνει επανάκλησεις σχετικά με το άνοιγμα ή το κλείσιμο συσκευών κάμερας."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Αυτή η εφαρμογή υπογραφής μπορεί να λαμβάνει επανακλήσεις κατά το άνοιγμα οποιασδήποτε συσκευής κάμερας (από οποιοδήποτε πακέτο εφαρμογής) ή κατά το κλείσιμο."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ελέγχει τη δόνηση"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Επιτρέπει στην εφαρμογή τον έλεγχο της δόνησης."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Επιτρέπει στην εφαρμογή να έχει πρόσβαση στην κατάσταση δόνησης."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Επιτρέπει στην εφαρμογή να δρομολογεί τις κλήσεις της μέσω του συστήματος για να βελτιώσει την εμπειρία κλήσης."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"προβολή και έλεγχος κλήσεων μέσω του συστήματος."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Επιτρέπει στην εφαρμογή να βλέπει και να ελέγχει τις εισερχόμενες κλήσεις στη συσκευή. Αυτό περιλαμβάνει πληροφορίες όπως τους αριθμούς κλήσεων για τις κλήσεις και την κατάσταση των κλήσεων."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"εξαίρεση από περιορισμούς εγγραφής ήχου"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Εξαιρέστε την εφαρμογή από περιορισμούς για την εγγραφή ήχου."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"συνέχιση κλήσης από άλλη συσκευή"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Επιτρέπει στην εφαρμογή να συνεχίσει μια κλήση η οποία ξεκίνησε σε άλλη εφαρμογή."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ανάγνωση αριθμών τηλεφώνου"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Επιτρέπει στην εφαρμογή να αποκτήσει πρόσβαση στους αριθμούς τηλεφώνου της συσκευής"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"διατήρηση ενεργοποίησης οθόνης αυτοκινήτου"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"αποτρέπει την μετάβαση του tablet σε κατάσταση αδράνειας"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"απαγόρευση μετάβασης της συσκευής Android TV σε κατάσταση αδράνειας"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"αποτρέπει το τηλεφώνο να μεταβεί σε κατάσταση αδράνειας"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Επιτρέπει στην εφαρμογή να διατηρεί την οθόνη του αυτοκινήτου ενεργοποιημένη."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Επιτρέπει στην εφαρμογή την παρεμπόδιση της μετάβασης του tablet σε κατάσταση αδράνειας."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Επιτρέπει στην εφαρμογή να εμποδίζει τη μετάβαση της συσκευής Android TV σε κατάσταση αδράνειας."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Επιτρέπει στην εφαρμογή την παρεμπόδιση της μετάβασης του τηλεφώνου σε κατάσταση αδράνειας."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Δοκιμάστε ξανά."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Δεν έχουν καταχωριστεί δακτυλικά αποτυπώματα."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Αυτή η συσκευή δεν διαθέτει αισθητήρα δακτυλικού αποτυπώματος."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Ο αισθητήρας απενεργοποιήθηκε προσωρινά."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Δάχτυλο <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Αδύνατη επαλήθευση του προσώπου. Επανάληψη."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Δεν έχετε ρυθμίσει το Face Unlock."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Το Face Unlock δεν υποστηρίζεται σε αυτήν τη συσκευή."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Ο αισθητήρας απενεργοποιήθηκε προσωρινά."</string>
<string name="face_name_template" msgid="3877037340223318119">"Πρόσωπο <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Το δίκτυο κινητής τηλεφωνίας δεν έχει πρόσβαση στο διαδίκτυο."</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Το δίκτυο δεν έχει πρόσβαση στο διαδίκτυο."</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Δεν είναι δυνατή η πρόσβαση στον ιδιωτικό διακομιστή DNS."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Συνδέθηκε"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Το δίκτυο <xliff:g id="NETWORK_SSID">%1$s</xliff:g> έχει περιορισμένη συνδεσιμότητα"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Πατήστε για σύνδεση ούτως ή άλλως"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Μετάβαση σε δίκτυο <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Συνδέθηκε ο εντοπισμός σφαλμάτων USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Απενεργοποιήστε τον εντοπισμό/διόρθ. σφαλμάτων USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Επιλογή για απενεργοποίηση του εντοπισμού σφαλμάτων USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Συνδέθηκε ο εντοπισμός σφαλμάτων μέσω ασύρματης σύνδεσης"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Πατήστε, για να απενεργοποιήσετε τον εντοπισμό σφαλμάτων μέσω ασύρματης σύνδεσης"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Επιλέξτε, για να απενεργοποιήσετε τον εντοπισμό σφαλμάτων μέσω ασύρματης σύνδεσης."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Η λειτουργία περιβάλλοντος δοκιμών ενεργοποιήθηκε"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Εκτελέστε επαναφορά εργοστασιακών ρυθμίσεων για να απενεργοποιήσετε τη λειτουργία περιβάλλοντος δοκιμών."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Η σειριακή κονσόλα ενεργοποιήθηκε"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Η υπηρεσία στο προσκήνιο που ξεκίνησε από το παρασκήνιο από το πακέτο <xliff:g id="PACKAGENAME">%1$s</xliff:g> δεν θα έχει άδεια πρόσβασης μόνο κατά τη χρήση σε μελλοντικές εκδόσεις R. Ανατρέξτε στο go/r-bg-fgs-restriction και υποβάλετε αναφορά σφάλματος."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Αυξάνετε την ένταση ήχου πάνω από το επίπεδο ασφαλείας;\n\nΑν ακούτε μουσική σε υψηλή ένταση για μεγάλο χρονικό διάστημα ενδέχεται να προκληθεί βλάβη στην ακοή σας."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Να χρησιμοποιείται η συντόμευση προσβασιμότητας;"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Όταν η συντόμευση είναι ενεργοποιημένη, το πάτημα και των δύο κουμπιών έντασης ήχου για 3 δευτερόλεπτα θα ξεκινήσει μια λειτουργία προσβασιμότητας."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Να επιτρέπεται στην υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g> να έχει τον πλήρη έλεγχο της συσκευής σας;"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Εάν ενεργοποιήσετε την υπηρεσία <xliff:g id="SERVICE">%1$s</xliff:g>, η συσκευή σας δεν θα χρησιμοποιεί το κλείδωμα οθόνης για τη βελτίωση της κρυπτογράφησης δεδομένων."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ο πλήρης έλεγχος είναι κατάλληλος για εφαρμογές που εξυπηρετούν τις ανάγκες προσβασιμότητάς σας, αλλά όχι για όλες τις εφαρμογές."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Προβολή και έλεγχος οθόνης"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Μπορεί να διαβάσει όλα τα περιεχόμενα της οθόνης σας και να εμφανίσει περιεχόμενο πάνω από άλλες εφαρμογές."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Προβολή και εκτέλεση ενεργειών"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Μπορεί να παρακολουθήσει τις αλληλεπιδράσεις σας με μια εφαρμογή ή έναν αισθητήρα εξοπλισμού και να αλληλεπιδράσει με εφαρμογές εκ μέρους σας."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ναι"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Όχι"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Πατήστε μια λειτουργία για να ξεκινήσετε να τη χρησιμοποιείτε:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Επιλέξτε τις εφαρμογές που θέλετε να χρησιμοποιείτε με το κουμπί προσβασιμότητας"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Επιλέξτε τις εφαρμογές που θέλετε να χρησιμοποιείτε με τη συντόμευση κουμπιού έντασης ήχου"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Η υπηρεσία <xliff:g id="SERVICE_NAME">%s</xliff:g> έχει απενεργοποιηθεί."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Επεξεργασία συντομεύσεων"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Άκυρο"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Τέλος"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Απενεργοποίηση συντόμευσης"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Χρήση συντόμευσης"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Αντιστροφή χρωμάτων"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Μη κατηγοριοποιημένο"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Μπορείτε να ρυθμίσετε τη βαρύτητα αυτών των ειδοποιήσεων."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Αυτό είναι σημαντικό λόγω των ατόμων που συμμετέχουν."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Προσαρμοσμένη ειδοποίηση εφαρμογής"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Επιτρέπετε στην εφαρμογή <xliff:g id="APP">%1$s</xliff:g> να δημιουργήσει έναν νέο χρήστη με τον λογαριασμό <xliff:g id="ACCOUNT">%2$s</xliff:g> (υπάρχει ήδη χρήστης με αυτόν τον λογαριασμό);"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Επιτρέπετε στην εφαρμογή <xliff:g id="APP">%1$s</xliff:g> να δημιουργήσει έναν νέο χρήστη με τον λογαριασμό <xliff:g id="ACCOUNT">%2$s</xliff:g>;"</string>
<string name="language_selection_title" msgid="52674936078683285">"Προσθήκη γλώσσας"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Μενού προσβασιμότητας"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Γραμμή υποτίτλων για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Το πακέτο <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> τοποθετήθηκε στον κάδο ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Προσωπικό"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Εργασία"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Προσωπική προβολή"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Προβολή εργασίας"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Δεν είναι δυνατή η κοινοποίηση σε εφαρμογές εργασιών"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Δεν είναι δυνατή η κοινοποίηση σε προσωπικές εφαρμογές"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Ο διαχειριστής IT απέκλεισε την κοινοποίηση μεταξύ των προσωπικών προφίλ και των προφίλ εργασίας."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Δεν είναι δυνατή η πρόσβαση σε εφαρμογές εργασίας"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Ο διαχειριστής IT δεν σας επιτρέπει να βλέπετε το προσωπικό σας περιεχόμενο σε εφαρμογές εργασίας."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Δεν είναι δυνατή η πρόσβαση σε προσωπικές εφαρμογές"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Ο διαχειριστής IT δεν σας επιτρέπει να βλέπετε το περιεχόμενο εργασίας σας σε προσωπικές εφαρμογές."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Ενεργοποιήστε το προφίλ εργασίας για να κοινοποιήσετε περιεχόμενο."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Ενεργοποιήστε το προφίλ εργασίας για να προβάλετε περιεχόμενο."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Δεν υπάρχουν διαθέσιμες εφαρμογές"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Ενεργοποίηση"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Εγγραφή ή αναπαραγωγή ήχου σε τηλεφωνικές κλήσεις"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Επιτρέπει σε αυτήν την εφαρμογή, όταν ορίζεται ως προεπιλεγμένη εφαρμογή κλήσης, να εγγράφει ή να αναπαράγει ήχο σε τηλεφωνικές κλήσεις."</string>
</resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 7ee9846..1708031 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Taking screenshot for bug report in <xliff:g id="NUMBER_1">%d</xliff:g> seconds.</item>
<item quantity="one">Taking screenshot for bug report in <xliff:g id="NUMBER_0">%d</xliff:g> second.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot taken with bug report"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Failed to take screenshot with bug report"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sound is OFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sound is ON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"This privileged | system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"This signature app can receive callbacks when any camera device is being opened (by what application package) or closed."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Allows the app to control the vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Allows the app to access the vibrator state."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"see and control calls through the system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continue a call from another app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Allows the app to continue a call which was started in another app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"read phone numbers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Allows the app to access the phone numbers of the device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"keep car screen turned on"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"prevent your Android TV device from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"prevent phone from sleeping"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Allows the app to keep the car screen turned on."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Allows the app to prevent the tablet from going to sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Allows the app to prevent your Android TV device from going to sleep."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Allows the app to prevent the phone from going to sleep."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobile network has no Internet access"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Network has no Internet access"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Private DNS server cannot be accessed"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connected"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> has limited connectivity"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tap to connect anyway"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Switched to <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB debugging connected"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tap to turn off USB debugging"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Select to disable USB debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wireless debugging connected"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tap to turn off wireless debugging"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
@@ -1620,8 +1637,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"View and control screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"It can read all content on the screen and display content over other apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"View and perform actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"It can track your interactions with an app or a hardware sensor, and interact with apps on your behalf."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choose apps to use with the accessibility button"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choose apps to use with the volume key shortcut"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Turn off Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uncategorised"</string>
<string name="importance_from_user" msgid="2782756722448800447">"You set the importance of these notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"This is important because of the people involved."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom app notification"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> (a User with this account already exists)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Add a language"</string>
@@ -2013,14 +2044,24 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
+ <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Work view"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Can’t share with work apps"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Can’t share with personal apps"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Your IT admin blocked sharing between personal and work apps"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Turn on work apps"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Turn on work apps to access work apps and contacts"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Your IT admin blocked sharing between personal and work profiles"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Can’t access work apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Your IT admin doesn’t let you view personal content in work apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Can’t access personal apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Your IT admin doesn’t let you view work content in personal apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Turn on work profile to share content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Turn on work profile to view content"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"No apps available"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"We couldn’t find any apps"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Switch on work"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Turn on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string>
</resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 4ff5975..ab38ebf 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Taking screenshot for bug report in <xliff:g id="NUMBER_1">%d</xliff:g> seconds.</item>
<item quantity="one">Taking screenshot for bug report in <xliff:g id="NUMBER_0">%d</xliff:g> second.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot taken with bug report"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Failed to take screenshot with bug report"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sound is OFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sound is ON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"This privileged | system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"This signature app can receive callbacks when any camera device is being opened (by what application package) or closed."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Allows the app to control the vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Allows the app to access the vibrator state."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"see and control calls through the system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continue a call from another app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Allows the app to continue a call which was started in another app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"read phone numbers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Allows the app to access the phone numbers of the device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"keep car screen turned on"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"prevent your Android TV device from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"prevent phone from sleeping"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Allows the app to keep the car screen turned on."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Allows the app to prevent the tablet from going to sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Allows the app to prevent your Android TV device from going to sleep."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Allows the app to prevent the phone from going to sleep."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobile network has no Internet access"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Network has no Internet access"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Private DNS server cannot be accessed"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connected"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> has limited connectivity"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tap to connect anyway"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Switched to <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB debugging connected"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tap to turn off USB debugging"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Select to disable USB debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wireless debugging connected"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tap to turn off wireless debugging"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
@@ -1620,8 +1637,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"View and control screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"It can read all content on the screen and display content over other apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"View and perform actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"It can track your interactions with an app or a hardware sensor, and interact with apps on your behalf."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choose apps to use with the accessibility button"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choose apps to use with the volume key shortcut"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Turn off Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uncategorised"</string>
<string name="importance_from_user" msgid="2782756722448800447">"You set the importance of these notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"This is important because of the people involved."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom app notification"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> (a User with this account already exists)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Add a language"</string>
@@ -2013,14 +2044,24 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
+ <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Work view"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Can’t share with work apps"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Can’t share with personal apps"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Your IT admin blocked sharing between personal and work apps"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Turn on work apps"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Turn on work apps to access work apps and contacts"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Your IT admin blocked sharing between personal and work profiles"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Can’t access work apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Your IT admin doesn’t let you view personal content in work apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Can’t access personal apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Your IT admin doesn’t let you view work content in personal apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Turn on work profile to share content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Turn on work profile to view content"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"No apps available"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"We couldn’t find any apps"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Switch on work"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Turn on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string>
</resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 7ee9846..1708031 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Taking screenshot for bug report in <xliff:g id="NUMBER_1">%d</xliff:g> seconds.</item>
<item quantity="one">Taking screenshot for bug report in <xliff:g id="NUMBER_0">%d</xliff:g> second.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot taken with bug report"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Failed to take screenshot with bug report"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sound is OFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sound is ON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"This privileged | system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"This signature app can receive callbacks when any camera device is being opened (by what application package) or closed."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Allows the app to control the vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Allows the app to access the vibrator state."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"see and control calls through the system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continue a call from another app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Allows the app to continue a call which was started in another app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"read phone numbers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Allows the app to access the phone numbers of the device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"keep car screen turned on"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"prevent your Android TV device from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"prevent phone from sleeping"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Allows the app to keep the car screen turned on."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Allows the app to prevent the tablet from going to sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Allows the app to prevent your Android TV device from going to sleep."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Allows the app to prevent the phone from going to sleep."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobile network has no Internet access"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Network has no Internet access"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Private DNS server cannot be accessed"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connected"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> has limited connectivity"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tap to connect anyway"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Switched to <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB debugging connected"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tap to turn off USB debugging"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Select to disable USB debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wireless debugging connected"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tap to turn off wireless debugging"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
@@ -1620,8 +1637,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"View and control screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"It can read all content on the screen and display content over other apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"View and perform actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"It can track your interactions with an app or a hardware sensor, and interact with apps on your behalf."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choose apps to use with the accessibility button"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choose apps to use with the volume key shortcut"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Turn off Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uncategorised"</string>
<string name="importance_from_user" msgid="2782756722448800447">"You set the importance of these notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"This is important because of the people involved."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom app notification"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> (a User with this account already exists)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Add a language"</string>
@@ -2013,14 +2044,24 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
+ <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Work view"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Can’t share with work apps"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Can’t share with personal apps"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Your IT admin blocked sharing between personal and work apps"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Turn on work apps"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Turn on work apps to access work apps and contacts"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Your IT admin blocked sharing between personal and work profiles"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Can’t access work apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Your IT admin doesn’t let you view personal content in work apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Can’t access personal apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Your IT admin doesn’t let you view work content in personal apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Turn on work profile to share content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Turn on work profile to view content"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"No apps available"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"We couldn’t find any apps"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Switch on work"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Turn on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string>
</resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 7ee9846..1708031 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organisation manages this device and may monitor network traffic. Tap for details."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Taking screenshot for bug report in <xliff:g id="NUMBER_1">%d</xliff:g> seconds.</item>
<item quantity="one">Taking screenshot for bug report in <xliff:g id="NUMBER_0">%d</xliff:g> second.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot taken with bug report"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Failed to take screenshot with bug report"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sound is OFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sound is ON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location. This may increase battery usage."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location Services must be turned on and available on your device for the app to be able to use them."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from Location Services while the app is in use. Location Services for your device must be turned on for the app to get location."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Grant an application or service access to system cameras to take pictures and videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"This privileged | system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"This signature app can receive callbacks when any camera device is being opened (by what application package) or closed."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Allows the app to control the vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Allows the app to access the vibrator state."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"see and control calls through the system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continue a call from another app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Allows the app to continue a call which was started in another app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"read phone numbers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Allows the app to access the phone numbers of the device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"keep car screen turned on"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"prevent your Android TV device from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"prevent phone from sleeping"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Allows the app to keep the car screen turned on."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Allows the app to prevent the tablet from going to sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Allows the app to prevent your Android TV device from going to sleep."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Allows the app to prevent the phone from going to sleep."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobile network has no Internet access"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Network has no Internet access"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Private DNS server cannot be accessed"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connected"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> has limited connectivity"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tap to connect anyway"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Switched to <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB debugging connected"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tap to turn off USB debugging"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Select to disable USB debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wireless debugging connected"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tap to turn off wireless debugging"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
@@ -1620,8 +1637,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for three seconds will start an accessibility feature."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"View and control screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"It can read all content on the screen and display content over other apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"View and perform actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"It can track your interactions with an app or a hardware sensor, and interact with apps on your behalf."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choose apps to use with the accessibility button"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choose apps to use with the volume key shortcut"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Turn off Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Colour Inversion"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uncategorised"</string>
<string name="importance_from_user" msgid="2782756722448800447">"You set the importance of these notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"This is important because of the people involved."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom app notification"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> (a User with this account already exists)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Add a language"</string>
@@ -2013,14 +2044,24 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
+ <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group conversation"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Work view"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Can’t share with work apps"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Can’t share with personal apps"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Your IT admin blocked sharing between personal and work apps"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Turn on work apps"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Turn on work apps to access work apps and contacts"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Your IT admin blocked sharing between personal and work profiles"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Can’t access work apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Your IT admin doesn’t let you view personal content in work apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Can’t access personal apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Your IT admin doesn’t let you view work content in personal apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Turn on work profile to share content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Turn on work profile to view content"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"No apps available"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"We couldn’t find any apps"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Switch on work"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Turn on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as a default dialler application, to record or play audio in telephony calls."</string>
</resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index bef3442..11c114d 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Your organization manages this device and may monitor network traffic. Tap for details."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Location settings changed by your admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tap to see your location settings."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS Service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organization\'s admin."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Taking screenshot for bug report in <xliff:g id="NUMBER_1">%d</xliff:g> seconds.</item>
<item quantity="one">Taking screenshot for bug report in <xliff:g id="NUMBER_0">%d</xliff:g> second.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot taken with bug report"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Failed to take screenshot with bug report"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sound is OFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sound is ON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"access extra location provider commands"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Allows the app to access extra location provider commands. This may allow the app to interfere with the operation of the GPS or other location sources."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"access precise location only in the foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"This app can get your exact location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"access approximate location only in the foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"This app can get your approximate location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"access location in the background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"This app can access location while running in the background, in addition to foreground location access."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"This app can access location at any time, even while the app is not in use."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"change your audio settings"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Allows the app to modify global audio settings such as volume and which speaker is used for output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"record audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Allow an application or service access to system cameras to take pictures and videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"This privileged | system app can take pictures and record videos using a system camera at any time. Requires the android.permission.CAMERA permission to be held by the app as well"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Allow an application or service to receive callbacks about camera devices being opened or closed."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"This signature app can receive callbacks when any camera device is being opened (by what application package) or closed."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"control vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Allows the app to control the vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Allows the app to access the vibrator state."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"see and control calls through the system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Allows the app to see and control ongoing calls on the device. This includes information such as call numbers for calls and the state of the calls."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"exempt from audio record restrictions"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Exempt the app from restrictions to record audio."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continue a call from another app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Allows the app to continue a call which was started in another app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"read phone numbers"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Allows the app to access the phone numbers of the device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"keep car screen turned on"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"prevent tablet from sleeping"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"prevent your Android TV device from sleeping"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"prevent phone from sleeping"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Allows the app to keep the car screen turned on."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Allows the app to prevent the tablet from going to sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Allows the app to prevent your Android TV device from going to sleep."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Allows the app to prevent the phone from going to sleep."</string>
@@ -1251,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobile network has no internet access"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Network has no internet access"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Private DNS server cannot be accessed"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connected"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> has limited connectivity"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tap to connect anyway"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Switched to <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1316,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB debugging connected"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tap to turn off USB debugging"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Select to disable USB debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Wireless debugging connected"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tap to turn off wireless debugging"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Select to disable wireless debugging."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Harness Mode enabled"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Perform a factory reset to disable Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serial console enabled"</string>
@@ -1620,8 +1635,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Allow <xliff:g id="SERVICE">%1$s</xliff:g> to have full control of your device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"If you turn on <xliff:g id="SERVICE">%1$s</xliff:g>, your device won’t use your screen lock to enhance data encryption."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full control is appropriate for apps that help you with accessibility needs, but not for most apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"View and control screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"It can read all content on the screen and display content over other apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"View and perform actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"It can track your interactions with an app or a hardware sensor, and interact with apps on your behalf."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Allow"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Deny"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tap a feature to start using it:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choose apps to use with the accessibility button"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choose apps to use with the volume key shortcut"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> has been turned off"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit shortcuts"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancel"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Done"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Turn off Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Use Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Color Inversion"</string>
@@ -1842,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uncategorized"</string>
<string name="importance_from_user" msgid="2782756722448800447">"You set the importance of these notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"This is important because of the people involved."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom app notification"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> (a User with this account already exists) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Add a language"</string>
@@ -2013,14 +2042,24 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility Menu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
+ <string name="conversation_single_line_name_display" msgid="8958948312915255999">"<xliff:g id="SENDER_NAME">%1$s</xliff:g>:"</string>
+ <string name="conversation_title_fallback_one_to_one" msgid="1980753619726908614">"Conversation"</string>
+ <string name="conversation_title_fallback_group_chat" msgid="456073374993104303">"Group Conversation"</string>
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Work view"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Can’t share with work apps"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Can’t share with personal apps"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Your IT admin blocked sharing between personal and work apps"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Turn on work apps"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Turn on work apps to access work apps & contacts"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Your IT admin blocked sharing between personal and work profiles"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Can’t access work apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Your IT admin doesn’t let you view personal content in work apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Can’t access personal apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Your IT admin doesn’t let you view work content in personal apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Turn on work profile to share content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Turn on work profile to view content"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"No apps available"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"We couldn’t find any apps"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Switch on work"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Turn on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Record or play audio in telephony calls"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Allows this app, when assigned as default dialer application, to record or play audio in telephony calls."</string>
</resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 29318bd..924fa9e 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -191,8 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"El administrador no permite hacer un uso personal del dispositivo"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"Dispositivo administrado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y es posible que controle el tráfico de red. Presiona para obtener más información."</string>
- <string name="location_changed_notification_title" msgid="4119726617105166830">"Tu administrador cambió la configuración de la ubicación"</string>
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"El administrador cambió la configuración de la ubicación"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Presiona para ver la configuración de la ubicación."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servicio de ubicación"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Servicio de Sistemas Globales de Navegación por Satélites (GNSS)"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Servicio de notificaciones del sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Servicio de Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Se borrarán los datos del dispositivo"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"No se puede usar la app de administrador. Ahora se borrará tu dispositivo.\n\nSi tienes preguntas, comunícate con el administrador de tu organización."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> inhabilitó la impresión."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Se tomará una captura de pantalla para el informe de errores en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="one">Se tomará una captura de pantalla para el informe de errores en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Se tomó la captura de pantalla con el informe de errores"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"No se pudo tomar la captura de pantalla con el informe de errores"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencioso"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"El sonido está Desactivado"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"El sonido está Activado"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionales del proveedor del lugar"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a comandos adicionales del proveedor de ubicación. Esto puede permitirle a la aplicación interferir con el funcionamiento del GPS o de otras fuentes de ubicación."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta app puede obtener tu ubicación exacta solo cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en el dispositivo para que la app pueda usarlos. Es posible que aumente el consumo de batería."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la usas, esta app puede obtener tu ubicación exacta mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados. Es posible que esto aumente el uso de batería."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo en primer plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta app puede obtener tu ubicación aproximada únicamente cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en el dispositivo para que la app pueda usarlos."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la usas, esta app puede obtener tu ubicación aproximada mediante los Servicios de ubicación, siempre y cuando el dispositivo los tenga activados."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder a la ubicación en segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta app puede acceder a una ubicación mientras se ejecuta en segundo plano, además de proporcionar acceso a la ubicación en primer plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación puede acceder a la ubicación en cualquier momento, aunque no la estés usando."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar tu configuración de audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que la aplicación modifique la configuración de audio global, por ejemplo, el volumen y el altavoz de salida."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"grabar audio"</string>
@@ -429,9 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Esta app puede tomar fotos y grabar videos con la cámara en cualquier momento."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que una aplicación o un servicio accedan a las cámaras del sistema para tomar fotos y grabar videos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Esta privilegiada | app del sistema puede tomar fotos y grabar videos con una cámara del sistema en cualquier momento. También se requiere que la app posea el permiso android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permite que una aplicación o un servicio reciba devoluciones de llamada cuando se abren o cierran dispositivos de cámara."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esta app de firma puede recibir devoluciones de llamada cuando se cierra o se abre cualquier dispositivo de cámara (y qué paquete de aplicación lo hace)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibración"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite que la aplicación controle la vibración."</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que la app acceda al estado del vibrador."</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que la app acceda al estado del modo de vibración."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"llamar directamente a números de teléfono"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Permite que la aplicación haga llamadas a números de teléfono sin intervención del usuario, lo que puede dar lugar a llamadas o cargos inesperados. Ten en cuenta que las aplicaciones no pueden usar este servicio para realizar llamadas a números de emergencia, pero las aplicaciones malintencionadas pueden causarte gastos imprevistos al realizar llamadas sin tu confirmación."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"acceder al servicio IMS para realizar llamadas"</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite que la app transmita las llamadas a través del sistema para mejorar la experiencia de llamadas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Mirar y controlar las llamadas con el sistema"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite que la app vea y controle las llamadas entrantes del dispositivo. Incluye información como los números emisores y el estado de las llamadas."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"eximida de restricciones para grabar audio"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Exime a la app de las restricciones para grabar audio."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar llamada de otra app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite que la app continúe con una llamada que se inició en otra app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"leer números de teléfono"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Le permite a la app acceder a los números de teléfono del dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"mantener la pantalla del vehículo encendida"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"evitar que el tablet entre en estado de inactividad"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evita que se suspenda el dispositivo Android TV"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"evitar que el dispositivo entre en estado de inactividad"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que la app mantenga la pantalla del vehículo encendida."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite que la aplicación evite que la tablet entre en estado de inactividad."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que la app evite que se suspenda tu dispositivo Android TV."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite que la aplicación evite que el dispositivo entre en estado de inactividad."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Vuelve a intentarlo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No se registraron huellas digitales."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo no tiene sensor de huellas digitales."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Se inhabilitó temporalmente el sensor."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"No se pudo verificar la cara. Vuelve a intentarlo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"No configuraste el Desbloqueo facial."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"No se admite el Desbloqueo facial en este dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Se inhabilitó temporalmente el sensor."</string>
<string name="face_name_template" msgid="3877037340223318119">"Rostro <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"La red móvil no tiene acceso a Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"La red no tiene acceso a Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"No se puede acceder al servidor DNS privado"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Se estableció conexión"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tiene conectividad limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Presiona para conectarte de todas formas"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Se cambió a <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuración por USB conectada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Presiona para desactivar la depuración por USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Seleccionar para desactivar la depuración por USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Se conectó la depuración inalámbrica"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Presiona para desactivar la depuración inalámbrica"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona para inhabilitar la depuración inalámbrica."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Se habilitó el modo de agente de prueba"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Restablece la configuración de fábrica para inhabilitar el modo de agente de prueba."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Se habilitó la consola en serie"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servicio que pasó del segundo al primer plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g> no tendrá permiso durante el uso en las próximas compilaciones de R. Ve a go/r-bg-fgs-restriction y envía un informe de errores."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar a un alto volumen durante largos períodos puede dañar tu audición."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Usar acceso directo de accesibilidad?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cuando la combinación de teclas está activada, puedes presionar los botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Deseas permitir que <xliff:g id="SERVICE">%1$s</xliff:g> tenga el control total del dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar la encriptación de datos."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es apropiado para las apps que te ayudan con las necesidades de accesibilidad, pero no para la mayoría de las apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver y controlar la pantalla"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido en la pantalla y mostrarlo sobre otras apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver y realizar acciones"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Puede realizar el seguimiento de tus interacciones con una app o un sensor de hardware, así como interactuar con las apps por ti."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rechazar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Presiona una función para comenzar a usarla:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Selecciona apps para usar con el botón de accesibilidad"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Selecciona apps para usar con la combinación de teclas de volumen"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se desactivó <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Listo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar acceso directo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar acceso directo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sin categoría"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Estableciste la importancia de estas notificaciones."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Es importante debido a las personas involucradas."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificación de app personalizada"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"¿Quieres permitir que <xliff:g id="APP">%1$s</xliff:g> cree un usuario nuevo con <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Ya existe un usuario con esta cuenta)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"¿Deseas permitir que <xliff:g id="APP">%1$s</xliff:g> cree un usuario nuevo con <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Agregar un idioma"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Se colocó <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> en el depósito RESTRICTED"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabajo"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vista personal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vista de trabajo"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"No se puede compartir con apps de trabajo"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"No se puede compartir con apps personales"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Tu administrador de TI bloqueó el uso compartido entre los perfiles personales y los de trabajo"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"No se puede acceder a las apps de trabajo"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"No tienes permiso del administrador de TI para ver el contenido personal en apps de trabajo"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"No se puede acceder a las apps personales"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"No tienes permiso del administrador de TI para ver el contenido de trabajo en apps personales"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Activa el perfil de trabajo para compartir contenido"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Activa el perfil de trabajo para ver contenido"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"No hay apps disponibles"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Graba o reproduce audio en llamadas de telefonía"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta app grabe o reproduzca audio en llamadas de telefonía cuando se la asigna como aplicación de teléfono predeterminada."</string>
</resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 5db4f42..4203feb 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -191,8 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"El administrador no permite hacer un uso personal del dispositivo"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"El dispositivo está administrado"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tu organización administra este dispositivo y puede supervisar el tráfico de red. Toca la notificación para obtener más información."</string>
- <string name="location_changed_notification_title" msgid="4119726617105166830">"Tu administrador ha cambiado los ajustes de ubicación-"</string>
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Tu administrador ha cambiado los ajustes de ubicación"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toca para ver tus ajustes de ubicación."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servicio de ubicación"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Servicio GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Servicio de notificación de sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Servicio de Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Tu dispositivo se borrará"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"No se puede utilizar la aplicación de administración. Se borrarán todos los datos del dispositivo.\n\nSi tienes alguna pregunta, ponte en contacto con el administrador de tu organización."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha inhabilitado la impresión."</string>
@@ -245,6 +250,8 @@
<item quantity="other">La captura de pantalla para el informe de errores se realizará en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="one">La captura de pantalla para el informe de errores se realizará en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Se ha hecho la captura de pantalla con el informe de errores"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"No se ha podido hacer la captura de pantalla con el informe de errores"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencio"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"El sonido está desactivado. Activar"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"El sonido está activado. Desactivar"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos de proveedor de ubicación adicional"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que la aplicación acceda a otros comandos del proveedor de ubicación. De esta forma, la aplicación podrá interferir en el funcionamiento del GPS o de otras fuentes de ubicación."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder a la ubicación exacta solo en primer plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicación solo puede obtener tu ubicación exacta cuando está en primer plano. Los servicios de ubicación deben estar activados y disponibles en tu dispositivo para que la aplicación pueda utilizarlos. Es posible que aumente el consumo de batería."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mientras la utilizas, esta aplicación puede obtener tu ubicación exacta mediante servicios de ubicación, siempre que el dispositivo los tenga activados. Es posible que esto aumente el consumo de batería."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder a la ubicación aproximada solo al estar en primer plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicación puede obtener tu ubicación aproximada solo cuando está en primer plano. Para que la aplicación pueda utilizar los servicios de ubicación, deben estar activados y disponibles en tu dispositivo."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mientras la utilizas, esta aplicación puede obtener tu ubicación aproximada mediante servicios de ubicación, siempre que el dispositivo los tenga activados."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder a la ubicación en segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicación puede acceder a la ubicación tanto cuando se ejecuta en segundo plano como cuando está en primer plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación puede acceder a la ubicación en cualquier momento, aunque no la estés utilizando."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar la configuración de audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que la aplicación modifique la configuración de audio global (por ejemplo, el volumen y el altavoz de salida)."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"grabar sonido"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicación puede hacer fotografías y grabar vídeos con la cámara en cualquier momento."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que una aplicación o servicio acceda a las cámaras del sistema para hacer fotos y vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Esta aplicación del sistema tiene permiso para hacer fotos y grabar vídeos en cualquier momento con una cámara del sistema, aunque debe tener también el permiso android.permission.CAMERA para hacerlo"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que una aplicación o servicio reciba retrollamadas vez que se abra o cierre una cámara."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esta aplicación especial puede recibir retrollamadas cada vez que se abre o se cierra una cámara mediante cualquier paquete de aplicaciones."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar la vibración"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite que la aplicación controle la función de vibración."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que la aplicación acceda al ajuste de vibración."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite a la aplicación direccionar sus llamadas hacia el sistema para mejorar la calidad de estas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ver y controlar llamadas a través del sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite que la aplicación vea y controle las llamadas entrantes en el dispositivo. Esto incluye información como los números de las llamadas y su estado."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar una llamada de otra aplicación"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite que la aplicación continúe una llamada que se ha iniciado en otra aplicación."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"leer números de teléfono"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite que la aplicación acceda a los números de teléfono del dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"mantener la pantalla del coche encendida"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"impedir que el tablet entre en modo de suspensión"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evitar que tu dispositivo Android TV entre en modo de suspensión"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"impedir que el teléfono entre en modo de suspensión"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que la aplicación deje la pantalla del coche encendida."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite que la aplicación impida que el tablet entre en modo de suspensión."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que la aplicación impida que tu dispositivo Android TV entre en modo de suspensión."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite que la aplicación impida que el teléfono entre en modo de suspensión."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Vuelve a intentarlo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"No se ha registrado ninguna huella digital."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo no tiene sensor de huellas digitales."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"El sensor está inhabilitado en estos momentos."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"No se ha verificado tu cara. Vuelve a intentarlo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"No has configurado el desbloqueo facial."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"El desbloqueo facial no está disponible en este dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"El sensor está inhabilitado en estos momentos."</string>
<string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1227,9 +1240,9 @@
<string name="volume_music" msgid="7727274216734955095">"Volumen de multimedia"</string>
<string name="volume_music_hint_playing_through_bluetooth" msgid="2614142915948898228">"Reproduciendo a través de Bluetooth"</string>
<string name="volume_music_hint_silent_ringtone_selected" msgid="1514829655029062233">"Tono de silencio establecido"</string>
- <string name="volume_call" msgid="7625321655265747433">"Volumen de la llamada"</string>
- <string name="volume_bluetooth_call" msgid="2930204618610115061">"Volumen de la llamada de Bluetooth"</string>
- <string name="volume_alarm" msgid="4486241060751798448">"Volumen de la alarma"</string>
+ <string name="volume_call" msgid="7625321655265747433">"Volumen de llamada"</string>
+ <string name="volume_bluetooth_call" msgid="2930204618610115061">"Volumen de llamada Bluetooth"</string>
+ <string name="volume_alarm" msgid="4486241060751798448">"Volumen de alarma"</string>
<string name="volume_notification" msgid="6864412249031660057">"Volumen de notificaciones"</string>
<string name="volume_unknown" msgid="4041914008166576293">"Volumen"</string>
<string name="volume_icon_description_bluetooth" msgid="7540388479345558400">"Volumen de Bluetooth"</string>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"La red móvil no tiene acceso a Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"La red no tiene acceso a Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"No se ha podido acceder al servidor DNS privado"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Conectado"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tiene una conectividad limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toca para conectarte de todas formas"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Se ha cambiado a <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuración USB habilitada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tocar para desactivar depuración USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Seleccionar para inhabilitar la depuración USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Depuración inalámbrica conectada"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toca para desactivar la depuración inalámbrica"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona para inhabilitar la depuración inalámbrica."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo de agente de prueba habilitado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Restablece los ajustes de fábrica para inhabilitar el modo de agente de prueba."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Se ha habilitado la consola en serie"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servicio en primer plano que se inició en segundo plano en <xliff:g id="PACKAGENAME">%1$s</xliff:g> no tendrá permisos en compilaciones R futuras mientras se estén usando. Ve a go/r-bg-fgs-restriction y envía un informe de errores."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar sonidos fuertes durante mucho tiempo puede dañar los oídos."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Utilizar acceso directo de accesibilidad?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Si el acceso directo está activado, pulsa los dos botones de volumen durante 3 segundos para iniciar una función de accesibilidad."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"¿Quieres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> pueda controlar totalmente tu dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si activas <xliff:g id="SERVICE">%1$s</xliff:g>, el dispositivo no utilizará el bloqueo de pantalla para mejorar el cifrado de datos."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"El control total es adecuado para las aplicaciones de accesibilidad, pero no para la mayoría de las aplicaciones."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver y controlar la pantalla"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Puede leer todo el contenido de la pantalla y mostrar contenido sobre otras aplicaciones."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver y realizar acciones"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Puede registrar tus interacciones con una aplicación o un sensor de hardware, así como interactuar con las aplicaciones en tu nombre."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denegar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toca una función para empezar a usarla:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Seleccionar qué aplicaciones usar con el botón Accesibilidad"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Seleccionar qué aplicaciones usar con el acceso directo de las teclas de volumen"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Se ha desactivado <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar accesos directos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Listo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar acceso directo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar acceso directo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de color"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sin clasificar"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Tú determinas la importancia de estas notificaciones."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Esto es importante por los usuarios implicados."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificación de aplicación personalizada"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"¿Permitir que <xliff:g id="APP">%1$s</xliff:g> cree otro usuario con la cuenta <xliff:g id="ACCOUNT">%2$s</xliff:g>, que ya tiene uno?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"¿Permitir que <xliff:g id="APP">%1$s</xliff:g> cree otro usuario con la cuenta <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Añadir un idioma"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> se ha incluido en el grupo de restringidos"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabajo"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Ver contenido personal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Ver contenido de trabajo"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"No se puede compartir con las aplicaciones de trabajo"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"No se puede compartir con las aplicaciones personales"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"No se puede compartir contenido entre los perfiles personales y los de trabajo porque el administrador de TI ha bloqueado esta función"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"No se puede acceder a las aplicaciones de trabajo"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Tu administrador de TI no te permite ver contenido de tus aplicaciones personales en las aplicaciones de trabajo"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"No se puede acceder a las aplicaciones personales"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Tu administrador de TI no te permite ver contenido de las aplicaciones de trabajo en tus aplicaciones personales"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Activa el perfil de trabajo para poder compartir contenido"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Activa el perfil de trabajo para poder ver contenido"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"No hay ninguna aplicación disponible"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Grabar o reproducir audio en llamadas telefónicas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que la aplicación grabe o reproduzca audio en las llamadas telefónicas si está asignada como aplicación Teléfono predeterminada."</string>
</resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 2c98716..83b0a60 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Teie organisatsioon haldab seda seadet ja võib jälgida võrguliiklust. Puudutage üksikasjade vaatamiseks."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Administraator muutis teie asukohaseadeid"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Puudutage oma asukohaseadete nägemiseks."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Riigi tuvastaja"</string>
+ <string name="location_service" msgid="2439187616018455546">"Asukohateenus"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-teenus"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Anduri märguande teenus"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Teenus Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seade kustutatakse"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administraatori rakendust ei saa kasutada. Teie seade tühjendatakse nüüd.\n\nKui teil on küsimusi, võtke ühendust organisatsiooni administraatoriga."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Rakendus <xliff:g id="OWNER_APP">%s</xliff:g> on printimise keelanud."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Veaaruande jaoks ekraanipildi jäädvustamine <xliff:g id="NUMBER_1">%d</xliff:g> sekundi pärast.</item>
<item quantity="one">Veaaruande jaoks ekraanipildi jäädvustamine <xliff:g id="NUMBER_0">%d</xliff:g> sekundi pärast.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Veaaruandega koos jäädvustati ekraanipilt"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Ekraanipildi jäädvustamine koos veaaruandega ebaõnnestus"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Hääletu režiim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Heli on VÄLJAS"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Heli on SEES"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"juurdepääs asukohapakkuja lisakäskudele"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Võimaldab rakendusel juurde pääseda asukohapakkuja erikäskudele. See võib lubada rakendusel mõjutada GPS-i või muude asukohaallikate tööd."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"juurdepääs täpsele asukohale ainult esiplaanil"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"See rakendus hangib teie täpse asukoha ainult siis, kui see töötab esiplaanil. Asukohateenused peavad olema sisse lülitatud ja teie seadmes saadaval, et rakendus saaks neid kasutada. See võib suurendada akutoite tarbimist."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"See rakendus saab rakenduse kasutamise ajal asukohateenuste kaudu teada teie täpse asukoha. Selleks et rakendus saaks asukohateavet, peavad asukohateenused olema seadmes sisse lülitatud. See võib suurendada akukasutust."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"juurdepääs ligikaudsele asukohale ainult esiplaanil"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"See rakendus hangib teie ligikaudse asukoha ainult siis, kui see töötab esiplaanil. Asukohateenused peavad olema sisse lülitatud ja teie seadmes saadaval, et rakendus saaks neid kasutada."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"See rakendus saab rakenduse kasutamise ajal asukohateenuste kaudu teada teie ligikaudse asukoha. Selleks et rakendus saaks asukohateavet, peavad asukohateenused olema seadmes sisse lülitatud."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"juurdepääs asukohale taustal"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"See rakendus pääseb asukohale lisaks esiplaanil töötamise ajal juurde ka taustal töötamise ajal."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"See rakendus pääseb alati asukohateabele juurde (ka siis, kui te rakendust ei kasuta)."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"muuda heliseadeid"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Võimaldab rakendusel muuta üldiseid heliseadeid, näiteks helitugevust ja seda, millist kõlarit kasutatakse väljundiks."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"salvesta heli"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"See rakendus saab mis tahes ajal kaameraga pildistada ja videoid salvestada."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Rakendusel või teenusel lubatakse süsteemi kaameratele juurde pääseda, et pilte ja videoid jäädvustada"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"See privileegidega | süsteemirakendus saab süsteemi kaameraga alati pilte ja videoid jäädvustada. Rakendusel peab olema ka luba android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Lubab rakendusel või teenusel kaameraseadmete avamise või sulgemise kohta tagasikutseid vastu võtta."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"See allkirjarakendus saab mis tahes kaameraseadme avamisel (vastava rakendusepaketiga) või sulgemisel tagasikutseid vastu võtta."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"juhtige vibreerimist"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Võimaldab rakendusel juhtida vibreerimist."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Võimaldab rakendusel juurde pääseda vibreerimise olekule."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Võimaldab rakendusel kõnesid süsteemi kaudu marsruutida, et helistamiskogemust täiustada."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"süsteemi kaudu kõnede vaatamine ja juhtimine."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Lubab rakendusel seadmes vaadata ja juhtida käimasolevaid kõnesid. See hõlmab sellist teavet nagu kõnede numbrid ja olek."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"jätka kõnet teises rakenduses"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Lubab rakendusel jätkata kõnet, mida alustati teises rakenduses."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lugeda telefoninumbreid"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Rakendusel lubatakse juurde pääseda seadme telefoninumbritele."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"hoida auto ekraani sisselülitatuna"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"tahvelarvuti uinumise vältimine"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"takistada Android TV seadme unerežiimi lülitumist"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"väldi telefoni uinumist"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Lubab rakendusel auto ekraani sisselülitatuna hoida."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Võimaldab rakendusel vältida tahvelarvuti uinumist."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Võimaldab rakendusel takistada Android TV seadme unerežiimi aktiveerumist."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Võimaldab rakendusel vältida telefoni uinumist."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Proovige uuesti."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ühtegi sõrmejälge pole registreeritud."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Selles seadmes pole sõrmejäljeandurit."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Andur on ajutiselt keelatud."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Sõrm <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nägu ei saa kinnitada. Proovige uuesti."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Face Unlocki ei ole seadistatud."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Seade ei toeta Face Unlocki."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Andur on ajutiselt keelatud."</string>
<string name="face_name_template" msgid="3877037340223318119">"Nägu <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobiilsidevõrgul puudub Interneti-ühendus"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Võrgul puudub Interneti-ühendus"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Privaatsele DNS-serverile ei pääse juurde"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Ühendatud"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Võrgu <xliff:g id="NETWORK_SSID">%1$s</xliff:g> ühendus on piiratud"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Puudutage, kui soovite siiski ühenduse luua"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Lülitati võrgule <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-silumine ühendatud"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Puudutage USB silumise väljalülitamiseks"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Valige USB silumise keelamiseks"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Juhtmevaba silumine on ühendatud"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Puudutage juhtmevaba silumise väljalülitamiseks"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Valige juhtmevaba silumise keelamiseks."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testrakendirežiim on lubatud"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Testrakendirežiimi keelamiseks taastage tehaseseaded."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seeriakonsool on lubatud"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Taustal käitatud esiplaanil oleval teenusel paketist <xliff:g id="PACKAGENAME">%1$s</xliff:g> ei ole tulevastes R-järkudes luba „kui kasutuses”. Vaadake saiti go/r-bg-fgs-restriction ja esitage veaaruanne."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Kas suurendada helitugevuse taset üle soovitatud taseme?\n\nPikaajaline valju helitugevusega kuulamine võib kuulmist kahjustada."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Kas kasutada juurdepääsetavuse otseteed?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kui otsetee on sisse lülitatud, käivitab mõlema helitugevuse nupu kolm sekundit all hoidmine juurdepääsetavuse funktsiooni."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Kas anda teenusele <xliff:g id="SERVICE">%1$s</xliff:g> teie seadme üle täielik kontroll?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kui lülitate sisse teenuse <xliff:g id="SERVICE">%1$s</xliff:g>, ei kasuta seade andmete krüpteerimise täiustamiseks ekraanilukku."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täielik haldusõigus sobib rakendustele, mis pakuvad juurdepääsufunktsioone. Enamiku rakenduste puhul seda ei soovitata."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekraanikuva vaatamine ja haldamine"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"See saab lugeda kogu ekraanil kuvatud sisu ja kuvada sisu rakenduste peal."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Toimingute vaatamine ja tegemine"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"See saab jälgida teie suhtlust rakenduse või riistvaraanduriga ja teie eest rakendustega suhelda."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Luba"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Keela"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Puudutage funktsiooni, et selle kasutamist alustada."</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Valige rakendused, mida juurdepääsetavuse nupuga kasutada"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Valige rakendused, mida helitugevuse klahvi otseteega kasutada"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> on välja lülitatud"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Muuda otseteid"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Tühista"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Valmis"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Lülita otsetee välja"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kasuta otseteed"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Värvide ümberpööramine"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Kategoriseerimata"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Teie määrasite nende märguannete tähtsuse."</string>
<string name="importance_from_person" msgid="4235804979664465383">"See on tähtis osalevate inimeste tõttu."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Rakenduse kohandatud märguanne"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Kas lubada rakendusel <xliff:g id="APP">%1$s</xliff:g> luua uus kasutaja kontoga <xliff:g id="ACCOUNT">%2$s</xliff:g> (selle kontoga kasutaja on juba olemas)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Kas lubada rakendusel <xliff:g id="APP">%1$s</xliff:g> luua uus kasutaja kontoga <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Keele lisamine"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Juurdepääsetavuse menüü"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> pealkirjariba."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on lisatud salve PIIRANGUTEGA"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Isiklik"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Töö"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Isiklik vaade"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Töövaade"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Töörakendustega ei saa jagada"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Isiklike rakendustega ei saa jagada"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT-administraator blokeeris isiklike ja tööprofiilide vahel jagamise"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ei pääse töörakendustele juurde"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT-administraator ei luba teil isiklikku sisu töörakendustes vaadata"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Isiklikele rakendustele ei pääse juurde"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT-administraator ei luba teil tööga seotud sisu isiklikes rakendustes vaadata"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Sisu jagamiseks lülitage tööprofiil sisse"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Sisu vaatamiseks lülitage tööprofiil sisse"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Ühtegi rakendust pole saadaval"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Lülita sisse"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefonikõnede heli salvestamine ja esitamine"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kui see rakendus on määratud helistamise vaikerakenduseks, lubatakse sellel salvestada ja esitada telefonikõnede heli."</string>
</resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 8e247fc..ef66df5 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -89,7 +89,7 @@
<string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Ezin duzu egin larrialdi-deirik Wi-Fi bidez"</string>
<string name="notification_channel_network_alert" msgid="4788053066033851841">"Alertak"</string>
<string name="notification_channel_call_forward" msgid="8230490317314272406">"Dei-desbideratzea"</string>
- <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Larrialdi-deiak soilik jasotzeko modua"</string>
+ <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Larrialdi-zerbitzuen deiak jasotzeko modua"</string>
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Datu-konexioaren egoera"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"SMS mezuak"</string>
<string name="notification_channel_voice_mail" msgid="8457433203106654172">"Erantzungailuko mezuak"</string>
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"Erabilera pertsonalerako utzi du gailua administratzaileak"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"Jabeak kudeatzen du gailua"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Erakundeak kudeatzen du gailua eta baliteke sareko trafikoa gainbegiratzea. Sakatu hau xehetasunak ikusteko."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Administratzaileak kokapen-ezarpenak aldatu ditu"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"Sakatu kokapen-ezarpenak ikusteko."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Herrialde-hautemailea"</string>
+ <string name="location_service" msgid="2439187616018455546">"Kokapen-zerbitzua"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS zerbitzua"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sentsorearen jakinarazpen-zerbitzua"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Ilunabarreko zerbitzua"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Gailuko datuak ezabatu egingo dira"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Ezin da erabili administratzeko aplikazioa. Ezabatu egingo da gailuko eduki guztia.\n\nZalantzarik baduzu, jarri erakundeko administratzailearekin harremanetan."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> aplikazioak desgaitu egin du inprimatzeko aukera."</string>
@@ -247,6 +250,8 @@
<item quantity="other">Akatsen txostenaren argazkia aterako da <xliff:g id="NUMBER_1">%d</xliff:g> segundo barru.</item>
<item quantity="one">Akatsen txostenaren argazkia aterako da <xliff:g id="NUMBER_0">%d</xliff:g> segundo barru.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Pantaila-argazkia egin da akatsen txostenarekin"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Ezin izan da egin pantaila-argazkia akatsen txostenarekin"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Isilik modua"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Soinua DESAKTIBATUTA dago"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Soinua AKTIBATUTA dago"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"atzitu kokapen-hornitzaileen komando gehigarriak"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Kokapen-hornitzailearen agindu gehigarriak atzitzeko baimena ematen die aplikazioei. Horrela, agian aplikazioek GPSaren edo bestelako kokapenaren iturburuen funtzionamenduan eragina izan dezakete."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"lortu kokapen zehatza aurreko planoan bakarrik"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikazioak aurreko planoan funtzionatzen duenean bakarrik lor dezake zure kokapen zehatza. Kokapen-zerbitzuak aktibatuta eta erabilgarri eduki behar dituzu gailuan, aplikazioak erabil ditzan. Baliteke bateria gehiago erabiltzea."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Erabiltzen ari zarenean, aplikazioak kokapen zehatza lor dezake kokapen-zerbitzuen bidez. Aplikazioak kokapena lortu ahal izateko, kokapen-zerbitzuek aktibatuta egon behar dute gailuan. Bateria-erabilera areagotzen du horrek."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"atzitu gutxi gorabeherako kokapena aurreko planoan bakarrik"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikazioak aurreko planoan funtzionatzen duenean bakarrik lor dezake zure gutxi gorabeherako kokapena. Kokapen-zerbitzuak aktibatuta eta erabilgarri eduki behar dituzu gailuan, aplikazioak erabil ditzan."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Erabiltzen ari zarenean, aplikazioak gutxi gorabeherako kokapena lor dezake kokapen-zerbitzuen bidez. Aplikazioak kokapena lortu ahal izateko, kokapen-zerbitzuek aktibatuta egon behar dute gailuan."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"Atzitu kokapena atzeko planoan"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aurreko planoan egotean bezala, aplikazioak kokapena atzi dezake atzeko planoan egotean."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikazioak kokapena atzi dezake, baita aplikazioa erabiltzen ari ez zarenean ere."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"aldatu audio-ezarpenak"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Audio-ezarpen orokorrak aldatzeko baimena ematen dio; besteak beste, bolumena eta irteerarako zer bozgorailu erabiltzen den."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"grabatu audioa"</string>
@@ -431,10 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Aplikazioak edonoiz erabil dezake kamera argazkiak ateratzeko eta bideoak grabatzeko."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Onartu aplikazio edo zerbitzu bati sistemako kamerak atzitzea argazkiak eta bideoak ateratzeko"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Pribilegioa duen sistema-aplikazio honek edonoiz erabil dezake kamera argazkiak ateratzeko eta bideoak grabatzeko. Halaber, android.permission.CAMERA baimena izan behar du aplikazioak."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Eman baimena aplikazio edo zerbitzuari jakinarazpenak jasotzeko kamerak ireki edo ixten direnean."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Kamera ireki edo itxi dela (eta zer aplikazio-paketerekin) dioten jakinarazpenak jaso ditzake sinatzeko aplikazio honek."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrolatu dardara"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Bibragailua kontrolatzeko aukera ematen die aplikazioei."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Dardara-egoera atzitzeko baimena ematen dio aplikazioari."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"deitu zuzenean telefono-zenbakietara"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Telefono-zenbakietara zuk esku hartu gabe deitzeko baimena ematen die aplikazioei. Horrela, ustekabeko gastuak edo deiak eragin daitezke. Aplikazio gaiztoek erabil dezakete zuk berretsi gabeko deiak eginda gastuak eragiteko."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"atzitu IMS dei-zerbitzua"</string>
@@ -445,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Deiak sistemaren bidez bideratzea baimentzen die aplikazioei, deien zerbitzua ahal bezain ona izan dadin."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ikusi eta kontrolatu deiak sistemaren bidez."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Gailuan abian diren deiak eta deion informazioa ikusi eta kontrolatzeko baimena ematen dio aplikazioari; besteak beste, deien zenbakiak eta deien egoera."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Jarraitu beste aplikazio batean hasitako deia"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Beste aplikazio batean hasitako dei bat jarraitzea baimentzen dio aplikazioari."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"irakurri telefono-zenbakiak"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Gailuaren telefono-zenbakiak atzitzeko baimena ematen die aplikazioei."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"mantendu piztuta autoko pantaila"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"eragotzi tableta inaktibo ezartzea"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV gailua inaktibo ezar dadin eragotzi"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"eragotzi telefonoa inaktibo ezartzea"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Autoko pantaila piztuta mantentzeko baimena ematen dio aplikazioari."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Tableta inaktibo ezartzea galaraztea baimentzen die aplikazioei."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV gailua inaktibo ezartzea eragozteko baimena ematen die aplikazioei."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Telefonoa inaktibo ezartzea galaraztea baimentzen die aplikazioei."</string>
@@ -487,7 +499,7 @@
<string name="permdesc_changeWifiMulticastState" product="tablet" msgid="191079868596433554">"Wi-Fi sarearen bidez gailu guztiei bidalitako paketeak jasotzeko baimena ematen die aplikazioei multidifusio-helbideak erabilita, ez tableta soilik. Multidifusiokoa ez den moduak baino bateria gehiago erabiltzen du."</string>
<string name="permdesc_changeWifiMulticastState" product="tv" msgid="1336952358450652595">"Multidifusio-helbideak erabiliz wifi-sare bateko gailu guztiei (ez bakarrik Android TV gailuari) bidalitako paketeak jasotzeko baimena ematen die aplikazioei. Multidifusiokoa ez den moduak baino bateria gehiago erabiltzen du."</string>
<string name="permdesc_changeWifiMulticastState" product="default" msgid="8296627590220222740">"Wi-Fi sarearen bidez gailu guztiei bidalitako paketeak jasotzeko baimena ematen die aplikazioei multidifusio-helbideak erabilita, ez telefonoa soilik. Multidifusiokoa ez den moduak baino bateria gehiago erabiltzen du."</string>
- <string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"atzitu Bluetooth ezarpenak"</string>
+ <string name="permlab_bluetoothAdmin" msgid="6490373569441946064">"atzitu Bluetooth-aren ezarpenak"</string>
<string name="permdesc_bluetoothAdmin" product="tablet" msgid="5370837055438574863">"Tokiko Bluetooth tableta konfiguratzea eta urruneko gailuak detektatzea eta haiekin parekatzea baimentzen die aplikazioei."</string>
<string name="permdesc_bluetoothAdmin" product="tv" msgid="1623992984547014588">"Android TV gailuan Bluetooth-a konfiguratzeko eta urruneko gailuak hautemateko eta haiekin parekatzeko baimena ematen die aplikazioei."</string>
<string name="permdesc_bluetoothAdmin" product="default" msgid="7381341743021234863">"Tokiko Bluetooth telefonoa konfiguratzea eta urruneko gailuak detektatzea eta haiekin parekatzea baimentzen die aplikazioei."</string>
@@ -497,7 +509,7 @@
<string name="permdesc_changeWimaxState" product="tablet" msgid="4011097664859480108">"Tableta WiMAX sareetara konektatzeko edo haietatik deskonektatzeko baimena ematen die aplikazioei."</string>
<string name="permdesc_changeWimaxState" product="tv" msgid="5373274458799425276">"Android TV gailua WiMAX sareetara konektatzeko edo haietatik deskonektatzeko baimena ematen die aplikazioei."</string>
<string name="permdesc_changeWimaxState" product="default" msgid="1551666203780202101">"Telefonoa WiMAX sareetara konektatzeko edo haietatik deskonektatzeko baimena ematen die aplikazioei."</string>
- <string name="permlab_bluetooth" msgid="586333280736937209">"partekatu Bluetooth gailuekin"</string>
+ <string name="permlab_bluetooth" msgid="586333280736937209">"partekatu Bluetooth bidezko gailuekin"</string>
<string name="permdesc_bluetooth" product="tablet" msgid="3053222571491402635">"Tabletaren Bluetooth konfigurazioa ikusteko eta parekatutako gailuekin konexioak egiteko eta onartzeko baimena ematen die aplikazioei."</string>
<string name="permdesc_bluetooth" product="tv" msgid="8851534496561034998">"Android TV gailuaren Bluetooth konexioaren konfigurazioa ikusteko eta parekatutako gailuekin konexioak sortzeko eta onartzeko baimena ematen die aplikazioei."</string>
<string name="permdesc_bluetooth" product="default" msgid="2779606714091276746">"Telefonoaren Bluetooth konfigurazioa ikusteko eta parekatutako gailuekin konexioak egiteko eta onartzeko baimena ematen die aplikazioei."</string>
@@ -549,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Saiatu berriro."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ez da erregistratu hatz-markarik."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Gailu honek ez du hatz-marken sentsorerik."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sentsorea aldi baterako desgaitu da."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> hatza"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ezin da egiaztatu aurpegia. Saiatu berriro."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Ez duzu konfiguratu aurpegiaren bidez desblokeatzeko aukera."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Gailu honek ez du onartzen aurpegiaren bidez desblokeatzea."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sentsorea aldi baterako desgaitu da."</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> aurpegia"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Sare mugikorra ezin da konektatu Internetera"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Sarea ezin da konektatu Internetera"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Ezin da atzitu DNS zerbitzari pribatua"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Konektatuta"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> sareak konektagarritasun murriztua du"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Sakatu hala ere konektatzeko"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> erabiltzen ari zara orain"</string>
@@ -1321,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB bidezko arazketa konektatuta"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Sakatu USB bidezko arazketa desaktibatzeko"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Hautatu USB bidezko arazketa desgaitzeko."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Konektatu da hari gabeko arazketa"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Sakatu hau hari gabeko arazketa desaktibatzeko"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Hautatu hau hari gabeko arazketa desgaitzeko"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Proba-materialeko modua gaitu da"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Proba-materialaren modua desgaitzeko, berrezarri jatorrizko datuak."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serie-kontsola gaituta dago"</string>
@@ -1470,7 +1482,7 @@
<string name="sync_do_nothing" msgid="4528734662446469646">"Ez egin ezer, oraingoz"</string>
<string name="choose_account_label" msgid="5557833752759831548">"Aukeratu kontu bat"</string>
<string name="add_account_label" msgid="4067610644298737417">"Gehitu kontu bat"</string>
- <string name="add_account_button_label" msgid="322390749416414097">"Gehitu kontua"</string>
+ <string name="add_account_button_label" msgid="322390749416414097">"Gehitu kontu bat"</string>
<string name="number_picker_increment_button" msgid="7621013714795186298">"Handitu"</string>
<string name="number_picker_decrement_button" msgid="5116948444762708204">"Txikitu"</string>
<string name="number_picker_increment_scroll_mode" msgid="8403893549806805985">"Eduki sakatuta <xliff:g id="VALUE">%s</xliff:g>."</string>
@@ -1557,7 +1569,7 @@
<string name="default_audio_route_name" product="default" msgid="9213546147739983977">"Telefonoa"</string>
<string name="default_audio_route_name_dock_speakers" msgid="1551166029093995289">"Konektatu bozgorailuak oinarrira"</string>
<string name="default_audio_route_name_hdmi" msgid="5474470558160717850">"HDMI"</string>
- <string name="default_audio_route_name_headphones" msgid="6954070994792640762">"Aurikularrak"</string>
+ <string name="default_audio_route_name_headphones" msgid="6954070994792640762">"Entzungailuak"</string>
<string name="default_audio_route_name_usb" msgid="895668743163316932">"USB"</string>
<string name="default_audio_route_category_name" msgid="5241740395748134483">"Sistema"</string>
<string name="bluetooth_a2dp_audio_route_name" msgid="4214648773120426288">"Bluetooth bidezko audioa"</string>
@@ -1624,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> webgunearen atzeko planoak hasitako aurreko planoko zerbitzuak ez du izango erabili bitarteko baimenik etorkizuneko R konpilazioetan. Joan go/r-bg-fgs-restriction atalera eta egin akatsaren txostena."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bolumena gomendatutako mailatik gora igo nahi duzu?\n\nMusika bolumen handian eta denbora luzez entzuteak entzumena kalte diezazuke."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erabilerraztasun-lasterbidea erabili nahi duzu?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Lasterbidea aktibatuta dagoenean, bi bolumen-botoiak hiru segundoz sakatuta abiaraziko da erabilerraztasun-eginbidea."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Gailua guztiz kontrolatzeko baimena eman nahi diozu <xliff:g id="SERVICE">%1$s</xliff:g> zerbitzuari?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> aktibatzen baduzu, gailuak ez du pantailaren blokeoa erabiliko datuen enkriptatzea hobetzeko."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erabilerraztasun-beharrak asetzen dituzten aplikazioetan da egokia kontrol osoa, baina ez aplikazio gehienetan."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ikusi eta kontrolatu pantaila"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pantailako eduki guztia irakur dezake, eta beste aplikazioen gainean edukia bistaratu."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ikusi eta gauzatu ekintzak"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikazioekin edo hardware-sentsoreekin dituzun interakzioen jarraipena egin dezake, eta zure izenean beste aplikazio batzuekin interakzioan jardun."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Baimendu"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Ukatu"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Eginbide bat erabiltzen hasteko, saka ezazu:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Aukeratu Erabilerraztasuna botoiarekin erabili nahi dituzun aplikazioak"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Aukeratu bolumen-botoiaren lasterbidearekin erabili nahi dituzun aplikazioak"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Desaktibatu da <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editatu lasterbideak"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Utzi"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Eginda"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desaktibatu lasterbidea"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Erabili lasterbidea"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Koloreen alderantzikatzea"</string>
@@ -1848,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Kategoriarik gabea"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Zuk ezarri duzu jakinarazpen hauen garrantzia."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Garrantzitsua da eragiten dien pertsonengatik."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Aplikazio-jakinarazpen pertsonalizatua"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> kontua duen erabiltzailea sortzeko baimena eman nahi diozu <xliff:g id="APP">%1$s</xliff:g> aplikazioari? (Badago kontu hori duen erabiltzaile bat)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> kontua duen erabiltzailea sortzeko baimena eman nahi diozu <xliff:g id="APP">%1$s</xliff:g> aplikazioari?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Gehitu hizkuntza"</string>
@@ -2019,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erabilerraztasun-menua"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioko azpitituluen barra."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Murriztuen edukiontzian ezarri da <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Pertsonala"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Lanekoa"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Ikuspegi pertsonala"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Laneko ikuspegia"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ezin da partekatu laneko aplikazioekin"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Ezin da partekatu aplikazio pertsonalekin"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IKT saileko administratzaileak blokeatu egin du edukia profil pertsonalen eta laneko profilen artean partekatzeko aukera"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ezin dira atzitu laneko aplikazioak"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IKT saileko administratzaileak ez dizu uzten eduki pertsonala laneko aplikazioetan ikusten"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Ezin dira atzitu aplikazio pertsonalak"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IKT saileko administratzaileak ez dizu uzten laneko edukia aplikazio pertsonaletan ikusten"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Edukia partekatzeko, aktibatu laneko profila"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Edukia ikusteko, aktibatu laneko profila"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Ez dago aplikaziorik erabilgarri"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktibatu"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Grabatu edo erreproduzitu telefono-deietako audioa"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Aplikazio hau markagailu lehenetsia denean, telefono-deietako audioa grabatu edo erreproduzitzeko aukera ematen dio."</string>
</resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index c603da3..8d41d09 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"سازمانتان این دستگاه را مدیریت میکند و ممکن است ترافیک شبکه را پایش کند. برای اطلاع از جزئیات، ضربه بزنید."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"سرپرست شما تنظیمات مکان را تغییر داده است"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"برای مشاهده تنظیمات مکان ضربه بزنید."</string>
+ <string name="country_detector" msgid="7023275114706088854">"کشوریاب"</string>
+ <string name="location_service" msgid="2439187616018455546">"خدمات مکان"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"سرویس GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"سرویس اعلان حسگر"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"سرویس Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"دستگاهتان پاک خواهد شد"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"برنامه سرپرست سیستم را نمیتوان استفاده کرد. دستگاه شما در این لحظه پاک میشود.\n\nاگر سؤالی دارید، با سرپرست سیستم سازمانتان تماس بگیرید."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> چاپ کردن را غیرفعال کرده است."</string>
@@ -245,6 +250,8 @@
<item quantity="one">تا <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دیگر عکس صفحهنمایش برای گزارش اشکال گرفته میشود.</item>
<item quantity="other">تا <xliff:g id="NUMBER_1">%d</xliff:g> ثانیه دیگر عکس صفحهنمایش برای گزارش اشکال گرفته میشود.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"نماگرفت با گزارش اشکال گرفته شد"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"نماگرفت با گزارش اشکال گرفته نشد"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"حالت ساکت"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"صدا خاموش است"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"صدا روشن است"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"دسترسی به فرمانهای بیشتر ارائه دهنده مکان"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"به برنامه اجازه میدهد به دستورات ارائهدهنده مکان تکمیلی دسترسی داشته باشد. این کار ممکن است به برنامه امکان دهد با کارکرد GPS یا منابع دیگر مکان تداخل داشته باشد."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"دسترسی به مکان دقیق فقط در پیشزمینه"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"این برنامه فقط زمانی میتواند موقعیت مکانی دقیق شما را دریافت کند که در پیشزمینه باشد. برای اینکه برنامه بتواند از خدمات مکان استفاده کند، این خدمات باید در دستگاهتان روشن و در دسترس باشد. ممکن است با این کار مصرف باتری افزایش یابد."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"این برنامه زمانی که درحال استفاده است میتواند ازطریق خدمات مکان، مکان دقیق شما را دریافت کند. برای اینکه برنامه بتواند موقعیت مکان را دریافت کند، خدمات مکان دستگاهتان باید روشن باشد. روشن بودن خدمات مکان ممکن است مصرف باتری را افزایش دهد."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"دسترسی به مکان تقریبی فقط در پیشزمینه"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"این برنامه فقط هنگامیکه در پیشزمینه است میتواند مکان تقریبی شما را دریافت کند. برای اینکه برنامه بتواند از خدمات مکان استفاده کند، این خدمات باید روشن و در دستگاهتان در دسترس باشند."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"این برنامه زمانی که درحال استفاده است میتواند ازطریق خدمات مکان، مکان تقریبی شما را دریافت کند. برای اینکه برنامه بتواند موقعیت مکان را دریافت کند، خدمات مکان دستگاهتان باید روشن باشد."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"دسترسی به مکان در پسزمینه"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"این برنامه علاوهبر دسترسی به مکان در پیشزمینه، میتواند هنگام اجرا در پسزمینه نیز به مکان دسترسی داشته باشد."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"این برنامه همیشه میتواند به مکان دسترسی داشته باشد، حتی زمانی که از آن برنامه استفاده نمیشود."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"تغییر تنظیمات صوتی"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"به برنامه امکان میدهد تنظیمات صوتی کلی مانند میزان صدا و بلندگوی مورد استفاده برای پخش صدا را تغییر دهد."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ضبط صدا"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"این برنامه میتواند در هرزمانی با استفاده از دوربین عکس و فیلم بگیرد."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"به برنامه یا سرویسی اجازه دهید برای عکسبرداری و فیلمبرداری به دوربینهای سیستم دسترسی داشته باشد"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"این برنامه سیستم که دارای امتیاز دسترسی است میتواند با استفاده از دوربین سیستم در هر زمانی عکسبرداری و فیلمبرداری کند. برنامه به مجوز android.permission.CAMERA هم نیاز دارد."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"مجاز کردن برنامه یا سرویس برای دریافت پاسخ تماس درباره دستگاههای دوربینی که باز یا بسته میشوند."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"این برنامهٔ امضا میتواند هروقت دستگاه دوربین باز (براساس بسته برنامه) یا بسته میشود، پاسخ تماس دریافت کند."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"کنترل لرزش"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"به برنامه اجازه میدهد تا لرزاننده را کنترل کند."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"به برنامه اجازه میدهد تا به وضعیت لرزاننده دسترسی داشته باشد."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"به برنامه امکان میدهد برای بهبود تجربه تماس، تماسهایش را ازطریق سیستم برقرار کند."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"دیدن و کنترل تماسها ازطریق سیستم."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"به برنامهها اجازه میدهد تماسهای درحال انجام را در این دستگاه ببیند و کنترل کند. این مورد شامل اطلاعاتی مانند شماره تلفن برای تماسها و وضعیت تماسها است."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"معافیت از محدودیتهای مربوط به ضبط صدا"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"برنامه را از محدودیتهای مربوط به ضبط صدا معاف کنید."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ادامه دادن تماس از برنامهای دیگر"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"به برنامه اجازه میدهد تماسی را که در برنامه دیگری شروع شده ادامه دهد."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"خواندن شماره تلفنها"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"به برنامه امکان میدهد به شماره تلفنهای دستگاه دسترسی داشته باشد."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"روشن نگه داشتن صفحهنمایش خودرو"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ممانعت از به خواب رفتن رایانهٔ لوحی"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"مانع از خوابیدن دستگاه Android TV میشود"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ممانعت از به خواب رفتن تلفن"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"به برنامه اجازه میدهد صفحهنمایش خودرو را روشن نگه دارد."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"به برنامه اجازه میدهد تا از غیرفعال شدن رایانهٔ لوحی جلوگیری کند."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"به برنامه اجازه میدهد مانع از بهخواب رفتن دستگاه Android TV شود."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"به برنامه اجازه میدهد تا از غیرفعال شدن تلفن جلوگیری کند."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"دوباره امتحان کنید."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"اثر انگشتی ثبت نشده است."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"این دستگاه حسگر اثر انگشت ندارد."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"حسگر بهطور موقت غیرفعال است."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"انگشت <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"چهره تأیید نشد. دوباره امتحان کنید."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"«بازگشایی با چهره» را راهاندازی نکردهاید."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"«بازگشایی با چهره» در این دستگاه پشتیبانی نمیشود."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"حسگر بهطور موقت غیرفعال است."</string>
<string name="face_name_template" msgid="3877037340223318119">"چهره <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"شبکه تلفن همراه به اینترنت دسترسی ندارد"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"شبکه به اینترنت دسترسی ندارد"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"سرور DNS خصوصی قابل دسترسی نیست"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"متصل"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> اتصال محدودی دارد"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"بههرصورت، برای اتصال ضربه بزنید"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"به <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> تغییر کرد"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"اشکالزدایی USB متصل شد"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"برای خاموش کردن اشکالزدایی USB ضربه بزنید"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"انتخاب کنید تا رفع عیب USB غیرفعال شود."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"اشکالزدایی بیسیم متصل است"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"برای خاموش کردن اشکالزدایی بیسیم ضربه بزنید"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"برای غیرفعال کردن اشکالزدایی بیسیم انتخاب کنید."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"«حالت مجموعه دادههای تست» فعال شد"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"برای غیرفعال کردن «حالت مجموعه دادههای تست»، بازنشانی کارخانهای کنید."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"کنسول سریال فعال است"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"سرویس پیشنمای <xliff:g id="PACKAGENAME">%1$s</xliff:g>، که در پسزمینه شروع شده، در ساختهای آتی R اجازهٔ حین استفاده نخواهد داشت. لطفاً به go/r-bg-fgs-restriction بروید و گزارش اشکال ارسال کنید."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"میزان صدا را به بالاتر از حد توصیه شده افزایش میدهید؟\n\nگوش دادن به صداهای بلند برای مدت طولانی میتواند به شنواییتان آسیب وارد کند."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"از میانبر دسترسپذیری استفاده شود؟"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"وقتی میانبر روشن باشد، با فشار دادن هردو دکمه صدا بهمدت ۳ ثانیه ویژگی دسترسپذیری فعال میشود."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"به <xliff:g id="SERVICE">%1$s</xliff:g> اجازه میدهید بر دستگاهتان کنترل کامل داشته باشد؟"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"اگر <xliff:g id="SERVICE">%1$s</xliff:g> را روشن کنید، دستگاه شما از قفل صفحه شما جهت بهبود رمزگذاری اطلاعات استفاده نخواهد کرد."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"کنترل کامل برای بیشتر برنامهها مناسب نیست، بهجز برنامههایی که به شما در زمینه نیازهای دسترسپذیری کمک میکند."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"مشاهده و کنترل صفحه"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"میتواند همه محتوای صفحه را بخواند و آن را روی بقیه برنامهها نمایش دهد."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"مشاهده و انجام کنشها"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"این عملکرد میتواند با برنامه یا حسگری سختافزاری تعاملاتتان را ردیابی کند و ازطرف شما با برنامهها تعامل داشته باشد."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"مجاز"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"رد کردن"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"برای استفاده از ویژگی، روی آن ضربه بزنید:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"انتخاب برنامههای موردنظر برای استفاده با دکمه دسترسپذیری"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"انتخاب برنامههای موردنظر برای استفاده با میانبر کلید میزان صدا"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> خاموش شده است"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ویرایش میانبرها"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"لغو"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"تمام"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"خاموش کردن میانبر"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"استفاده از میانبر"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"وارونگی رنگ"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"دستهبندینشده"</string>
<string name="importance_from_user" msgid="2782756722448800447">"شما اهمیت این اعلانها را تنظیم میکنید."</string>
<string name="importance_from_person" msgid="4235804979664465383">"به دلیل افراد درگیر مهم است."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"اعلان برنامه سفارشی"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"به<xliff:g id="APP">%1$s</xliff:g> اجازه میدهید با <xliff:g id="ACCOUNT">%2$s</xliff:g> (کاربری با این حساب درحالحاضر وجود دارد) کاربری جدید ایجاد کند؟"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"به <xliff:g id="APP">%1$s</xliff:g> اجازه میدهید با <xliff:g id="ACCOUNT">%2$s</xliff:g> کاربری جدید ایجاد کند؟"</string>
<string name="language_selection_title" msgid="52674936078683285">"افزودن زبان"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"منوی دسترسپذیری"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"نوار شرح <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> در سطل «محدودشده» قرار گرفت"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"شخصی"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"کاری"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"نمای شخصی"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"نمای کاری"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"همرسانی بااستفاده از «برنامههای کاری» امکانپذیر نیست"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"همرسانی بااستفاده از برنامههای شخصی امکانپذیر نیست"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"سرپرست فناوری اطلاعات همرسانی بین نمایههای شخصی و کاری را مسدود کرده است"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"دسترسی به برنامههای کاری ممکن نیست"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"سرپرست فناوری اطلاعات اجازه نمیدهد محتوای شخصی را در برنامههای کاری مشاهده کنید"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"دسترسی به برنامههای شخصی ممکن نیست"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"سرپرست فناوری اطلاعات اجازه نمیدهد محتوای کاری را در برنامههای شخصی مشاهده کنید"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"برای همرسانی محتوا، نمایه کاری را روشن کنید"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"برای مشاهده محتوا، نمایه کاری را روشن کنید"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"هیچ برنامهای در دسترس نیست"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"روشن کردن"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ضبط یا پخش صدا در تماسهای تلفنی"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"به این برنامه اجازه میدهد وقتی بهعنوان برنامه شمارهگیر پیشفرض تنظیم شده است، در تماسهای تلفنی صدا ضبط یا پخش کند."</string>
</resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index 5ee67d95..3865704 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisaatiosi hallinnoi tätä laitetta ja voi tarkkailla verkkoliikennettä. Katso lisätietoja napauttamalla."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Järjestelmänvalvoja muutti sijaintiasetuksia"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Katso sijaintiasetukset napauttamalla."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Maan tunnistin"</string>
+ <string name="location_service" msgid="2439187616018455546">"Sijaintipalvelu"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-palvelu"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Anturin ilmoituspalvelu"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight-palvelu"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Laitteen tiedot poistetaan"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Hallintasovellusta ei voi käyttää. Laitteen tiedot pyyhitään.\n\nPyydä ohjeita järjestelmänvalvojaltasi."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> on poistanut tulostuksen käytöstä."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Virheraporttiin otetaan kuvakaappaus <xliff:g id="NUMBER_1">%d</xliff:g> sekunnin kuluttua.</item>
<item quantity="one">Virheraporttiin otetaan kuvakaappaus <xliff:g id="NUMBER_0">%d</xliff:g> sekunnin kuluttua.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Kuvakaappaus otettu virheraportin kanssa"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Kuvakaappauksen ottaminen virheraportin kanssa epäonnistui"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Äänetön tila"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Äänet ovat POISSA KÄYTÖSTÄ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Äänet ovat KÄYTÖSSÄ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"käytä lisää sijainnintarjoajakomentoja"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Antaa sovelluksen käyttää ylimääräisiä sijaintipalvelukomentoja. Sovellus saattaa tällöin häiritä GPS:n tai muiden sijaintilähteiden toimintaa."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"käyttää tarkkaa sijaintia vain etualalla"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Tämä sovellus saa tarkat sijaintitietosi käyttöönsä vain etualalla. Sijaintipalveluiden tulee olla päällä ja käytettävissä laitteella, jotta sovellus voi käyttää niitä. Tämä voi lisätä akun kulutusta."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Tämä sovellus saa täsmällisen sijaintisi sijaintipalveluista, kun sovellusta käytetään. Laitteesi sijaintipalveluiden on oltava päällä, jotta sovellus saa sijaintisi. Tämä voi lisätä akun käyttöä."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"käyttää karkeaa sijaintia vain etualalla"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Tämä sovellus saa karkean sijaintisi käyttöönsä vain ollessaan etualalla. Sijaintipalveluiden tulee olla päällä ja käytettävissä laitteellasi, jotta sovellus voi käyttää niitä."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Tämä sovellus saa likimääräisen sijaintisi sijaintipalveluista, kun sovellusta käytetään. Laitteesi sijaintipalveluiden on oltava päällä, jotta sovellus saa sijaintisi."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"käytä sijaintia taustalla"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Tämä sovellus voi käyttää sijaintia taustalla ja etualalla."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Tällä sovelluksella on pääsy sijaintitietoihin milloin tahansa, myös silloin kun sovellusta ei käytetä."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"muuta ääniasetuksia"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Antaa sovelluksen muokata yleisiä ääniasetuksia, kuten äänenvoimakkuutta ja käytettävää kaiutinta."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"tallentaa ääntä"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Tämä sovellus voi ottaa kameralla kuvia ja videoita koska tahansa."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Salli sovellukselle tai palvelulle pääsy järjestelmän kameroihin, jotta se voi ottaa kuvia ja nauhoittaa videoita"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Tämä käyttöoikeuden saanut | järjestelmäsovellus voi ottaa järjestelmän kameralla kuvia ja videoita koska tahansa. Sovelluksella on oltava myös android.permission.CAMERA-käyttöoikeus"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Salli sovelluksen tai palvelun vastaanottaa vastakutsuja kameralaitteiden avaamisesta tai sulkemisesta."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Tämä allekirjoitussovellus voi vastaanottaa vastakutsuja, kun mikä tahansa kameralaite avataan tai suljetaan (jollakin sovelluspaketilla)"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"hallita värinää"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Antaa sovelluksen hallita värinää."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Sallii sovelluksen käyttää värinätilaa."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Tämä sallii sovelluksen ohjata puhelut järjestelmän kautta, mikä auttaa parantamaan puhelujen laatua."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"nähdä puhelut ja päättää niistä järjestelmässä"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Sovellus voi nähdä laitteella käynnissä olevat puhelut ja päättää niistä. Se näkee esimerkiksi puheluihin liittyvät numerot ja niiden tilat."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"saada vapautuksen äänen tallennusrajoituksista"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Vapauta sovellus äänen tallennusrajoituksista"</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"jatkaa toisen sovelluksen puhelua"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Antaa sovelluksen jatkaa puhelua, joka aloitettiin toisessa sovelluksessa."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lukea puhelinnumeroita"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Anna sovelluksen käyttää laitteella olevia puhelinnumeroita."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"pitää auton näytön päällä"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"estä tablet-laitetta menemästä virransäästötilaan"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"estää Android TV ‑laitetta siirtymästä virransäästötilaan"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"estä puhelinta menemästä virransäästötilaan"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Sallii sovelluksen pitää auton näytön päällä."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Antaa sovelluksen estää tablet-laitetta siirtymästä virransäästötilaan."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Antaa sovelluksen estää Android TV ‑laitetta siirtymästä virransäästötilaan."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Antaa sovelluksen estää puhelinta siirtymästä virransäästötilaan."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Yritä uudelleen."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Sormenjälkiä ei ole otettu käyttöön."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Laitteessa ei ole sormenjälkitunnistinta."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Tunnistin poistettu väliaikaisesti käytöstä."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Sormi <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Kasvoja ei voi vahvistaa. Yritä uudelleen."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Et ole määrittänyt Face Unlockia."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Tämä laite ei tue Face Unlockia."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Tunnistin poistettu väliaikaisesti käytöstä."</string>
<string name="face_name_template" msgid="3877037340223318119">"Kasvot <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobiiliverkko ei ole yhteydessä internetiin"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Verkko ei ole yhteydessä internetiin"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Ei pääsyä yksityiselle DNS-palvelimelle"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Yhdistetty"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> toimii rajoitetulla yhteydellä"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Yhdistä napauttamalla"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> otettiin käyttöön"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-vianetsintä yhdistetty"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Poista USB-virheenkorjaus käytöstä napauttamalla."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Poista USB-vianetsintä käytöstä valitsemalla tämä."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Langaton virheenkorjaus yhdistetty"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Poista langaton virheenkorjaus käytöstä napauttamalla"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Poista langaton virheenkorjaus käytöstä valitsemalla tämä."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testikehystila käytössä"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Palauta tehdasasetukset, niin voit poistaa testikehystilan käytöstä."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Sarjakonsoli käytössä"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Taustalla aloitettu etualan palvelu (<xliff:g id="PACKAGENAME">%1$s</xliff:g>) ei ole käytön aikana sallittu R:n tulevissa versioissa. Lue go/r-bg-fgs-restriction ja lähetä virheraportti."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Nostetaanko äänenvoimakkuus suositellun tason yläpuolelle?\n\nPitkäkestoinen kova äänenvoimakkuus saattaa heikentää kuuloa."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Käytetäänkö esteettömyyden pikanäppäintä?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kun pikanäppäin on käytössä, voit käynnistää esteettömyystoiminnon pitämällä molempia äänenvoimakkuuspainikkeita painettuna kolmen sekunnin ajan."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Saako <xliff:g id="SERVICE">%1$s</xliff:g> laitteesi täyden käyttöoikeuden?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jos <xliff:g id="SERVICE">%1$s</xliff:g> otetaan käyttöön, laitteesi ei käytä näytön lukitusta tiedon salauksen parantamiseen."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Täysi käyttöoikeus sopii esteettömyyssovelluksille, mutta ei useimmille sovelluksille."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Näytön katselu ja ohjaus"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Se voi lukea kaiken näytön sisällön ja näyttää sisältöä kaikista sovelluksista."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Toimintojen näkeminen ja suorittaminen"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Se voi seurata toimintaasi sovelluksella tai laitteistoanturilla ja käyttää sovelluksia puolestasi."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Salli"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Estä"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Aloita ominaisuuden käyttö napauttamalla sitä:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Valitse sovellukset, joita käytetään esteettömyyspainikkeella"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Valitse sovellukset, joita käytetään äänenvoimakkuuspikanäppäimellä"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> on laitettu pois päältä"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Muokkaa pikakuvakkeita"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Peruuta"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Valmis"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Poista pikanäppäin käytöstä"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Käytä pikanäppäintä"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Käänteiset värit"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Luokittelematon"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Voit valita näiden ilmoitusten tärkeyden."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Tämä on tärkeää siihen liittyvien ihmisten perusteella."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Oma sovellusilmoitus"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Saako <xliff:g id="APP">%1$s</xliff:g> luoda uuden käyttäjän (<xliff:g id="ACCOUNT">%2$s</xliff:g>) – tällä käyttäjällä on jo tili?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Saako <xliff:g id="APP">%1$s</xliff:g> luoda uuden käyttäjän (<xliff:g id="ACCOUNT">%2$s</xliff:g>)?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Lisää kieli"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Esteettömyysvalikko"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstityspalkki: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on nyt rajoitettujen ryhmässä"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Henkilökohtainen"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Työ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Henkilökohtainen näkymä"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Työnäkymä"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ei voi jakaa työsovellusten kanssa"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Ei voi jakaa henkilökohtaisten sovellusten kanssa"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Järjestelmänvalvojasi esti jakamisen henkilökohtaisten ja työprofiilien välillä"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ei pääsyä työsovelluksiin"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Järjestelmänvalvojasi ei anna sinun nähdä henkilökohtaista sisältöä työsovelluksissa"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Ei pääsyä henkilökohtaisiin sovelluksiin"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Järjestelmänvalvojasi ei anna sinun nähdä työsisältöä henkilökohtaisissa sovelluksissa"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Laita työprofiili päälle jakaaksesi sisältöä"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Laita työprofiili päälle nähdäksesi sisältöä"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Sovelluksia ei ole käytettävissä"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Laita päälle"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Äänen tallentaminen tai toistaminen puheluiden aikana"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Sallii tämän sovelluksen tallentaa tai toistaa ääntä puheluiden aikana, kun sovellus on valittu oletuspuhelusovellukseksi."</string>
</resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 7c4dd03..3b72666 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'administrateur a libéré l\'appareil pour un usage personnel"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"L\'appareil est géré"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Touchez ici pour obtenir plus d\'information."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Les paramètres de localisation ont été changés par votre administrateur"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"Touchez l\'écran pour voir vos paramètres de localisation."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Détecteur de pays"</string>
+ <string name="location_service" msgid="2439187616018455546">"Service de localisation"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Service GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Service de notification de capteur"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Service de crépuscule"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Le contenu de votre appareil sera effacé"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, communiquez avec l\'administrateur de votre organisation."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -247,6 +250,8 @@
<item quantity="one">Saisie d\'écran pour le rapport de bogue dans <xliff:g id="NUMBER_1">%d</xliff:g> seconde.</item>
<item quantity="other">Saisie d\'écran pour le rapport de bogue dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Capture d\'écran prise avec le rapport de bogue"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Échec de la prise de capture d\'écran avec le rapport de bogue"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mode silencieux"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Le son est désactivé."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Le son est activé."</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accéder aux commandes de fournisseur de position géographique supplémentaires"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet à l\'application d\'accéder à des commandes de localisation supplémentaires offertes par le fournisseur. Elle est ainsi susceptible d\'interférer avec le bon fonctionnement du GPS ou de toute autre source de localisation."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"accéder à votre position précise seulement en avant-plan"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Cette application peut obtenir votre position exacte seulement lorsqu\'elle fonctionne en avant-plan. Les services de localisation doivent être activés et accessibles sur votre appareil pour que l\'application puisse les utiliser. Cela peut entraîner une utilisation accrue de la pile."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Cette application peut obtenir votre position précise des services de localisation lorsque vous utilisez l\'application. Les services de localisation doivent être activés sur votre appareil pour que l\'application puisse obtenir votre position. Cela pourrait accroître l\'utilisation de la pile."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accéder à votre position approximative seulement en avant-plan"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Cette application peut seulement obtenir votre position approximative lorsqu\'elle fonctionne en avant-plan. Les services de localisation doivent être activés et accessibles sur votre appareil pour que l\'application puisse les utiliser."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Cette application peut obtenir votre position approximative des services de localisation lorsque vous utilisez l\'application. Les services de localisation doivent être activés sur votre appareil pour que l\'application puisse obtenir votre position."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accès à la localisation en arrière-plan"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Cette application peut accéder à la position en arrière-plan, en plus d\'en avant-plan."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Cette application peut accéder à votre position en tout temps, même lorsque vous n\'utilisez pas l\'application."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifier vos paramètres audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet à l\'application de modifier les paramètres audio généraux, tels que le volume et la sortie audio utilisée."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"enregistrer des fichiers audio"</string>
@@ -431,10 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Cette application peut prendre des photos et enregistrer des vidéos à l\'aide de l\'appareil photo en tout temps."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Autoriser une application ou un service à accéder aux appareils photo système pour prendre des photos et filmer des vidéos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Cette application privilégiée | système peut prendre des photos ou filmer des vidéos à l\'aide d\'un appareil photo système en tout temps. L\'application doit également posséder l\'autorisation android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Autoriser une application ou un service de recevoir des rappels relatifs à l\'ouverture ou à la fermeture des appareils photos."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Cette application signature peut recevoir des rappels lorsque l\'appareil photo est ouvert ou fermé (par le paquet d\'application) en question."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"gérer le vibreur"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permet à l\'application de gérer le vibreur de l\'appareil."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet à l\'application d\'accéder au mode vibration."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"appeler directement des numéros de téléphone"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Permet à l\'application d\'appeler des numéros de téléphone sans votre intervention. Cette autorisation peut entraîner des frais ou des appels imprévus et ne permet pas à l\'application d\'appeler des numéros d\'urgence. Des applications malveillantes peuvent générer des frais en passant des appels sans votre consentement."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"accéder au service d\'appel IMS"</string>
@@ -445,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permet à l\'application d\'acheminer ses appels dans le système afin d\'améliorer l\'expérience d\'appel."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"afficher et gérer les appels à l\'aide du système."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Autorise l\'application à afficher et à gérer les appels sortants sur l\'appareil. Cela comprend de l\'information comme les numéros pour les appels et l\'état des appels."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuer un appel d\'une autre application"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permet à l\'application de continuer un appel commencé dans une autre application."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lire les numéros de téléphone"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permet à l\'application d\'accéder aux numéros de téléphone de l\'appareil."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"garder l\'écran de la voiture allumé"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"empêcher la tablette de passer en mode veille"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Empêcher votre appareil Android TV de passer en mode Veille"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"empêcher le téléphone de passer en mode veille"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permet à l\'application de garder l\'écran de la voiture allumé."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permet à l\'application d\'empêcher la tablette de passer en mode veille."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permet à l\'application d\'empêcher votre appareil Android TV de passer en mode Veille."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permet à l\'application d\'empêcher le téléphone de passer en mode veille."</string>
@@ -549,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Réessayer."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Aucune empreinte digitale enregistrée."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Cet appareil ne possède pas de capteur d\'empreintes digitales."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Le capteur a été désactivé temporairement."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Doigt <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossible de vérifier le visage. Réessayez."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Vous n\'avez pas config. le déverr. par reconn. faciale."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Cet appar. ne prend pas en charge le déverr. par reconn. faciale."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Le capteur a été désactivé temporairement."</string>
<string name="face_name_template" msgid="3877037340223318119">"Visage <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Le réseau cellulaire n\'offre aucun accès à Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Le réseau n\'offre aucun accès à Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Impossible d\'accéder au serveur DNS privé"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connecté"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Le réseau <xliff:g id="NETWORK_SSID">%1$s</xliff:g> offre une connectivité limitée"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Touchez pour vous connecter quand même"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Passé au réseau <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1321,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Débogage USB activé"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Touchez l\'écran pour désactiver le débogage USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Sélectionnez cette option pour désactiver le débogage USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Débogage sans fil connecté"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Touchez l\'écran pour désactiver le débogage sans fil"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Sélectionnez cette option pour désactiver le débogage sans fil."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Logiciel de test activé"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Effectuez une réinitialisation pour désactiver le mode Logiciel de test."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"La console série est activée"</string>
@@ -1624,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Le service de premier plan qui a démarré en arrière-plan provenant de <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne disposera pas de l\'autorisation pendant l\'utilisation dans les futures versions R. Veuillez accéder à go/r-bg-fgs-restriction et envoyer un rapport de bogue."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au-dessus du niveau recommandé?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour lancer une fonctionnalité d\'accessibilité."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permettre à <xliff:g id="SERVICE">%1$s</xliff:g> de commander complètement votre appareil?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Afficher et commander l\'écran"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Cette fonctionnalité peut lire tout le contenu à l\'écran et afficher du contenu par-dessus d\'autres applications."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Afficher et effectuer des actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Cette fonctionnalité peut faire le suivi de vos interactions avec une application ou un capteur matériel, et interagir avec des applications en votre nom."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Autoriser"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuser"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toucher une fonctionnalité pour commencer à l\'utiliser :"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choisir les applications à utiliser à l\'aide du bouton d\'accessibilité"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choisir les applications à utiliser avec le raccourci des touches de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> a été désactivé"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifier les raccourcis"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Annuler"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Désactiver le raccourci"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string>
@@ -1848,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sans catégorie"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Vous définissez l\'importance de ces notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ces notifications sont importantes en raison des participants."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notification d\'application personnalisée"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Autoriser <xliff:g id="APP">%1$s</xliff:g> à créer un utilisateur <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Un utilisateur est déjà associé à ce compte)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Autoriser <xliff:g id="APP">%1$s</xliff:g> à créer un profil d\'utilisateur avec le compte <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Ajouter une langue"</string>
@@ -2019,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le compartiment RESTREINT"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personnel"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Bureau"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Affichage personnel"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Affichage professionnel"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Partage impossible avec les applications professionnelles"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Partage impossible avec les applications personnelles"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Votre administrateur informatique a bloqué le partage entre votre profil personnel et votre profil professionnel"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Impossible d\'accéder aux applications professionnelles"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Votre administrateur informatique ne vous autorise pas à consulter du contenu personnel dans les applications professionnelles"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Impossible d\'accéder aux applications personnelles"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Votre administrateur informatique ne vous autorise pas à consulter du contenu professionnel dans les applications personnelles"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Pour partager du contenu, activez le profil professionnel"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Pour afficher du contenu, activez le profil professionnel"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Aucune application disponible"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activer"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Enregistrer ou lire du contenu audio lors des appels téléphoniques"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet à cette application, lorsqu\'elle est définie comme composeur par défaut, d\'enregistrer ou de lire du contenu audio lors des appels téléphoniques."</string>
</resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 9d2e267..6e986bc 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Votre organisation gère cet appareil et peut surveiller le trafic réseau. Appuyez ici pour obtenir plus d\'informations."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Paramètres de localisation modifiés par l\'administrateur"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Appuyez pour afficher les paramètres de localisation."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Détecteur de pays"</string>
+ <string name="location_service" msgid="2439187616018455546">"Service de localisation"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Service GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Service de notification du capteur"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Service Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Les données de votre appareil vont être effacées"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, contactez l\'administrateur de votre organisation."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Capture d\'écran pour le rapport de bug dans <xliff:g id="NUMBER_1">%d</xliff:g> seconde</item>
<item quantity="other">Capture d\'écran pour le rapport de bug dans <xliff:g id="NUMBER_1">%d</xliff:g> secondes</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Capture d\'écran avec rapport de bug effectuée"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Échec de la capture d\'écran avec le rapport de bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mode silencieux"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Le son est désactivé."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Le son est activé."</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Accès aux commandes de fournisseur de position géographique supplémentaires"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permet à l\'application d\'accéder à des commandes de localisation supplémentaires offertes par le fournisseur. Elle est ainsi susceptible d\'interférer avec le bon fonctionnement du GPS ou de toute autre source de localisation."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"accéder à la position exacte au premier plan uniquement"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Cette application peut obtenir votre position exacte uniquement lorsqu\'elle s\'exécute au premier plan. Les services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse les utiliser. Ceci peut réduire l\'autonomie de la batterie."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Cette application peut accéder à votre position précise via les services de localisation lorsque vous l\'utilisez. Pour cela, vous devez activer les services de localisation sur votre appareil au préalable. Cela risque de solliciter davantage la batterie."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"accéder à la position approximative au premier plan uniquement"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Cette application peut obtenir votre position approximative uniquement lorsqu\'elle s\'exécute au premier plan. Les services de localisation doivent être activés et disponibles sur votre appareil pour que l\'application puisse les utiliser."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Cette application peut obtenir votre position approximative via les services de localisation lorsque vous l\'utilisez. Pour cela, vous devez activer les services de localisation sur votre appareil au préalable."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accéder à la position en arrière-plan"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"En plus de l\'accès à la position en premier plan, cette application peut y accéder lorsqu\'elle s\'exécute en arrière-plan."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Cette application peut accéder à votre position à tout moment, y compris lorsque vous ne l\'utilisez pas."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifier vos paramètres audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permet à l\'application de modifier les paramètres audio généraux, tels que le volume et la sortie audio utilisée."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"enregistrer des fichiers audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Cette application peut utiliser l\'appareil photo pour prendre des photos et enregistrer des vidéos à tout moment."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Autoriser une application ou un service à accéder aux caméras système pour prendre des photos et enregistrer des vidéos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Cette application privilégiée ou système peut utiliser une caméra photo système pour prendre des photos et enregistrer des vidéos à tout moment. Pour cela, l\'application doit également disposer de l\'autorisation android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Autoriser une application ou un service à recevoir des rappels liés à l\'ouverture ou à la fermeture de caméras"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Cette application de signature peut recevoir des rappels lorsqu\'une caméra est ouverte (par un package d\'application) ou fermée."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"contrôler le vibreur"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permet à l\'application de contrôler le vibreur."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permet à l\'application d\'accéder à l\'état du vibreur."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Autorise l\'application à acheminer les appels via le système afin d\'optimiser le confort d\'utilisation."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"voir et contrôler les appels via le système."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permet à l\'application de voir et contrôler les appels en cours sur l\'appareil. Cela inclut des informations telles que les numéros associés aux appels et l\'état des appels."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuer un appel issu d\'une autre application"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Autorise l\'application à continuer un appel qui a été démarré dans une autre application."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lire les numéros de téléphone"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permet à l\'application d\'accéder aux numéros de téléphone de l\'appareil."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"laisser l\'écran de la voiture allumé"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"empêcher la tablette de passer en mode veille"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Empêcher votre appareil Android TV de passer en mode veille"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"empêcher le téléphone de passer en mode veille"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permet à l\'application de laisser l\'écran de la voiture allumé."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permet à l\'application d\'empêcher la tablette de passer en mode veille."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permet à l\'application d\'empêcher votre appareil Android TV de passer en mode veille."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permet à l\'application d\'empêcher le téléphone de passer en mode veille."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Veuillez réessayer."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Aucune empreinte digitale enregistrée."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Aucun lecteur d\'empreinte digitale n\'est installé sur cet appareil."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Capteur temporairement désactivé."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Doigt <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossible de valider votre visage. Réessayez."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Face Unlock n\'est pas configuré."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Face Unlock n\'est pas compatible avec cet appareil."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Capteur temporairement désactivé."</string>
<string name="face_name_template" msgid="3877037340223318119">"Visage <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Le réseau mobile ne dispose d\'aucun accès à Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Le réseau ne dispose d\'aucun accès à Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Impossible d\'accéder au serveur DNS privé"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connecté"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"La connectivité de <xliff:g id="NETWORK_SSID">%1$s</xliff:g> est limitée"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Appuyer pour se connecter quand même"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Nouveau réseau : <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Débogage USB activé"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Appuyez pour désactiver le débogage USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Sélectionnez cette option pour désactiver le débogage USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Débogage via Wi-Fi activé"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Appuyez pour désactiver le débogage via Wi-Fi"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Sélectionnez cette option pour désactiver le débogage via Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Atelier de test activé"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Rétablissez la configuration d\'usine pour désactiver le mode Atelier de test."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console série activée"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Le service de premier plan qui a démarré en arrière-plan et provenant de <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne disposera pas de l\'autorisation \"pendant l\'utilisation\" dans les futurs builds R. Veuillez accéder à go/r-bg-fgs-restriction et envoyer un rapport de bug."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au dessus du niveau recommandé ?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour démarrer une fonctionnalité d\'accessibilité."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Accorder le contrôle total de votre appareil au service <xliff:g id="SERVICE">%1$s</xliff:g> ?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Si vous activez <xliff:g id="SERVICE">%1$s</xliff:g>, votre appareil n\'utilisera pas le verrouillage de l\'écran pour améliorer le chiffrement des données."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Le contrôle total convient aux applications qui répondent à vos besoins d\'accessibilité. Il ne convient pas à la plupart des applications."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Afficher et contrôler l\'écran"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Cette fonctionnalité peut lire l\'intégralité du contenu à l\'écran et afficher du contenu par-dessus d\'autres applications."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Afficher et effectuer des actions"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Cette fonctionnalité peut effectuer le suivi de vos interactions avec une application ou un capteur matériel, et interagir avec les applications en votre nom."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Autoriser"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuser"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Appuyez sur une fonctionnalité pour commencer à l\'utiliser :"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Choisir les applications à utiliser avec le bouton Accessibilité"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Choisir les applications à utiliser avec le raccourci des touches de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Le service <xliff:g id="SERVICE_NAME">%s</xliff:g> a été désactivé"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifier les raccourcis"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Annuler"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Désactiver le raccourci"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utiliser le raccourci"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversion des couleurs"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sans catégorie"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Vous définissez l\'importance de ces notifications."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ces notifications sont importantes en raison des participants."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notification d\'application personnalisée"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Autoriser <xliff:g id="APP">%1$s</xliff:g> à créer un profil utilisateur avec le compte <xliff:g id="ACCOUNT">%2$s</xliff:g> (un utilisateur associé à ce compte existe déjà) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Autoriser <xliff:g id="APP">%1$s</xliff:g> à créer un profil utilisateur avec le compte <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Ajouter une langue"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le bucket RESTRICTED"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personnel"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Professionnel"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vue personnelle"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vue professionnelle"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Partage impossible avec les applications professionnelles"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Partage impossible avec les applications personnelles"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Votre administrateur informatique a bloqué le partage entre vos profils personnels et professionnels"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Impossible d\'accéder aux applications professionnelles"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Votre administrateur informatique a bloqué l\'affichage du contenu personnel dans les applications professionnelles"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Impossible d\'accéder aux applications personnelles"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Votre administrateur informatique a bloqué l\'affichage du contenu professionnel dans les applications personnelles"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Activez le profil professionnel pour partager du contenu"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Activez le profil professionnel pour afficher du contenu"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Aucune application disponible"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activer"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Enregistrer ou lire du contenu audio lors des appels téléphoniques"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permet à cette application d\'enregistrer ou de lire du contenu audio lors des appels téléphoniques lorsqu\'elle est définie comme clavier par défaut."</string>
</resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 0170f16..d7369dd 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"A túa organización xestiona este dispositivo e pode controlar o tráfico de rede. Toca para obter máis detalles."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"O administrador cambiou a configuración de localización"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toca para ver a configuración de localización."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector do país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servizo de localización"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Servizo GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Servizo de notificacións dos sensores"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Servizo Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Borrarase o teu dispositivo"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Non se pode utilizar a aplicación de administración. Borrarase o teu dispositivo.\n\nSe tes preguntas, contacta co administrador da organización."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> desactivou a impresión."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Vaise facer unha captura de pantalla para o informe de erros en <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="one">Vaise facer unha captura de pantalla para o informe de erros en <xliff:g id="NUMBER_0">%d</xliff:g> segundo.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Realizouse a captura de pantalla co informe de erros"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Produciuse un erro ao realizar a captura de pantalla co informe de erros"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo de silencio"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"O son está desactivado"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"O son está activado"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acceder a comandos adicionais do provedor de localización"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite á aplicación acceder a comandos adicionais de fornecedor de localizacións. É posible que isto provoque que a aplicación interfira co funcionamento do GPS ou doutras fontes da localización."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"acceder á localización exacta só en primeiro plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicación pode obter a túa localización exacta só cando se atope en primeiro plano. É necesario activar os servizos de localización e deben estar dispoñibles no teléfono para que a aplicación poida utilizalos. Ademais, poden supoñer un aumento do consumo de batería."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Mentres a utilizas, esta aplicación pode obter a túa localización exacta a través dos servizos de localización. Para facelo, os servizos mencionados deben estar activados no teu dispositivo. Isto pode aumentar o uso da batería."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acceder á localización aproximada só en primeiro plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicación pode obter a túa localización aproximada, pero só mentres está en primeiro plano. Para que a aplicación poida utilizar os servizos de localización, deben estar activados e dispoñibles no teu dispositivo."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Mentres a utilizas, esta aplicación pode obter a túa localización aproximada a través dos servizos de localización. Para facelo, os servizos mencionados deben estar activados no teu dispositivo."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acceder á localización en segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicación pode acceder á localización mentres se executa en segundo plano, ademais de acceder á localización en primeiro plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta aplicación pode acceder á localización en calquera momento, aínda que non a esteas utilizando."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"cambiar a configuración de son"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite á aplicación modificar a configuración de audio global, como o volume e que altofalante se utiliza para a saída."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"gravar audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicación pode utilizar a cámara en calquera momento para sacar fotos e gravar vídeos."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que unha aplicación ou un servizo acceda ás cámaras do sistema para sacar fotos e gravar vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Esta aplicación do sistema con privilexios pode utilizar unha cámara do sistema en calquera momento para sacar fotos e gravar vídeos. Require que a aplicación tamén teña o permiso android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que unha aplicación ou servizo reciba retrochamadas cando se abran ou se pechen dispositivos con cámara."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esta aplicación de sinaturas pode recibir retrochamadas cando un paquete de aplicacións abra ou peche un dispositivo con cámara."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar a vibración"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite á aplicación controlar o vibrador."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que a aplicación acceda ao estado de vibrador"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite á aplicación dirixir as súas chamadas a través do sistema para mellorar a túa experiencia durante as chamadas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"consultar e controlar as chamadas a través do sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite que a aplicación consulte e controle as chamadas en curso do dispositivo. Pode acceder a información como os números e os estados das chamadas."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar unha chamada iniciada noutra aplicación"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite que a aplicación continúe unha chamada que se iniciou noutra aplicación."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ler números de teléfono"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite que a aplicación acceda aos números de teléfono do dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"manter acendida a pantalla do coche"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"evitar que a tableta entre en modo de inactividade"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evitar que o dispositivo Android TV entre en modo de suspensión"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"evitar que o teléfono entre en modo de suspensión"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que a aplicación manteña acendida a pantalla do coche."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite á aplicación evitar que a tableta acceda ao modo de suspensión."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que a aplicación evite que o dispositivo Android TV entre en modo de suspensión."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite á aplicación evitar que o teléfono acceda ao modo de suspensión."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Téntao de novo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Non se rexistraron impresións dixitais."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo non ten sensor de impresión dixital."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Desactivouse o sensor temporalmente."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Non se puido verificar a cara. Téntao de novo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Non configuraches o desbloqueo facial."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Este dispositivo non admite o desbloqueo facial."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Desactivouse o sensor temporalmente."</string>
<string name="face_name_template" msgid="3877037340223318119">"Cara <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"A rede de telefonía móbil non ten acceso a Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"A rede non ten acceso a Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Non se puido acceder ao servidor DNS privado"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Estableceuse conexión"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"A conectividade de <xliff:g id="NETWORK_SSID">%1$s</xliff:g> é limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toca para conectarte de todas formas"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Cambiouse a: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuración por USB conectada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Toca para desactivar a depuración por USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecciona a opción para desactivar a depuración por USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"A depuración sen fíos está conectada"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toca para desactivar a depuración sen fíos"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecciona para desactivar a depuración sen fíos."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Activouse o modo de axente de proba"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Restablece a configuración de fábrica para desactivar o modo de axente de proba."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"A consola de serie está activada"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Nas futuras compilacións R, o servizo en primeiro plano iniciado en segundo plano desde <xliff:g id="PACKAGENAME">%1$s</xliff:g> non terá permiso mentres estea en uso. Consulta go/r-bg-fgs-restriction e presenta un informe de erros."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Queres subir o volume máis do nivel recomendado?\n\nA reprodución de son a un volume elevado durante moito tempo pode provocar danos nos oídos."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Queres utilizar o atallo de accesibilidade?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Cando o atallo está activado, podes premer os dous botóns de volume durante 3 segundos para iniciar unha función de accesibilidade."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Queres permitir que <xliff:g id="SERVICE">%1$s</xliff:g> poida controlar totalmente o teu dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se activas <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo non utilizará o teu bloqueo de pantalla para mellorar a encriptación de datos."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"O control total é adecuado para as aplicacións que che axudan coa accesibilidade, pero non para a maioría das aplicacións."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar a pantalla"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o contido da pantalla e mostralo sobre outras aplicacións."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver e realizar accións"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode facer un seguimento das túas interaccións cunha aplicación ou cun sensor de hardware, así como interactuar por ti coas aplicacións."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Denegar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tocar unha función para comezar a utilizala:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Escoller as aplicacións que queres utilizar co botón de accesibilidade"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Escoller as aplicacións que queres utilizar co atallo da tecla de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>: desactivouse"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atallos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Feito"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desactivar atallo"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atallo"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversión de cor"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sen clasificar"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ti defines a importancia destas notificacións."</string>
<string name="importance_from_person" msgid="4235804979664465383">"É importante polas persoas involucradas."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificación de aplicacións personalizada"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Queres permitir que <xliff:g id="APP">%1$s</xliff:g> cree un usuario novo con <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Xa existe un usuario con esta conta)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Queres permitir que <xliff:g id="APP">%1$s</xliff:g> cree un usuario novo con <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Engadir un idioma"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidade"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> incluíuse no grupo RESTRINXIDO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Persoal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Traballo"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vista persoal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vista de traballo"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Non se pode compartir información coas aplicacións do traballo"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Non se pode compartir información coas aplicacións persoais"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"O teu administrador de TI bloqueou a función de compartir información entre o perfil persoal e o de traballo"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Non se puido acceder ás aplicacións do traballo"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"O teu administrador de TI non che permite ver o teu contido persoal nas aplicacións do traballo"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Non se puido acceder ás aplicacións persoais"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"O teu administrador de TI non che permite ver o contido do traballo nas aplicacións persoais"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Para compartir contido, activa o perfil de traballo"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Para ver contido, activa o perfil de traballo"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Non hai aplicacións dispoñibles"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou reproducir audio en chamadas telefónicas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta aplicación, cando está asignada como aplicación predeterminada do marcador, grave e reproduza audio en chamadas telefónicas."</string>
</resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 8b0b374..d9ecfab 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"વ્યવસ્થાપકે ડિવાઇસ વ્યક્તિગત ઉપયોગ માટે આપી દીધું છે"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"ઉપકરણ સંચાલિત છે"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"તમારી સંસ્થા આ ઉપકરણનું સંચાલન કરે છે અને નેટવર્ક ટ્રાફિફનું નિયમન કરી શકે છે. વિગતો માટે ટૅપ કરો."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"તમારા વ્યવસ્થાપક દ્વારા સ્થાન સેટિંગ બદલવામાં આવ્યાં"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"તમારા સ્થાન સેટિંગને જોવા માટે ટૅપ કરો."</string>
+ <string name="country_detector" msgid="7023275114706088854">"દેશને ઓળખાવનારી સુવિધા"</string>
+ <string name="location_service" msgid="2439187616018455546">"સ્થાન સેવા"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS સેવા"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"સેન્સર નોટિફિકેશન સેવા"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ટ્વાઇલાઇટ સેવા"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"તમારું ઉપકરણ કાઢી નાખવામાં આવશે"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"વ્યવસ્થાપક ઍપનો ઉપયોગ કરી શકાશે નહીં. તમારું ઉપકરણ હવે કાઢી નાખવામાં આવશે.\n\nજો તમને પ્રશ્નો હોય, તો તમારી સંસ્થાના વ્યવસ્થાપકનો સંપર્ક કરો."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> દ્વારા પ્રિન્ટ કરવાનું બંધ કરાયું છે."</string>
@@ -247,6 +250,8 @@
<item quantity="one">બગ રિપોર્ટ માટે <xliff:g id="NUMBER_1">%d</xliff:g> સેકન્ડમાં સ્ક્રીનશોટ લઈ રહ્યાં છે.</item>
<item quantity="other">બગ રિપોર્ટ માટે <xliff:g id="NUMBER_1">%d</xliff:g> સેકન્ડમાં સ્ક્રીનશોટ લઈ રહ્યાં છે.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ખામીની જાણકારી સાથે સ્ક્રીનશૉટ લેવામાં આવ્યો"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ખામીની જાણકારી સાથે સ્ક્રીનશૉટ લેવામાં નિષ્ફળ થયા"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"સાઇલેન્ટ મોડ"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"અવાજ બંધ છે"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ધ્વનિ ચાલુ છે"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"વધારાના સ્થાન પ્રદાતા આદેશોને ઍક્સેસ કરો"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"એપ્લિકેશનને વધારાના સ્થાન પ્રદાતા આદેશોને ઍક્સેસ કરવાની મંજૂરી આપે છે. આ એપ્લિકેશનને GPS અથવા અન્ય સ્થાન સ્રોતોના ઓપરેશનમાં દખલ કરવાની મંજૂરી આપી શકે છે."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ફૉરગ્રાઉન્ડમાં ફક્ત ચોક્કસ સ્થાન ઍક્સેસ કરો"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"આ ઍપ ફક્ત ફૉરગ્રાઉન્ડમાંમાં હોય ત્યારે જ તમારું ચોક્કસ સ્થાન મેળવી શકે છે. ઍપ આ સ્થાન સેવાઓનો ઉપયોગ કરી શકે તે માટે તે સેવાઓ ચાલુ કરેલી અને તમારા ડિવાઇસમાં ઉપલબ્ધ હોવી જોઈએ. આ બૅટરી વપરાશ વધારી શકે છે."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ઍપ ઉપયોગમાં હોય તે વખતે સ્થાન સેવાઓમાંથી આ ઍપ તમારું ચોક્કસ સ્થાન મેળવી શકે છે. ઍપ સ્થાન મેળવી શકે તે માટે તમારા ડિવાઇસમાં સ્થાન સેવાઓ ચાલુ કરેલી હોવી જરૂરી છે. આનાથી બૅટરીનો વપરાશ વધી શકે છે."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ફૉરગ્રાઉન્ડમાં ફક્ત અંદાજિત સ્થાન ઍક્સેસ કરો"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"આ ઍપ ફોરગ્રાઉન્ડમાં હોય, ત્યારે જ તે તમારું અંદાજિત સ્થાન મેળવી શકે છે. ઍપ આ સ્થાન સેવાઓનો ઉપયોગ કરી શકે તે માટે તે સેવાઓ ચાલુ કરેલી અને તમારા ડિવાઇસમાં ઉપલબ્ધ હોવી જોઈએ."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ઍપ ઉપયોગમાં હોય તે વખતે સ્થાન સેવાઓમાંથી આ ઍપ તમારું અંદાજિત સ્થાન મેળવી શકે છે. ઍપ સ્થાન મેળવી શકે તે માટે તમારા ડિવાઇસમાં સ્થાન સેવાઓ ચાલુ કરેલી હોવી જરૂરી છે."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"બૅકગ્રાઉન્ડમાં સ્થાન ઍક્સેસ કરો"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"આ ઍપ ફૉરગ્રાઉન્ડમાં સ્થાનને ઍક્સેસ કરવા ઉપરાંત બૅકગ્રાઉન્ડમાં ચાલતી હોય ત્યારે પણ સ્થાનને ઍક્સેસ કરી શકે છે."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"આ ઍપ કોઈપણ સમયે સ્થાનને ઍક્સેસ કરી શકે છે, પછી ભલેને આ ઍપ ઉપયોગમાં ન હોય."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"તમારી ઑડિઓ સેટિંગ્સ બદલો"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"એપ્લિકેશનને વૈશ્વિક ઑડિઓ સેટિંગ્સને સંશોધિત કરવાની મંજૂરી આપે છે, જેમ કે વૉલ્યૂમ અને આઉટપુટ માટે કયા સ્પીકરનો ઉપયોગ કરવો."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ઑડિઓ રેકોર્ડ કરવાની"</string>
@@ -431,10 +436,13 @@
<string name="permdesc_camera" msgid="1354600178048761499">"આ ઍપ્લિકેશન, કૅમેરાનો ઉપયોગ કરીને કોઈપણ સમયે ચિત્રો લઈ અને વિડિઓઝ રેકોર્ડ કરી શકે છે."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ઍપ્લિકેશન અથવા સેવા ઍક્સેસને સિસ્ટમ કૅમેરાનો ઉપયોગ કરીને ફોટા અને વીડિયો લેવાની મંજૂરી આપો"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"આ વિશેષાધિકૃત | સિસ્ટમ ઍપ કોઈપણ સમયે સિસ્ટમ કૅમેરાનો ઉપયોગ કરીને ફોટા લઈ અને વીડિયો રેકોર્ડ કરી શકે છે. ઍપ દ્વારા આયોજિત કરવા માટે android.permission.CAMERAની પરવાનગી પણ જરૂરી છે"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"વાઇબ્રેશન નિયંત્રિત કરો"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"એપ્લિકેશનને વાઇબ્રેટરને નિયંત્રિત કરવાની મંજૂરી આપે છે."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"ઍપને વાઇબ્રેટર સ્થિતિને ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"સીધા જ ફોન નંબર્સ પર કૉલ કરો"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"એપ્લિકેશનને તમારા હસ્તક્ષેપ વિના ફોન નંબર્સ પર કૉલ કરવાની મંજૂરી આપે છે. આ અનપેક્ષિત શુલ્ક અથવા કૉલ્સમાં પરિણમી શકે છે. નોંધો કે આ એપ્લિકેશનને કટોકટીના નંબર્સ પર કૉલ કરવાની મંજૂરી આપતું નથી. દુર્ભાવનાપૂર્ણ ઍપ્લિકેશનો તમારી પુષ્ટિ વિના કૉલ્સ કરીને તમારા પૈસા ખર્ચ કરી શકે છે."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS કૉલ સેવા ઍક્સેસ કરો"</string>
@@ -445,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"કૉલિંગ અનુભવ સુધારવા માટે ઍપ્લિકેશનને સિસ્ટમ મારફતે કૉલ બીજે વાળવાની મંજૂરી આપે છે."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"સિસ્ટમ મારફતે કૉલ જુઓ અને નિયંત્રિત કરો."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ઍપને ડિવાઇસ પરના ચાલી રહેલા કૉલને જોવાની અને નિયંત્રિત કરવાની મંજૂરી આપે છે. આમાં કૉલ માટેના કૉલ નંબર અને તેની સ્થિતિ જેવી માહિતી શામેલ હોય છે."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"તૃતીય પક્ષ ઍપમાંનો કૉલ ચાલુ રાખો"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"એક અન્ય તૃતીય પક્ષ ઍપમાં ચાલુ થયેલા કૉલને આ ઍપમાં ચાલુ રાખવાની મંજૂરી આપે છે."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ફોન નંબર વાંચો"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ઍપ્લિકેશનને ઉપકરણનાં ફોન નંબરને ઍક્સેસ કરવાની મંજૂરી આપે છે."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"કારની સ્ક્રીન ચાલુ રાખો."</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ટેબ્લેટને નિષ્ક્રિય થતું અટકાવો"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"તમારા Android TV ડિવાઇસને નિષ્ક્રિય થવાથી અટકાવો"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ફોનને નિષ્ક્રિય થતો અટકાવો"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ઍપને કારની સ્ક્રીન ચાલુ રાખવાની મંજૂરી આપો."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"એપ્લિકેશનને ટેબ્લેટને નિષ્ક્રિય થઈ જતો અટકાવવાની મંજૂરી આપે છે."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ઍપને તમારા Android TV ડિવાઇસને નિષ્ક્રિય થઈ જવાથી અટકાવવાની મંજૂરી આપે છે."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"એપ્લિકેશનને ફોનને નિષ્ક્રિય થઈ જતો અટકાવવાની મંજૂરી આપે છે."</string>
@@ -549,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ફરી પ્રયાસ કરો."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"કોઈ ફિંગરપ્રિન્ટની નોંધણી કરવામાં આવી નથી."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"આ ડિવાઇસમાં કોઈ ફિંગરપ્રિન્ટ સેન્સર નથી."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"સેન્સર હંગામી રૂપે બંધ કર્યું છે."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"આંગળી <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ચહેરો ચકાસી શકાતો નથી. ફરી પ્રયાસ કરો."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"તમે ફેસ અનલૉકનું સેટઅપ કર્યું નથી."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"આ ડિવાઇસ પર ફેસ અનલૉક કરવાની સુવિધા નથી."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"સેન્સર હંગામી રૂપે બંધ કર્યું છે."</string>
<string name="face_name_template" msgid="3877037340223318119">"ચહેરાનું <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"મોબાઇલ નેટવર્ક કોઈ ઇન્ટરનેટ ઍક્સેસ ધરાવતું નથી"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"નેટવર્ક કોઈ ઇન્ટરનેટ ઍક્સેસ ધરાવતું નથી"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ખાનગી DNS સર્વર ઍક્સેસ કરી શકાતા નથી"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"કનેક્ટેડ"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> મર્યાદિત કનેક્ટિવિટી ધરાવે છે"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"છતાં કનેક્ટ કરવા માટે ટૅપ કરો"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> પર સ્વિચ કર્યું"</string>
@@ -1321,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ડીબગિંગ કનેક્ટ થયું."</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB ડિબગીંગ બંધ કરવા માટે ટૅપ કરો"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ડિબગીંગને અક્ષમ કરવા માટે પસંદ કરો."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"વાયરલેસ ડિબગીંગ કનેક્ટ કરો"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"વાયરલેસ ડિબગીંગ બંધ કરવા માટે ટૅપ કરો"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"વાયરલેસ ડિબગીંગ બંધ કરવા માટે પસંદ કરો."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ટેસ્ટ હાર્નેસ મોડ ચાલુ કર્યો"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ટેસ્ટ હાર્નેસ મોડ બંધ કરવા માટે ફૅક્ટરી રીસેટ કરો."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"સિરીયલ કન્સોલ ચાલુ થયો"</string>
@@ -1624,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"બૅકગ્રાઉન્ડમાં શરૂ થયેલી <xliff:g id="PACKAGENAME">%1$s</xliff:g>ની ફોરગ્રાઉન્ડ સેવા પાસે ભવિષ્યની R બિલ્ડમાં ઉપયોગમાં હોય તે સમયની પરવાનગી હશે નહીં. કૃપા કરીને go/r-bg-fgs-restriction જુઓ અને ભૂલનો અહેવાલ દાખલ કરો."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ભલામણ કરેલ સ્તરની ઉપર વૉલ્યૂમ વધાર્યો?\n\nલાંબા સમય સુધી ઊંચા અવાજે સાંભળવું તમારી શ્રવણક્ષમતાને નુકસાન પહોંચાડી શકે છે."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ઍક્સેસિબિલિટી શૉર્ટકટનો ઉપયોગ કરીએ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"જ્યારે શૉર્ટકટ ચાલુ હોય, ત્યારે બન્ને વૉલ્યૂમ બટનને 3 સેકન્ડ સુધી દબાવી રાખવાથી ઍક્સેસિબિલિટી સુવિધા શરૂ થઈ જશે."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ઍક્સેસિબિલિટી સંબંધિત આવશ્યકતા માટે સહાય કરતી ઍપ માટે સંપૂર્ણ નિયંત્રણ યોગ્ય છે, પણ મોટા ભાગની ઍપ માટે યોગ્ય નથી."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"જોવા અને નિયંત્રણ માટેની સ્ક્રીન"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"તે સ્ક્રીન પરનું બધું કન્ટેન્ટ વાંચી શકે છે અને કન્ટેન્ટને અન્ય ઍપ પર બતાવી શકે છે."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ક્રિયાઓ જુઓ અને કરો"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"તે ઍપ અથવા હાર્ડવેર સેન્સર વડે તમારી ક્રિયાપ્રતિક્રિયાને ટ્રૅક કરી શકે છે અને તમારા વતી ઍપ સાથે ક્રિયાપ્રતિક્રિયા કરી શકે છે."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"મંજૂરી આપો"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"નકારો"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"શૉર્ટકટમાં ફેરફાર કરો"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"રદ કરો"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"શૉર્ટકટ બંધ કરો"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"શૉર્ટકટનો ઉપયોગ કરો"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"રંગનો વ્યુત્ક્રમ"</string>
@@ -1848,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"અવર્ગીકૃત"</string>
<string name="importance_from_user" msgid="2782756722448800447">"તમે આ સૂચનાઓનું મહત્વ સેટ કર્યું છે."</string>
<string name="importance_from_person" msgid="4235804979664465383">"શામેલ થયેલ લોકોને કારણે આ મહત્વપૂર્ણ છે."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ઍપનું કસ્ટમ નોટિફિકેશન"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>ને <xliff:g id="ACCOUNT">%2$s</xliff:g> માટે એક નવા વપરાશકર્તા બનાવવાની મંજૂરી આપીએ (આ એકાઉન્ટ માટે એક વપરાશકર્તા પહેલાંથી અસ્તિત્વમાં છે) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>ને <xliff:g id="ACCOUNT">%2$s</xliff:g> માટે એક નવા વપરાશકર્તા બનાવવાની મંજૂરી આપીએ ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ભાષા ઉમેરો"</string>
@@ -2019,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ઍક્સેસિબિલિટી મેનૂ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>નું કૅપ્શન બાર."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ને પ્રતિબંધિત સમૂહમાં મૂકવામાં આવ્યું છે"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"વ્યક્તિગત"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"કાર્યાલય"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"વ્યક્તિગત વ્યૂ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ઑફિસ વ્યૂ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ઑફિસ માટેની ઍપની સાથે શેર કરી શકતાં નથી"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"વ્યક્તિગત ઍપની સાથે શેર કરી શકતાં નથી"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"તમારા IT વ્યવસ્થાપકે વ્યક્તિગત અને કાર્યાલયની પ્રોફાઇલ વચ્ચે શેરિંગની સુવિધાને બ્લૉક કરી છે"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"ઑફિસ માટેની ઍપનો ઍક્સેસ કરી શકતાં નથી"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"તમારા IT વ્યવસ્થાપક તમને ઑફિસ માટેની ઍપમાં વ્યક્તિગત કન્ટેન્ટ જોવા દેતા નથી"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"વ્યક્તિગત ઍપનો ઍક્સેસ કરી શકતાં નથી"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"તમારા IT વ્યવસ્થાપક તમને વ્યક્તિગત ઍપમાં ઑફિસ માટેનું કન્ટેન્ટ જોવા દેતા નથી"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"કન્ટેન્ટ શેર કરવા માટે કાર્યાલયની પ્રોફાઇલ શેર કરો"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"કન્ટેન્ટ જોવા માટે કાર્યાલયની પ્રોફાઇલ ચાલુ કરો"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"કોઈ ઍપ ઉપલબ્ધ નથી"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ચાલુ કરો"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ટેલિફોની કૉલમાં ઑડિયો રેકૉર્ડ કરો અથવા ચલાવો"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ડિફૉલ્ટ ડાયલર ઍપ તરીકે સોંપણી કરવામાં આવવા પર આ ઍપને ટેલિફોની કૉલમાં ઑડિયો રેકૉર્ડ કરવાની અથવા ચલાવવાની મંજૂરી આપે છે."</string>
</resources>
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 989cb15..c4d1170 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -191,9 +191,17 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"एडमिन ने निजी इस्तेमाल के लिए डिवाइस दे दिया है"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"डिवाइस प्रबंधित है"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"आपका संगठन इस डिवाइस का प्रबंधन करता है और वह नेटवर्क ट्रैफ़िक की निगरानी भी कर सकता है. विवरण के लिए टैप करें."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"आपके एडमिन ने जगह की सेटिंग बदली है"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"जगह की सेटिंग देखने के लिए टैप करें."</string>
+ <!-- no translation found for country_detector (7023275114706088854) -->
<skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
+ <!-- no translation found for location_service (2439187616018455546) -->
+ <skip />
+ <!-- no translation found for gnss_service (8907781262179951385) -->
+ <skip />
+ <!-- no translation found for sensor_notification_service (7474531979178682676) -->
+ <skip />
+ <!-- no translation found for twilight_service (8964898045693187224) -->
<skip />
<string name="factory_reset_warning" msgid="6858705527798047809">"आपके डिवाइस को मिटा दिया जाएगा"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"एडमिन ऐप्लिकेशन का इस्तेमाल नहीं किया जा सकता. आपके डिवाइस पर मौजूद डेटा अब मिटा दिया जाएगा.\n\nअगर आप कुछ पूछना चाहते हैं तो, अपने संगठन के एडमिन से संपर्क करें."</string>
@@ -247,6 +255,8 @@
<item quantity="one">गड़बड़ी की रिपोर्ट के लिए <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में स्क्रीनशॉट लिया जा रहा है.</item>
<item quantity="other">गड़बड़ी की रिपोर्ट के लिए <xliff:g id="NUMBER_1">%d</xliff:g> सेकंड में स्क्रीनशॉट लिया जा रहा है.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"गड़बड़ी की रिपोर्ट का स्क्रीनशॉट लिया गया"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"गड़बड़ी की रिपोर्ट का स्क्रीनशॉट नहीं लिया जा सका"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"साइलेंट मोड (खामोश)"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ध्वनि बंद है"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ध्वनि चालू है"</string>
@@ -414,11 +424,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"कुछ और जगह बताने वाले आदेशों तक पहुंच"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ऐप को कुछ और जगह की जानकारी देने वाले आदेशों की पहुंच पाने देता है. इससे ऐप जीपीएस या जगह की जानकारी देने वाले दूसरे स्रोतों के काम में रोक-टोक कर सकता है."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ऐप्लिकेशन \'जगह की सटीक जानकारी\' सिर्फ़ सामने खुली होने पर ऐक्सेस करे"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"यह ऐप्लिकेशन सिर्फ़ तब आपकी जगह की सटीक जानकारी का इस्तेमाल कर सकता है, जब यह स्क्रीन पर खुला हो. यह ज़रूरी है कि जगह की जानकारी वाली ये सुविधाएं आपके फ़ोन में मौजूद हों और चालू की गई हों, ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए. ऐसा करने से ज़्यादा बैटरी खर्च हो सकती है."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"जब ऐप्लिकेशन काम कर रहा हो, तब जगह की जानकारी की सुविधा का इस्तेमाल करके, यह आपकी जगह की सटीक जानकारी ऐक्सेस कर सकता है. अपने डिवाइस पर जगह की जानकारी की सेटिंग चालू करें, ताकि ऐप्लिकेशन जगह की जानकारी ऐक्सेस कर सके. इससे बैटरी खर्च बढ़ सकता है."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"अनुमानित जगह की जानकारी सिर्फ़ तब ऐक्सेस करें, जब ऐप्लिकेशन स्क्रीन पर खुला हो"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"यह ऐप्लिकेशन आपकी अनुमानित जगह की जानकारी का इस्तेमाल सिर्फ़ तब कर सकता है, जब यह स्क्रीन पर दिखाई दे रहा हो. यह ज़रूरी है कि आपके डिवाइस में, जगह की जानकारी वाली सुविधाएं हों और उन्हें चालू किया गया हो, ताकि ऐप्लिकेशन उनका इस्तेमाल कर पाए."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"जब ऐप्लिकेशन काम कर रहा हो, तब जगह की जानकारी की सुविधा का इस्तेमाल करके, यह आपकी अनुमानित जगह की जानकारी ऐक्सेस कर सकता है. अपने डिवाइस पर जगह की जानकारी की सेटिंग चालू करें, ताकि ऐप्लिकेशन जगह की जानकारी ऐक्सेस कर सके."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"बैकग्राउंड में जगह की जानकारी ऐक्सेस करना"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"यह ऐप्लिकेशन स्क्रीन पर खुले होने के साथ-साथ बैकग्राउंड में चलते हुए भी जगह की जानकारी ऐक्सेस कर सकता है."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"यह ऐप्लिकेशन जगह की जानकारी का ऐक्सेस किसी भी समय कर सकता है, भले ही आप उसका इस्तेमाल न कर रहे हों."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"अपनी ऑडियो सेटिंग बदलें"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ऐप्स को वैश्विक ऑडियो सेटिंग, जैसे वॉल्यूम और कौन-सा स्पीकर आउटपुट के लिए उपयोग किया गया, संशोधित करने देता है."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ऑडियो रिकॉर्ड करने"</string>
@@ -431,10 +441,13 @@
<string name="permdesc_camera" msgid="1354600178048761499">"यह ऐप्लिकेशन किसी भी समय कैमरे का उपयोग करके चित्र ले सकता है और वीडियो रिकॉर्ड कर सकता है."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"तस्वीरें और वीडियो लेने के लिए ऐप्लिकेशन या सेवा को सिस्टम के कैमरे का ऐक्सेस दें"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"यह सिस्टम ऐप्लिकेशन तस्वीरें लेने और वीडियो रिकॉर्ड करने के लिए जब चाहे, सिस्टम के कैमरे का इस्तेमाल कर सकता है. ऐप्लिकेशन को android.permission.CAMERA की अनुमति देना भी ज़रूरी है"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"कंपन (वाइब्रेशन) को नियंत्रित करें"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ऐप्स को कंपनकर्ता नियंत्रित करने देता है."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"इससे ऐप्लिकेशन, डिवाइस का वाइब्रेटर ऐक्सेस कर पाएगा."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"फ़ोन नंबर पर सीधे कॉल करें"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"ऐप्लिकेशन को आपके हस्तक्षेप के बिना फ़ोन नंबर पर कॉल करने देता है. इसके परिणाम अनचाहे शुल्क या कॉल हो सकते हैं. ध्यान दें कि यह ऐप्लिकेशन को आपातकालीन नंबर पर कॉल नहीं करने देता. नुकसान पहुंचाने वाला ऐप्लिकेशन आपकी पुष्टि के बिना कॉल करके आपके पैसे खर्च करवा सकते हैं."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS कॉल सेवा ऐक्सेस करें"</string>
@@ -445,13 +458,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"कॉल करने के अनुभव को बेहतर बनाने के लिए ऐप्लिकेशन को सिस्टम के माध्यम से उसके कॉल रूट करने देती है."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"सिस्टम के ज़रिए कॉल देखना और नियंत्रित करना."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ऐप्लिकेशन को डिवाइस पर चल रहे कॉल देखने और नियंत्रित करने देती है. इसमें कॉल के नंबर और उनकी स्थिति से जुड़ी जानकारी शामिल है."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"दूसरे ऐप्लिकेशन से शुरू किया गया कॉल जारी रखें"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"इसके ज़रिए आप, किसी ऐप्लिकेशन में शुरू किया गया कॉल दूसरे ऐप्लिकेशन में जारी रख सकते हैं."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"फ़ोन नंबर पढ़ना"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ऐप को डिवाइस के फ़ोन नंबर का इस्तेमाल करने देती है."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"कार की स्क्रीन चालू रखना"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"टैबलेट को सोने (कम बैटरी मोड) से रोकें"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"अपने Android TV डिवाइस को स्लीप मोड (कम बैटरी मोड में जाने) से रोकें"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"फ़ोन को सोने (कम बैटरी मोड) से रोकें"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"यह अनुमति देने पर, ऐप्लिकेशन कार की स्क्रीन चालू रख पाएगा."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ऐप्स को टैबलेट को प्रयोग में नहीं हो जाने से रोकता है."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"यह ऐप्लिकेशन को आपके Android TV डिवाइस को स्लीप मोड (कम बैटरी मोड में जाने) से रोकने की अनुमति देता है."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ऐप्स को फ़ोन को प्रयोग में नहीं होने से रोकता है."</string>
@@ -549,8 +568,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"फिर से प्रयास करें."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कोई फ़िंगरप्रिंट रजिस्टर नहीं किया गया है."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"इस डिवाइस में फ़िंगरप्रिंट सेंसर नहीं है."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"सेंसर कुछ समय के लिए बंद कर दिया गया है."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"फ़िंगरप्रिंट <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +612,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"चेहरा नहीं पहचान पा रहे. फिर से कोशिश करें."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"आपने \'मालिक का चेहरा पहचानकर अनलॉक\' सेट नहीं की है."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"इस डिवाइस पर \'मालिक का चेहरा पहचानकर अनलॉक\' काम नहीं करती है."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"सेंसर कुछ समय के लिए बंद कर दिया गया है."</string>
<string name="face_name_template" msgid="3877037340223318119">"चेहरा <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1273,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"मोबाइल नेटवर्क पर इंटरनेट ऐक्सेस नहीं है"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"इस नेटवर्क पर इंटरनेट ऐक्सेस नहीं है"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"निजी डीएनएस सर्वर को ऐक्सेस नहीं किया जा सकता"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"जुड़ गया है"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> की कनेक्टिविटी सीमित है"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"फिर भी कनेक्ट करने के लिए टैप करें"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> पर ले जाया गया"</string>
@@ -1321,6 +1337,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"यूएसबी डीबग करने के लिए एडीबी कनेक्ट किया गया"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"यूएसबी को डीबग करने की सुविधा बंद करने के लिए टैप करें"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB डीबग करना अक्षम करने के लिए चुनें."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"वायरलेस तरीके से डीबग करने की सुविधा फ़ोन से कनेक्ट है"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"वायरलेस तरीके से डीबग करने की सुविधा बंद करने के लिए टैप करें"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वायरलेस तरीके से डीबग करने की सुविधा बंद करने के लिए चुनें."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"टेस्ट हार्नेस मोड चालू किया गया"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"टेस्ट हार्नेस मोड बंद करने के लिए फ़ैक्ट्री रीसेट करें."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"सीरियल कंसोल को चालू करें"</string>
@@ -1624,10 +1643,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>से बैकग्राउंड में शुरू की गई फ़ॉरग्राउंड सेवा के लिए, भविष्य के R बिल्ड में \'इस्तेमाल के समय अनुमति दें\' की सुविधा नहीं होगी. कृपया go/r-bg-fgs-restriction देखें और गड़बड़ी की शिकायत करें."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"वॉल्यूम को सुझाए गए स्तर से ऊपर बढ़ाएं?\n\nअत्यधिक वॉल्यूम पर ज़्यादा समय तक सुनने से आपकी सुनने की क्षमता को नुकसान हो सकता है."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"सुलभता शॉर्टकट का इस्तेमाल करना चाहते हैं?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट के चालू होने पर, दाेनाें वॉल्यूम बटन (आवाज़ कम या ज़्यादा करने वाले बटन) को तीन सेकंड तक दबाने से, सुलभता सुविधा शुरू हाे जाएगी."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"पूरी तरह नियंत्रित करने की अनुमति उन ऐप्लिकेशन के लिए ठीक है जो सुलभता से जुड़ी ज़रूरतों के लिए बने हैं, लेकिन ज़्यादातर ऐप्लिकेशन के लिए यह ठीक नहीं है."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन को देखें और नियंत्रित करें"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यह स्क्रीन पर दिखने वाली हर तरह की सामग्री को पढ़ सकता है और उसे दूसरे ऐप्लिकेशन पर दिखा सकता है."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"देखें और कार्रवाई करें"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यह आपके और किसी ऐप्लिकेशन या हार्डवेयर सेंसर के बीच होने वाले इंटरैक्शन को ट्रैक कर सकता है और आपकी तरफ़ से ऐप्लिकेशन के साथ इंटरैक्ट कर सकता है."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दें"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"इंकार करें"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट में बदलाव करें"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"अभी नहीं"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"शॉर्टकट बंद करें"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट का उपयोग करें"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"रंग बदलने की सुविधा"</string>
@@ -1848,6 +1886,8 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"बिना किसी श्रेणी के"</string>
<string name="importance_from_user" msgid="2782756722448800447">"आपने इन सूचनाओं की अहमियत सेट की है."</string>
<string name="importance_from_person" msgid="4235804979664465383">"यह मौजूद व्यक्तियों के कारण महत्वपूर्ण है."</string>
+ <!-- no translation found for notification_history_title_placeholder (7748630986182249599) -->
+ <skip />
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> को <xliff:g id="ACCOUNT">%2$s</xliff:g> के नाम से एक नया उपयोगकर्ता बनाने की अनुमति दें (इस नाम से एक खाता पहले से मौजूद है)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Allow <xliff:g id="APP">%1$s</xliff:g> to create a new User with <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"भाषा जोड़ें"</string>
@@ -2019,22 +2059,37 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"सुलभता मेन्यू"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> का कैप्शन बार."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> को प्रतिबंधित बकेट में रखा गया है"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"निजी प्रोफ़ाइल"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"वर्क प्रोफ़ाइल"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
+ <!-- no translation found for resolver_personal_tab_accessibility (5739524949153091224) -->
<skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
+ <!-- no translation found for resolver_work_tab_accessibility (4753168230363802734) -->
<skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ऑफ़िस के काम से जुड़े ऐप्लिकेशन के साथ चीज़ें शेयर नहीं की जा सकतीं"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"निजी ऐप्लिकेशन के साथ कुछ शेयर नहीं किया जा सकता"</string>
+ <!-- no translation found for resolver_cant_share_cross_profile_explanation (5556640604460901386) -->
<skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
+ <!-- no translation found for resolver_cant_access_work_apps (375634344111233790) -->
<skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
+ <!-- no translation found for resolver_cant_access_work_apps_explanation (3958762224516867388) -->
<skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
+ <!-- no translation found for resolver_cant_access_personal_apps (1953215925406474177) -->
<skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
+ <!-- no translation found for resolver_cant_access_personal_apps_explanation (1725572276741281136) -->
<skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
+ <!-- no translation found for resolver_turn_on_work_apps_share (619263911204978175) -->
<skip />
+ <!-- no translation found for resolver_turn_on_work_apps_view (3073389230905543680) -->
+ <skip />
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"कोई ऐप्लिकेशन उपलब्ध नहीं है"</string>
+ <!-- no translation found for resolver_switch_on_work (2873009160846966379) -->
+ <skip />
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"फ़ोन कॉल के दौरान, ऑडियो रिकॉर्ड करने या उसे चलाने की अनुमति"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"डिफ़ॉल्ट डायलर ऐप्लिकेशन के तौर पर असाइन होने पर, इस ऐप्लिकेशन को फ़ोन कॉल के दौरान ऑडियो रिकॉर्ड करने और उसे चलाने की मंज़ूरी मिल जाती है."</string>
</resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index cd8eae5..3e87df3 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -195,6 +195,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja ovim uređajem i može nadzirati mrežni promet. Dodirnite za pojedinosti."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Postavke lokacije koje je promijenio administrator"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Dodirnite da biste vidjeli svoje postavke lokacije."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor zemlje"</string>
+ <string name="location_service" msgid="2439187616018455546">"Usluga lokacije"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Usluga GNSS-a"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Usluga Obavijesti senzora"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Usluga Sumrak"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će se izbrisati"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administratorska aplikacija ne može se upotrebljavati. Uređaj će se izbrisati.\n\nAko imate pitanja, obratite se administratoru organizacije."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Ispis je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="few">Izrada snimke zaslona za izvješće o programskoj pogrešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekunde.</item>
<item quantity="other">Izrada snimke zaslona za izvješće o programskoj pogrešci za <xliff:g id="NUMBER_1">%d</xliff:g> sekundi.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Snimka zaslona je izrađena s izvješćem o programskoj pogrešci"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Snimanje zaslona s izvješćem o programskoj pogrešci nije uspjelo."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Bešumni način"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je isključen"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je uključen"</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pristup dodatnim naredbama davatelja lokacije"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Omogućuje aplikaciji pristup dodatnim naredbama davatelja usluga lokacije. To može omogućiti aplikaciji ometanje rada GPS-a ili drugih izvora lokacije."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"pristupiti preciznoj lokaciji samo u prednjem planu"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikacija može dobiti vašu točnu lokaciju samo kad je u prednjem planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da bi ih aplikacija mogla upotrebljavati. To može pojačati potrošnju baterije."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikacija može dobiti vašu točnu lokaciju od Usluga lokacije dok se aplikacija koristi. Morate uključiti Usluge lokacije za svoj uređaj da bi aplikacija dohvatila lokaciju. Ovo može povećati potrošnju baterije."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pristupiti približnoj lokaciji samo u prednjem planu"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikacija može dobiti vašu približnu lokaciju samo kad je u prednjem planu. Usluge lokacije moraju biti uključene i dostupne na uređaju da bi ih aplikacija mogla upotrebljavati."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikacija može dobiti vašu približnu lokaciju od Usluga lokacije dok se aplikacija ne koristi. Morate uključiti Usluge lokacije za svoj uređaj da bi aplikacija dohvatila lokaciju."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"pristup lokaciji u pozadini"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacija može pristupiti lokaciji dok se izvodi u pozadini, uz pristup lokaciji u prednjem planu."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikacija može uvijek pristupiti lokaciji, čak i dok se aplikacija ne koristi."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"promjena postavki zvuka"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Aplikaciji omogućuje izmjenu globalnih postavki zvuka, primjerice glasnoće i zvučnika koji se upotrebljava za izlaz."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"snimanje zvuka"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Aplikacija u svakom trenutku može snimati fotografije i videozapise fotoaparatom."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Dopustite aplikaciji ili usluzi da pristupa kamerama sustava radi snimanja fotografija i videozapisa"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ova povlaštena aplikacija sustava | u svakom trenutku može snimati fotografije i videozapise kamerom sustava. Aplikacija mora imati i dopuštenje android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Dopustite aplikaciji ili usluzi da prima povratne pozive o otvaranju ili zatvaranju fotoaparata."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Aplikacija za potpise može primati povratne pozive prilikom otvaranja (putem nekog paketa aplikacija) ili zatvaranja fotoaparata."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"upravljanje vibracijom"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Aplikaciji omogućuje nadzor nad vibratorom."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Aplikaciji omogućuje da pristupi stanju vibracije."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Omogućuje aplikaciji da preusmjerava pozive putem sustava radi poboljšanja doživljaja."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"vidjeti i kontrolirati pozive putem sustava."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Omogućuje aplikaciji da vidi i kontrolira pozive koji su u tijeku na uređaju. To uključuje podatke kao što su brojevi i stanja poziva."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"nastaviti poziv iz neke druge aplikacije"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Omogućuje aplikaciji da nastavi poziv započet u nekoj drugoj aplikaciji."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"čitati telefonske brojeve"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Aplikaciji omogućuje da pristupi telefonskim brojevima na uređaju."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"zadržati zaslon automobila uključenim"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"spriječi mirovanje tabletnog uređaja"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"sprječava prelazak Android TV uređaja u mirovanje"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"sprečava telefon da prijeđe u stanje mirovanja"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Aplikaciji omogućuje da zaslon automobila zadrži uključenim."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Aplikaciji omogućuje sprječavanje prelaska tabletnog računala u mirovanje."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Aplikaciji omogućuje sprječavanje prelaska Android TV uređaja u mirovanje."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Aplikaciji omogućuje da spriječi prelazak telefona u mirovanje."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Pokušajte ponovo."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nije registriran nijedan otisak prsta."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ovaj uređaj nema senzor otiska prsta."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je privremeno onemogućen."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Lice nije potvrđeno. Pokušajte ponovo."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Niste postavili otključavanje licem"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Otključavanje licem nije podržano na ovom uređaju."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je privremeno onemogućen."</string>
<string name="face_name_template" msgid="3877037340223318119">"Lice <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1273,7 +1286,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilna mreža nema pristup internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Mreža nema pristup internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Nije moguće pristupiti privatnom DNS poslužitelju"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Povezano"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ima ograničenu povezivost"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Dodirnite da biste se ipak povezali"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Prelazak na drugu mrežu: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1338,6 +1350,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Priključen je alat za otklanjanje pogrešaka putem USB-a"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Dodirnite da isključite otklanjanje pogrešaka putem USB-a"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Odaberite da biste onemogućili rješavanje programske pogreške na USB-u."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bežično otklanjanje pogrešaka povezano"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Dodirnite da biste isključili bežično otklanjanje pogrešaka"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Odaberite da biste onemogućili bežično otklanjanje pogrešaka."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Omogućen je način testnog okvira"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Vratite na tvorničke postavke da biste onemogućili način testnog okvira."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola omogućena"</string>
@@ -1643,10 +1658,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluga u prednjem planu s <xliff:g id="PACKAGENAME">%1$s</xliff:g> pokrenuta u pozadini neće imati dopuštenje tijekom upotrebe u budućim R kompilacijama. Pogledajte go/r-bg-fgs-restriction i pošaljite izvješće o programskoj pogrešci."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučene razine?\n\nDugotrajno slušanje glasne glazbe može vam oštetiti sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li upotrebljavati prečac za pristupačnost?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad je taj prečac uključen, pritiskom na obje tipke za glasnoću na tri sekunde pokrenut će se značajka pristupačnosti."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Želite li dopustiti usluzi <xliff:g id="SERVICE">%1$s</xliff:g> potpunu kontrolu nad uređajem?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ako uključite <xliff:g id="SERVICE">%1$s</xliff:g>, vaš uređaj neće upotrebljavati zaključavanje zaslona za bolju enkripciju podataka."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Potpuna kontrola prikladna je za aplikacije koje vam pomažu s potrebama pristupačnosti, ali ne i za većinu aplikacija."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Prikaz zaslona i upravljanje njime"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Može čitati sav sadržaj na zaslonu i prikazati sadržaj povrh drugih aplikacija."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Prikaz i izvršavanje radnji"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Može pratiti vaše interakcije s aplikacijama ili senzorom uređaja i stupati u interakciju s aplikacijama u vaše ime."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dopusti"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odbij"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Dodirnite značajku da biste je počeli koristiti:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Odabir aplikacija za upotrebu pomoću gumba za Pristupačnost"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Odabir aplikacija za upotrebu pomoću prečaca tipki za glasnoću"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usluga <xliff:g id="SERVICE_NAME">%s</xliff:g> je isključena"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi prečace"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Otkaži"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gotovo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Isključi prečac"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Upotrijebi prečac"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija boja"</string>
@@ -1877,6 +1904,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nema kategorije"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Postavili ste važnost tih obavijesti."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Važno je zbog uključenih osoba."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Prilagođena obavijest aplikacije"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Dopustiti aplikaciji <xliff:g id="APP">%1$s</xliff:g> da izradi novog korisnika s računom <xliff:g id="ACCOUNT">%2$s</xliff:g> (korisnik s ovim računom već postoji)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Dopustiti aplikaciji <xliff:g id="APP">%1$s</xliff:g> da izradi novog korisnika s računom <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dodavanje jezika"</string>
@@ -2050,22 +2078,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Izbornik pristupačnosti"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka naslova aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> premješten je u spremnik OGRANIČENO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Osobno"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Posao"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Osobni prikaz"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Poslovni prikaz"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Dijeljenje s poslovnim aplikacijama nije moguće"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Dijeljenje s osobnim aplikacijama nije moguće"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Vaš IT administrator blokirao je dijeljenje između osobnih i poslovnih profila"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nije moguće pristupiti poslovnim aplikacijama"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Vaš IT administrator ne dopušta pregled osobnih sadržaja u poslovnim aplikacijama"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nije moguće pristupiti osobnim aplikacijama"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Vaš IT administrator ne dopušta pregled poslovnih sadržaja u osobnim aplikacijama"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Uključite poslovni profil da biste dijelili sadržaj"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Uključite poslovni profil da biste pregledavali sadržaj"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Aplikacije nisu dostupne"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Uključi"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snimanje ili reprodukcija zvuka u telefonskim pozivima"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Kad je ova aplikacija postavljena kao zadana aplikacija za biranje, omogućuje joj snimanje ili reprodukciju zvuka u telefonskim pozivima."</string>
</resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index bb1ad32..52a30c9 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ezt az eszközt szervezete kezeli, és lehetséges, hogy a hálózati forgalmat is figyelik. További részletekért koppintson."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"A helybeállításokat módosította a adminisztrátora"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Koppintson a helybeállítások megtekintéséhez."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Országfelismerő"</string>
+ <string name="location_service" msgid="2439187616018455546">"Helyszolgáltatás"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-szolgáltatás"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Szenzoros értesítési szolgáltatás"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight szolgáltatás"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"A rendszer törölni fogja eszközét"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"A rendszergazdai alkalmazás nem használható. A rendszer most törli az eszközt.\n\nKérdéseivel forduljon szervezete rendszergazdájához."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"A(z) <xliff:g id="OWNER_APP">%s</xliff:g> letiltotta a nyomtatást."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Képernyőkép készítése a hibajelentéshez <xliff:g id="NUMBER_1">%d</xliff:g> másodpercen belül.</item>
<item quantity="one">Képernyőkép készítése a hibajelentéshez <xliff:g id="NUMBER_0">%d</xliff:g> másodpercen belül.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Sikerült a képernyőkép elkészítése a hibajelentéshez"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nem sikerült képernyőképet készíteni a hibajelentéshez"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Néma üzemmód"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Hang kikapcsolva"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Hang bekapcsolva"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"további helyszolgáltatói parancsok elérése"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Lehetővé teszi az alkalmazás számára további helyszolgáltatói parancsok elérését. Ezáltal az alkalmazás beavatkozhat a GPS vagy más helyforrások működésébe."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"pontos helyadatokhoz való hozzáférés csak előtérben"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ez az alkalmazás csak akkor férhet hozzá az eszköz pontos helyadataihoz, amikor az előtérben fut. Az alkalmazás csak akkor használhatja a helyszolgáltatásokat, ha be vannak kapcsolva, és hozzáférhetők az eszköz számára. Ez növelheti az akkumulátorhasználatot."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ez az alkalmazás megkaphatja a pontos tartózkodási helyet a helyszolgáltatásoktól, amikor használatban van. Csak akkor juthat hozzá a tartózkodási helyhez, ha a helyszolgáltatások be vannak kapcsolva az eszközön. Ez növelheti az akkumulátorhasználatot."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"megközelítőleges helyadatokhoz való hozzáférés csak előtérben"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ez az alkalmazás csak akkor férhet hozzá az eszköz megközelítőleges helyadataihoz, amikor az előtérben fut. Az alkalmazás csak akkor használhatja a helyszolgáltatásokat, ha be vannak kapcsolva, és hozzáférhetők az eszköz számára."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ez az alkalmazás megkaphatja a hozzávetőleges tartózkodási helyet a helyszolgáltatásoktól, amikor használatban van. Csak akkor juthat hozzá a tartózkodási helyhez, ha a helyszolgáltatások be vannak kapcsolva az eszközön."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"Hozzáférés a helyadatokhoz a háttérben"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ez az alkalmazás nem csak akkor férhet hozzá a helyadatokhoz, amikor az előtérben van, hanem akkor is, amikor a háttérben fut."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ez az alkalmazás bármikor hozzáférhet a helyadatokhoz – még akkor is, ha nincs használatban."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"hangbeállítások módosítása"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lehetővé teszi az alkalmazás számára az általános hangbeállítások, például a hangerő és a használni kívánt kimeneti hangszóró módosítását."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"hanganyag rögzítése"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Az alkalmazás a kamera használatával bármikor készíthet fényképeket és rögzíthet videókat."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"A rendszerkamerákhoz való hozzáférés, illetve képek és videók rögzítésének engedélyezése alkalmazás vagy szolgáltatás számára"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"A rendszerkamera használatával ez az előnyben részesített vagy rendszeralkalmazás bármikor készíthet fényképeket és videókat. Az alkalmazásnak az „android.permission.CAMERA” engedéllyel is rendelkeznie kell."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Visszahívás fogadásának engedélyezése alkalmazás vagy szolgáltatás számára, ha a kamerákat megnyitják vagy bezárják."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Az aláíró alkalmazás fogadhat visszahívásokat bármelyik kamera (adott alkalmazáscsomag általi) megnyitásakor vagy bezárásakor."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"rezgés szabályozása"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Lehetővé teszi az alkalmazás számára a rezgés vezérlését."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Lehetővé teszi az alkalmazás számára a rezgés állapotához való hozzáférést."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"A telefonálási élmény javítása érdekében lehetővé teszi az alkalmazás számára a rendszeren keresztüli hívásirányítást."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Hívások megtekintése és vezérlése a rendszeren keresztül"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Engedélyezi az alkalmazásnak az eszközön folyamatban lévő hívások megtekintését és vezérlését. Ebbe beletartoznak az olyan információk is, mint a hívásban részt vevő felek hívószáma és a hívások állapota."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Másik alkalmazásból indított hívás folytatása"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Engedélyezi az alkalmazásnak, hogy folytassa a hívást, amelyet valamelyik másik alkalmazásban kezdtek meg."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"telefonszámok olvasása"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Engedélyezi az alkalmazás számára az eszköz telefonszámaihoz való hozzáférést."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"az autó képernyőjének bekapcsolva tartása"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"táblagép alvás üzemmódjának megakadályozása"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"megakadályozza, hogy az Android TV eszköz alvó üzemmódra váltson"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"telefon alvó üzemmódjának megakadályozása"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Lehetővé teszi az alkalmazás számára az autó képernyőjének bekapcsolva tartását."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Lehetővé teszi az alkalmazás számára, hogy megakadályozza, hogy a táblagép alvó üzemmódra váltson."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Lehetővé teszi az alkalmazás számára, hogy megakadályozza, hogy az Android TV eszköz alvó üzemmódra váltson."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Lehetővé teszi az alkalmazás számára, hogy megakadályozza, hogy a telefon alvó üzemmódra váltson."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Próbálkozzon újra."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nincsenek regisztrált ujjlenyomatok."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ez az eszköz nem rendelkezik ujjlenyomat-érzékelővel."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Az érzékelő átmenetileg le van tiltva."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. ujj"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nem sikerült ellenőrizni az arcát. Próbálja újra."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Nem állította be az arcalapú feloldást."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Az eszköz nem támogatja az arcalapú feloldást"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Az érzékelő átmenetileg le van tiltva."</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> arc"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"A mobilhálózaton nincs internet-hozzáférés"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"A hálózaton nincs internet-hozzáférés"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"A privát DNS-kiszolgálóhoz nem lehet hozzáférni"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Csatlakozva"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"A(z) <xliff:g id="NETWORK_SSID">%1$s</xliff:g> hálózat korlátozott kapcsolatot biztosít"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Koppintson, ha mindenképpen csatlakozni szeretne"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Átváltva erre: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-hibakereső csatlakoztatva"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Koppintson az USB-hibakeresés kikapcsolásához"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Válassza ezt az USB hibakeresés kikapcsolásához."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Vezeték nélküli hibakereső csatlakoztatva"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Koppintson a vezeték nélküli hibakeresés kikapcsolásához"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Válassza ezt a vezeték nélküli hibakeresés letiltásához."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tesztelési alapkörnyezet mód engedélyezve"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"A Tesztelési alapkörnyezet mód kikapcsolásához állítsa vissza a gyári beállításokat."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Soros konzol engedélyezve"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"A háttér által indított előtérben futó szolgáltatás (innen: <xliff:g id="PACKAGENAME">%1$s</xliff:g>) nem tartalmaz majd használat közbeni engedélyt a jövőbeli R buildekben. Kérjük, keresse fel a go/r-bg-fgs-restriction webhelyet, és jelentse a hibát."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Az ajánlott szint fölé szeretné emelni a hangerőt?\n\nHa hosszú időn át teszi ki magát nagy hangerőnek, azzal károsíthatja a hallását."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Szeretné használni a Kisegítő lehetőségek billentyűparancsot?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ha a gyorsparancs aktív, akkor a két hangerőgomb három másodpercig tartó együttes lenyomásával kisegítő funkciót indíthat el."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Teljes körű vezérlést biztosít eszköze felett a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatás számára?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ha engedélyezi a(z) <xliff:g id="SERVICE">%1$s</xliff:g> szolgáltatást, az eszköz nem fogja használni a képernyőzárat az adattitkosítás növelése érdekében."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"A teljes vezérlés indokolt olyan alkalmazásoknál, amelyek kisegítő lehetőségeket nyújtanak, a legtöbb alkalmazásnál azonban nem."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Képernyő megtekintése és kezelése"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Elolvashatja a képernyő tartalmát, és tartalmakat jeleníthet meg más alkalmazások felett."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Műveletek megtekintése és elvégzése"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Követheti az alkalmazásokkal és hardveres érzékelőkkel való interakcióit, és műveleteket végezhet az alkalmazásokkal az Ön nevében."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Engedélyezés"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tiltás"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Koppintson valamelyik funkcióra a használatához:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"A kisegítő lehetőségek gombjával kiválaszthatja a használni kívánt alkalmazásokat"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"A hangerőszabályzó gombbal kiválaszthatja a használni kívánt alkalmazásokat"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kikapcsolva"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Gyorsparancsszerkesztés"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Mégse"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Kész"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Billentyűparancs kikapcsolása"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Billentyűparancs használata"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Színek invertálása"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nincs kategóriába sorolva"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ön állította be ezen értesítések fontossági szintjét."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ez az üzenet a résztvevők miatt fontos."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Egyéni alkalmazásértesítés"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Engedélyezi a(z) <xliff:g id="APP">%1$s</xliff:g> számára, hogy új felhasználót hozzon létre a(z) <xliff:g id="ACCOUNT">%2$s</xliff:g> fiókkal? (Már létezik felhasználó ezzel a fiókkal.)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Engedélyezi a(z) <xliff:g id="APP">%1$s</xliff:g> számára, hogy új felhasználót hozzon létre a(z) <xliff:g id="ACCOUNT">%2$s</xliff:g> fiókkal?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Nyelv hozzáadása"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Kisegítő lehetőségek menü"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás címsora."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"A következő csomag a KORLÁTOZOTT csoportba került: <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Személyes"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Munka"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Személyes nézet"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Munkanézet"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nem lehetséges a munkahelyi alkalmazásokkal való megosztás"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nem lehetséges a személyes alkalmazásokkal való megosztás"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Rendszergazdája letiltotta a személyes és a munkaprofilok közti megosztást"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nem lehet hozzáférni a munkahelyi alkalmazásokhoz"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Rendszergazdája nem engedélyezi személyes tartalmak munkahelyi alkalmazásokban való megtekintését"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nem lehet hozzáférni a személyes alkalmazásokhoz"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Rendszergazdája nem engedélyezi a munkahelyi tartalmak személyes alkalmazásokban való megtekintését"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"A tartalom megosztásához kapcsolja be munkaprofilját"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"A tartalom megtekintéséhez kapcsolja be munkaprofilját"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nem áll rendelkezésre alkalmazás"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Bekapcsolás"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audiotartalmak felvétele és lejátszása telefonhívások közben"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Lehetővé teszi ennek az alkalmazásnak audiotartalmak felvételét és lejátszását telefonhívások közben, amennyiben az alkalmazás alapértelmezett tárcsázóalkalmazásként van kijelölve."</string>
</resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index aabfc80..5b86e48 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ձեր կազմակերպությունը կառավարում է այս սարքը և կարող է վերահսկել ցանցի թրաֆիկը: Հպեք՝ մանրամասները դիտելու համար:"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Տեղադրության կարգավորումները փոփոխվել են ձեր ադմինիստրատորի կողմից։"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Հպեք՝ ձեր տեղադրության կարգավորումները տեսնելու համար։"</string>
+ <string name="country_detector" msgid="7023275114706088854">"Երկրի որոշում"</string>
+ <string name="location_service" msgid="2439187616018455546">"Տեղորոշման ծառայություն"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS ծառայություն"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Տվիչների ծանուցումների մշակման ծառայություն"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Մթնշաղի սկիզբը որոշող ծառայություն"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Ձեր սարքը ջնջվելու է"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Հնարավոր չէ օգտագործել ադմինիստրատորի հավելվածը։ Ձեր սարքից բոլոր տվյալները կջնջվեն։\n\nՀարցեր ունենալու դեպքում դիմեք ձեր կազմակերպության ադմինիստրատորին։"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Տպումն անջատված է <xliff:g id="OWNER_APP">%s</xliff:g> հավելվածի կողմից։"</string>
@@ -245,6 +250,8 @@
<item quantity="one">Սքրինշոթը կարվի <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:</item>
<item quantity="other">Սքրինշոթը կարվի <xliff:g id="NUMBER_1">%d</xliff:g> վայրկյանից:</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Վրիպակների հաշվետվության պատկերով սքրինշոթ արվեց"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Չհաջողվեց վրիպակների հաշվետվության պատկերով սքրինշոթ անել"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Անձայն ռեժիմ"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Ձայնը անջատված է"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Ձայնը միացված է"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"օգտագործել տեղադրություն տրամադրող հավելվյալ հրամաններ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ծրագրին թույլ է տալիս օգտագործել տեղադրության մասին տվյալների աղբյուրների կառավարման լրացուցիչ հրահանգներ: Սա կարող է ծրագրին թույլ տալ միջամտել GPS-ի կամ տեղադրության մասին տվյալների այլ աղբյուրների գործառույթներին:"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"Տեղադրության ճշգրիտ տվյալների հասանելիություն միայն ֆոնային ռեժիմում"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Հավելվածը կարող է ստանալ ձեր տեղադրության տվյալները ակտիվ ռեժիմում։ Տեղորոշման ծառայությունները պետք է միացված և հասանելի լինեն ձեր սարքում, որպեսզի հավելվածը կարողանա օգտագործել դրանք։ Սա կարող է արագացնել մարտկոցի լիցքի սպառումը։"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Երբ հավելվածն ակտիվ է, այն կարող է տեղորոշման ծառայություններից ստանալ ձեր ճշգրիտ տեղադրության տվյալները։ Որպես նախապայման՝ ձեր սարքի տեղորոշման ծառայությունները պետք է միացված լինեն։ Դա կարող է ավելի արագ սպառել մարտկոցի լիցքը։"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"տեղադրության մոտավոր տվյալների հասանելիություն միայն ակտիվ ռեժիմում"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Հավելվածը կարող է ստանալ ձեր մոտավոր տեղադրության տվյալները ակտիվ ռեժիմում։ Տեղորոշման ծառայությունները պետք է միացված և հասանելի լինեն ձեր սարքում, որպեսզի հավելվածը կարողանա օգտագործել դրանք։"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Երբ հավելվածն ակտիվ է, այն կարող է տեղորոշման ծառայություններից ստանալ ձեր մոտավոր տեղադրության տվյալները։ Որպես նախապայման՝ ձեր սարքի տեղորոշման ծառայությունները պետք է միացված լինեն։"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"տեղադրության մասին տվյալների հասանելիություն ֆոնային ռեժիմում"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Այս հավելվածը ինչպես ակտիվ, այնպես էլ ֆոնային ռեժիմում աշխատելիս կարող է տեսնել տեղադրության տվյալները։"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Այս հավելվածը ցանկացած ժամանակ կարող է տեսնել տեղադրության տվյալները, նույնիսկ երբ այն ակտիվ չէ։"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"փոխել ձեր աուդիո կարգավորումները"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Թույլ է տալիս հավելվածին փոփոխել ձայնանյութի գլոբալ կարգավորումները, ինչպես օրինակ` ձայնը և թե որ խոսափողն է օգտագործված արտածման համար:"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ձայնագրել աուդիո ֆայլ"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Այս հավելվածը կարող է ցանկացած պահի լուսանկարել և տեսագրել՝ օգտագործելով տեսախցիկը:"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Թույլատրել որևէ հավելվածի կամ ծառայության օգտագործել համակարգի տեսախցիկները՝ լուսանկարելու և տեսանկարելու համար"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Այս արտոնյալ | համակարգային հավելվածը կարող է ցանկացած պահի լուսանկարել և տեսագրել՝ օգտագործելով համակարգի տեսախցիկները: Հավելվածին նաև անհրաժեշտ է android.permission.CAMERA թույլտվությունը:"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Թույլատրել հավելվածին կամ ծառայությանը հետզանգեր ստանալ՝ տեսախցիկների բացվելու և փակվելու դեպքում։"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ստորագրությունների այս հավելվածը կարող է հետզանգեր ստանալ՝ ցանկացած տեսախցիկի բացվելու (կնշվի բացող հավելվածը) և փակվելու դեպքում։"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"կառավարել թրթռումը"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Թույլ է տալիս հավելվածին կառավարել թրթռոցը:"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Հավելվածին թույլ է տալիս օգտագործել սարքի թրթռալու ռեժիմը։"</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Հավելվածին թույլ է տալիս իր զանգերն ուղարկել համակարգի միջոցով՝ կապի որակը բարձրացնելու նպատակով։"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Զանգերի դիտում և վերահսկում համակարգի միջոցով"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Թույլ է տալիս հավելվածին տեսնել և վերահսկել ընթացիկ զանգերը սարքում: Սա ներառում է այնպիսի տեղեկություններ, ինչպիսիք են, օրինակ, հեռախոսահամարները և զանգերի վիճակը:"</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"Ձայնագրելու հետ կապված սահմանափակումները հանված են"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Հանեք սահմանափակումները, որոնք թույլ չեն տալիս հավելվածին ձայնագրել"</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"շարունակել զանգը այլ հավելվածի միջոցով"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Թույլ է տալիս հավելվածին շարունակել մեկ այլ հավելվածի միջոցով սկսած զանգը:"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"օգտագործել հեռախոսահամարները"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Հավելվածին թույլ է տալիս օգտագործել սարքի հեռախոսահամարները:"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"միացրած թողնել մեքենայի էկրանը"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"զերծ պահել պլանշետը քնելուց"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"թույլ չտալ, որ Android TV սարքն անցնի քնի ռեժիմի"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"կանխել հեռախոսի քնի ռեժիմին անցնելը"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Հավելվածին թույլ է տալիս միացրած թողնել մեքենայի էկրանը։"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Թույլ է տալիս հավելվածին կանխել պլանշետի` քնի ռեժիմին անցնելը:"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Թույլ է տալիս հավելվածին կանխել, որ Android TV սարքը չանցնի քնի ռեժիմի:"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Թույլ է տալիս հավելվածին կանխել հեռախոսի` քնի ռեժիմին անցնելը:"</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Փորձեք նորից:"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Գրանցված մատնահետք չկա:"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Այս սարքը չունի մատնահետքերի սկաներ։"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Տվիչը ժամանակավորապես անջատված է:"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Մատնահետք <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Չհաջողվեց հաստատել դեմքը։ Նորից փորձեք։"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Դուք չեք կարգավորել դեմքով ապակողպումը:"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Դեմքով ապակողպումն այս սարքում չի աջակցվում"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Տվիչը ժամանակավորապես անջատված է:"</string>
<string name="face_name_template" msgid="3877037340223318119">"Դեմք <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Բջջային ցանցը չի ապահովում ինտերնետ կապ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Ցանցը միացված չէ ինտերնետին"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Մասնավոր DNS սերվերն անհասանելի է"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Միացված է"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ցանցի կապը սահմանափակ է"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Հպեք՝ միանալու համար"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Անցել է <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ցանցի"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-ով վրիպազերծումը միացված է"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Հպեք՝ USB-ով վրիպազերծումն անջատելու համար"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Սեղմեք՝ USB-ով վրիպազերծումն անջատելու համար:"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Անլար վրիպազերծումը միացված է"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Հպեք՝ անլար վրիպազերծումն անջատելու համար"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Սեղմեք՝ անլար վրիպազերծումն անջատելու համար:"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Թեստային ռեժիմը միացված է"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Թեստային ռեժիմն անջատելու համար զրոյացրեք կարգավորումները։"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Սերիական վահանակը միացված է"</string>
@@ -1542,7 +1555,7 @@
<string name="activity_chooser_view_dialog_title_default" msgid="8880731437191978314">"Ընտրել գործունեությունը"</string>
<string name="share_action_provider_share_with" msgid="1904096863622941880">"Կիսվել"</string>
<string name="sending" msgid="206925243621664438">"Ուղարկվում է..."</string>
- <string name="launchBrowserDefault" msgid="6328349989932924119">"Գործարկե՞լ զննարկիչը:"</string>
+ <string name="launchBrowserDefault" msgid="6328349989932924119">"Գործարկե՞լ դիտարկիչը:"</string>
<string name="SetupCallDefault" msgid="5581740063237175247">"Ընդունե՞լ զանգը:"</string>
<string name="activity_resolver_use_always" msgid="5575222334666843269">"Միշտ"</string>
<string name="activity_resolver_set_always" msgid="4142825808921411476">"Միշտ բացել"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ֆոնային ռեժիմում <xliff:g id="PACKAGENAME">%1$s</xliff:g>-ից գործարկված առաջին պլանի ծառայությունը հետագա R կառուցումներում թույլտվություն չի ունենա օգտագործման ընթացքում։ Անցեք go/r-bg-fgs-restriction էջ և հաղորդեք վրիպակի մասին։"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ձայնը բարձրացնե՞լ խորհուրդ տրվող մակարդակից ավել:\n\nԵրկարատև բարձրաձայն լսելը կարող է վնասել ձեր լսողությունը:"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Օգտագործե՞լ Մատչելիության դյուրանցումը։"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Հատուկ գործառույթն օգտագործելու համար սեղմեք և 3 վայրկյան սեղմած պահեք ձայնի ուժգնության երկու կոճակները, երբ գործառույթը միացված է:"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Թույլատրե՞լ <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությանը կառավարել ձեր սարքը"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Եթե միացնեք <xliff:g id="SERVICE">%1$s</xliff:g> ծառայությունը, ձեր սարքը չի օգտագործի էկրանի կողպումը՝ տվյալների գաղտնագրումը բարելավելու համար:"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ամբողջական վերահսկումն անհրաժեշտ է միայն այն հավելվածներին, որոնք օգնում են ձեզ հատուկ գործառույթներից օգտվելիս։"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Դիտել և կառավարել էկրանը"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Կարող է կարդալ էկրանի բովանդակությունն ու ցուցադրել այլ հավելվածներում։"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Դիտել և համակարգել գործողությունները"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Կարող է հետագծել ձեր գործողությունները հավելվածներում և սարքակազմի սենսորների վրա, ինչպես նաև հավելվածներում կատարել գործողություններ ձեր անունից։"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Թույլատրել"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Մերժել"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ընտրեք՝ որ գործառույթն օգտագործել"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Ընտրեք հավելվածներ, որոնք կբացվեն «Հատուկ գործառույթներ» կոճակի միջոցով"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Ընտրեք հավելվածներ, որոնք կբացվեն ձայնի կարգավորման կոճակի միջոցով"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ծառայությունն անջատված է"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Փոփոխել դյուրանցումները"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Չեղարկել"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Պատրաստ է"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Անջատել դյուրանցումը"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Օգտագործել դյուրանցումը"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Գունաշրջում"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Չդասակարգված"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Դուք սահմանել եք այս ծանուցումների կարևորությունը:"</string>
<string name="importance_from_person" msgid="4235804979664465383">"Կարևոր է, քանի որ որոշակի մարդիկ են ներգրավված:"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Հավելվածի հատուկ ծանուցում"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Թույլատրե՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել (նման հաշվով Օգտատեր արդեն գոյություն ունի):"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Թույլատրե՞լ <xliff:g id="APP">%1$s</xliff:g> հավելվածին <xliff:g id="ACCOUNT">%2$s</xliff:g> հաշվով նոր Օգտատեր ստեղծել:"</string>
<string name="language_selection_title" msgid="52674936078683285">"Ավելացնել լեզու"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Հատուկ գործառույթների ընտրացանկ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի ենթագրերի գոտին։"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> փաթեթը գցվեց ՍԱՀՄԱՆԱՓԱԿՎԱԾ զամբյուղի մեջ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Անձնական"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Աշխատանքային"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Անձնական"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Աշխատանքային"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Հնարավոր չէ կիսվել աշխատանքային հավելվածների հետ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Հնարավոր չէ կիսվել անձնական հավելվածների հետ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Ձեր ՏՏ ադմինիստրատորն արգելափակել է աշխատանքային և անձնական պրոֆիլների միջև տվյալների փոխանակումը։"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Աշխատանքային հավելվածների հասանելիությունն արգելափակված է"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում դիտել անձնական բովանդակությունը աշխատանքային հավելվածներում։"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Անձնական հավելվածների հասանելիությունն արգելափակված է"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Ձեր ՏՏ ադմինիստրատորը չի թույլատրում դիտել աշխատանքային բովանդակությունը անձնական հավելվածներում։"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Բովանդակությամբ կիսվելու համար միացրեք աշխատանքային պրոֆիլը։"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Բովանդակությունը դիտելու համար միացրեք աշխատանքային պրոֆիլը։"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Հասանելի հավելվածներ չկան"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Միացնել"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Հեռախոսային զանգերի ձայնագրում և նվագարկում"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Եթե այս հավելվածն ըստ կանխադրման օգտագործվում է զանգերի համար, այն կարող է ձայնագրել և նվագարկել հեռախոսային խոսակցությունները։"</string>
</resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 7963ba7..4af6e0d 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -89,7 +89,7 @@
<string name="EmergencyCallWarningSummary" msgid="1194185880092805497">"Tidak dapat melakukan panggilan darurat melalui Wi-Fi"</string>
<string name="notification_channel_network_alert" msgid="4788053066033851841">"Notifikasi"</string>
<string name="notification_channel_call_forward" msgid="8230490317314272406">"Penerusan panggilan"</string>
- <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Mode panggilan balik darurat"</string>
+ <string name="notification_channel_emergency_callback" msgid="54074839059123159">"Mode telepon balik darurat"</string>
<string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Status data seluler"</string>
<string name="notification_channel_sms" msgid="1243384981025535724">"Pesan SMS"</string>
<string name="notification_channel_voice_mail" msgid="8457433203106654172">"Notifikasi pesan suara"</string>
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi mengelola perangkat ini dan mungkin memantau traffic jaringan. Ketuk untuk melihat detailnya."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Setelan lokasi diubah oleh admin Anda"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Ketuk untuk melihat setelan lokasi Anda."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Pendeteksi Negara"</string>
+ <string name="location_service" msgid="2439187616018455546">"Layanan Lokasi"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Layanan GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Layanan Notifikasi Sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Layanan Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Perangkat akan dihapus"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Aplikasi admin tidak dapat digunakan. Perangkat Anda kini akan dihapus.\n\nJika ada pertanyaan, hubungi admin organisasi."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Fitur pencetakan dinonaktifkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Mengambil screenshot untuk laporan bug dalam <xliff:g id="NUMBER_1">%d</xliff:g> detik.</item>
<item quantity="one">Mengambil screenshot untuk laporan bug dalam <xliff:g id="NUMBER_0">%d</xliff:g> detik.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot berisi laporan bug diambil"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Gagal mengambil screenshot berisi laporan bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mode senyap"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Suara MATI"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Suara AKTIF"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"akses perintah penyedia lokasi ekstra"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Memungkinkan aplikasi mengakses perintah penyedia lokasi ekstra. Tindakan ini memungkinkan aplikasi mengganggu pengoperasian GPS atau sumber lokasi lain."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"akses lokasi pasti hanya saat di latar depan"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplikasi ini bisa mendapatkan lokasi pasti Anda saat berada di latar depan. Fitur layanan lokasi harus diaktifkan dan tersedia di perangkat agar dapat digunakan oleh aplikasi. Fitur ini dapat meningkatkan konsumsi baterai."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikasi ini bisa mendapatkan lokasi pasti Anda dari layanan lokasi saat aplikasi sedang digunakan. Layanan lokasi untuk perangkat harus diaktifkan agar aplikasi bisa mendapatkan lokasi. Ini dapat meningkatkan penggunaan baterai."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"akses perkiraan lokasi hanya saat berada di latar depan"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplikasi ini bisa mendapatkan perkiraan lokasi Anda hanya saat berada di latar depan. Layanan lokasi harus diaktifkan dan tersedia di perangkat agar aplikasi dapat menggunakannya."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikasi ini bisa mendapatkan perkiraan lokasi Anda dari layanan lokasi saat aplikasi sedang digunakan. Layanan lokasi untuk perangkat harus diaktifkan agar aplikasi bisa mendapatkan lokasi."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"akses lokasi di latar belakang"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Aplikasi ini dapat mengakses lokasi saat berjalan di latar belakang, selain akses lokasi latar depan."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikasi ini dapat mengakses lokasi kapan saja, bahkan saat aplikasi tidak sedang digunakan."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ubah setelan audio Anda"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Memungkinkan aplikasi mengubah setelan audio global, misalnya volume dan pengeras suara mana yang digunakan untuk keluaran."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"rekam audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Aplikasi ini dapat mengambil foto dan merekam video menggunakan kamera kapan saja."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Izinkan akses aplikasi atau layanan ke kamera sistem untuk mengambil gambar dan video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Hak istimewa ini | aplikasi sistem dapat mengambil gambar dan merekam video menggunakan kamera sistem kapan saja. Mewajibkan aplikasi juga memegang izin android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Izinkan aplikasi atau layanan untuk menerima callback tentang perangkat kamera yang sedang dibuka atau ditutup."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Aplikasi tanda tangan ini dapat menerima callback saat perangkat kamera sedang dibuka (oleh paket aplikasi) atau ditutup."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrol getaran"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Mengizinkan aplikasi untuk mengendalikan vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Mengizinkan aplikasi untuk mengakses status vibrator."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Mengizinkan aplikasi menyambungkan panggilan telepon melalui sistem untuk menyempurnakan pengalaman menelepon."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"melihat dan mengontrol panggilan melalui sistem."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Memungkinkan aplikasi melihat dan mengontrol panggilan telepon yang sedang berlangsung di perangkat. Ini mencakup informasi seperti nomor yang menelepon dan status panggilan telepon."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"lanjutkan panggilan dari aplikasi lain"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Mengizinkan aplikasi melanjutkan panggilan yang dimulai di aplikasi lain."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"membaca nomor telepon"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Mengizinkan aplikasi mengakses nomor telepon perangkat."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"tetap aktifkan layar mobil"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"cegah tablet dari tidur"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"cegah perangkat Android TV tidur"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"mencegah ponsel menjadi tidak aktif"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Mengizinkan aplikasi untuk menjaga agar layar mobil tetap aktif."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Mengizinkan apl mencegah tablet tidur."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Mengizinkan aplikasi untuk mencegah perangkat Android TV tidur."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Mengizinkan apl mencegah ponsel tidur."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Coba lagi."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Tidak ada sidik jari yang terdaftar."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Perangkat ini tidak memiliki sensor sidik jari."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor dinonaktifkan untuk sementara."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Jari <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat memverifikasi wajah. Coba lagi."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Anda belum menyiapkan face unlock."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Face unlock tidak didukung di perangkat ini."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor dinonaktifkan untuk sementara."</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> wajah"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Jaringan seluler tidak memiliki akses internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Jaringan tidak memiliki akses internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Server DNS pribadi tidak dapat diakses"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Tersambung"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> memiliki konektivitas terbatas"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Ketuk untuk tetap menyambungkan"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Dialihkan ke <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Proses debug USB terhubung"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Ketuk untuk menonaktifkan proses debug USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Pilih untuk menonaktifkan debugging USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Proses debug nirkabel terhubung"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Ketuk untuk menonaktifkan proses debug nirkabel."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pilih untuk menonaktifkan proses debug nirkabel."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mode Tes Otomatis diaktifkan"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Lakukan reset ke setelan pabrik untuk menonaktifkan Mode Tes Otomatis."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsol serial diaktifkan"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Layanan latar depan yang dimulai oleh latar belakang dari <xliff:g id="PACKAGENAME">%1$s</xliff:g> tidak akan memiliki izin saat-sedang-digunakan pada build R masa mendatang Lihat go/r-bg-fgs-restriction dan kirim laporan bug."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Mengeraskan volume di atas tingkat yang disarankan?\n\nMendengarkan dengan volume keras dalam waktu yang lama dapat merusak pendengaran Anda."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Aksesibilitas?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Saat pintasan aktif, menekan kedua tombol volume selama 3 detik akan memulai fitur aksesibilitas."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Izinkan <xliff:g id="SERVICE">%1$s</xliff:g> memiliki kontrol penuh atas perangkat Anda?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika Anda mengaktifkan <xliff:g id="SERVICE">%1$s</xliff:g>, perangkat tidak akan menggunakan kunci layar untuk meningkatkan enkripsi data."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrol penuh sesuai untuk aplikasi yang membantu Anda terkait kebutuhan aksesibilitas, tetapi tidak untuk sebagian besar aplikasi."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Tampilan dan layar kontrol"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Aplikasi dapat membaca semua konten di layar dan menampilkan konten di atas aplikasi lain."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Menampilkan dan melakukan tindakan"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Aplikasi dapat melacak interaksi Anda dengan aplikasi atau sensor hardware, dan berinteraksi dengan aplikasi atas nama Anda."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Izinkan"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketuk fitur untuk mulai menggunakannya:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Pilih aplikasi yang akan digunakan dengan tombol aksesibilitas"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Pilih aplikasi yang akan digunakan dengan pintasan tombol volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> telah dinonaktifkan"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit pintasan"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Batal"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Selesai"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Nonaktifkan Pintasan"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversi Warna"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Belum dikategorikan"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Anda menyetel nilai penting notifikasi ini."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ini penting karena orang-orang yang terlibat."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notifikasi aplikasi kustom"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Izinkan <xliff:g id="APP">%1$s</xliff:g> membuat Pengguna baru dengan <xliff:g id="ACCOUNT">%2$s</xliff:g> (Pengguna dengan akun ini sudah ada) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Izinkan <xliff:g id="APP">%1$s</xliff:g> membuat Pengguna baru dengan <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Tambahkan bahasa"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Aksesibilitas"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Kolom teks <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah dimasukkan ke dalam bucket DIBATASI"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Pribadi"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Tampilan pribadi"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Tampilan kerja"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Tidak dapat membagikan ke aplikasi kerja"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Tidak dapat membagikan ke aplikasi pribadi"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Admin IT memblokir berbagi antara profil kerja dan pribadi"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Tidak dapat mengakses aplikasi kerja"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Admin IT tidak mengizinkan Anda melihat konten pribadi di aplikasi kerja"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Tidak dapat mengakses aplikasi pribadi"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Admin IT tidak mengizinkan Anda melihat konten kerja di aplikasi pribadi"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Aktifkan profil kerja untuk membagikan konten"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Aktifkan profil kerja untuk melihat konten"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Tidak ada aplikasi yang tersedia"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktifkan"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rekam atau putar audio dalam panggilan telepon"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Mengizinkan aplikasi ini, saat ditetapkan sebagai aplikasi telepon default, untuk merekam atau memutar audio dalam panggilan telepon."</string>
</resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index b128e53..2d1bf99 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Fyrirtækið þitt stjórnar þessu tæki og kann að fylgjast með netnotkun. Ýttu hér til að fá upplýsingar."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Stjórnandi breytti staðsetningarstillingum"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Ýttu til að sjá staðsetningarstillingar."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Landsgreining"</string>
+ <string name="location_service" msgid="2439187616018455546">"Staðsetningarþjónusta"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-þjónusta"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Tilkynningaþjónusta nema"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Ljósaskiptaþjónusta"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Tækið verður hreinsað"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Ekki er hægt að nota stjórnunarforritið. Tækinu verður eytt.\n\nEf spurningar vakna skaltu hafa samband við kerfisstjóra fyrirtækisins."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> lokaði á prentun."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Tekur skjámynd fyrir villutilkynningu eftir <xliff:g id="NUMBER_1">%d</xliff:g> sekúndu.</item>
<item quantity="other">Tekur skjámynd fyrir villutilkynningu eftir <xliff:g id="NUMBER_1">%d</xliff:g> sekúndur.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Skjámynd með villutilkynningu tekin"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Mistókst að taka skjámynd með villutilkynningu"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Hljóðlaus stilling"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"SLÖKKT er á hljóði"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"KVEIKT er á hljóði"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"aðgangur að viðbótarskipunum staðsetningarveitu"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Leyfir forriti að fá aðgang að fleiri skipunum staðsetningarveitu. Þetta getur gert forritinu kleift að hafa áhrif á virkni GPS og annars staðsetningarbúnaðar."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"aðgangur að nákvæmri staðsetningu aðeins í forgrunni"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Þetta forrit getur aðeins séð staðsetningu þína þegar það er í forgrunni. Það verður að vera kveikt á staðsetningarþjónustu og hún þarf að vera tiltæk í tækinu til að forritið geti notað hana. Þetta getur aukið rafhlöðunotkun."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Þetta forrit getur sótt nákvæma staðsetningu þína í staðsetningarþjónustu þegar forritið er í notkun. Kveikt verður að vera á staðsetningarþjónustu fyrir tækið þitt til að forritið geti sótt staðsetninguna. Þetta gæti aukið rafhlöðunotkun."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"aðgangur að áætlaðri staðsetningu aðeins í forgrunni"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Þetta forrit getur aðeins séð áætlaða staðsetningu þína þegar það er í forgrunni. Það verður að vera kveikt á staðsetningarþjónustu og hún þarf að vera tiltæk í tækinu til að forritið geti notað hana."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Þetta forrit getur sótt áætlaða staðsetningu þína í staðsetningarþjónustu þegar forritið er í notkun. Kveikt verður að vera á staðsetningarþjónustu fyrir tækið þitt til að forritið geti sótt staðsetninguna."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"aðgangur að staðsetningu í bakgrunni"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Þetta forrit hefur aðgang að staðsetningu þegar það er í gangi í bakgrunni, og auk þess þegar það er í forgrunni."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Þetta forrit hefur aðgang að staðsetningu hvenær sem er, jafnvel þegar forritið er ekki í notkun."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"breyta hljóðstillingum"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Leyfir forriti að breyta altækum hljóðstillingum, s.s. hljóðstyrk og hvaða hátalari er notaður sem úttak."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"taka upp hljóð"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Þetta forrit getur tekið myndir og tekið upp myndskeið með myndavélinni hvenær sem er."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Veittu forriti eða þjónustu aðgang að myndavélum kerfis til að taka myndir og myndskeið"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Þetta kerfisforrit hefur heimild til að taka myndir og taka upp myndskeið með myndavél kerfisins hvenær sem er. Forritið þarf einnig að vera með heimildina android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Leyfa forriti eða þjónustu að taka við svörum um myndavélar sem verið er að opna eða loka."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Þetta undirritunarforrit getur tekið við svörum þegar verið er að opna (með forritapakka) eða loka hvaða myndavél sem er."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"stjórna titringi"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Leyfir forriti að stjórna titraranum."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Veitir forritinu aðgang að stöðu titrings."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Heimilar forritinu að senda símtöl sín gegnum kerfið til að bæta gæði símtalsins."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"sjá og stjórna símtölum í gegnum kerfið."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Leyfir forritinu að sjá og stjórna hringdum símtölum í tækinu. Þar á meðal eru upplýsingar á borð við símanúmer í símtölum og stöður símtala."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"halda áfram með símtal úr öðru forriti"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Leyfir forritinu að halda áfram með símtal sem hófst í öðru forriti."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lesa símanúmer"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Veitir forritinu aðgang að símanúmerum tækisins."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"hafa kveikt á skjá bílsins"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"koma í veg fyrir að spjaldtölvan fari í biðstöðu"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"koma í veg fyrir að Android TV fari í biðstöðu"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"koma í veg fyrir að síminn fari í biðstöðu"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Gerir forritinu kleift að hafa kveikt á skjá bílsins."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Leyfir forriti að koma í veg fyrir að spjaldtölvan fari í biðstöðu."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Leyfir forritinu að koma í veg fyrir að Android TV tækið fari í biðstöðu."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Leyfir forriti að koma í veg fyrir að síminn fari í biðstöðu."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Reyndu aftur."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Engin fingraför hafa verið skráð."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Þetta tæki er ekki með fingrafaralesara."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Slökkt tímabundið á skynjara."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Fingur <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ekki tókst að staðfesta andlit. Reyndu aftur."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Þú hefur ekki sett upp andlitsopnun."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Andlitsopnun er ekki studd í þessu tæki."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Slökkt tímabundið á skynjara."</string>
<string name="face_name_template" msgid="3877037340223318119">"Andlit <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Farsímakerfið er ekki tengt við internetið"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Netkerfið er ekki tengt við internetið"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Ekki næst í DNS-einkaþjón"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Tengt"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Tengigeta <xliff:g id="NETWORK_SSID">%1$s</xliff:g> er takmörkuð"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Ýttu til að tengjast samt"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Skipt yfir á <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-villuleit tengd"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Ýttu til að slökkva á USB-villuleit"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Veldu til að gera USB-villuleit óvirka."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Þráðlaus villuleit tengd"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Ýttu til að slökkva á þráðlausri villuleit"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Veldu til að slökkva á þráðlausri villuleit."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Kveikt á stillingu prófunarvangs"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Núllstilltu til að slökkva á stillingu prófunarvangs."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Raðstjórnborð virkjað"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Forgrunnsþjónusta frá <xliff:g id="PACKAGENAME">%1$s</xliff:g> sem er ræst úr bakgrunni mun ekki hafa heimild við notkun í framtíðarútgáfum R. Farðu á go/r-bg-fgs-restriction og gefðu villuskýrslu."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Hækka hljóðstyrk umfram ráðlagðan styrk?\n\nEf hlustað er á háum hljóðstyrk í langan tíma kann það að skaða heyrnina."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Viltu nota aðgengisflýtileið?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Þegar flýtileiðin er virk er kveikt á aðgengiseiginleikanum með því að halda báðum hljóðstyrkshnöppunum inni í þrjár sekúndur."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Viltu leyfa <xliff:g id="SERVICE">%1$s</xliff:g> að hafa fulla stjórn yfir tækinu þínu?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ef þú kveikir á <xliff:g id="SERVICE">%1$s</xliff:g> mun tækið ekki nota skjálásinn til að efla dulkóðun gagna."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full stjórnun er viðeigandi fyrir forrit sem hjálpa þér ef þú hefur ekki aðgang, en ekki fyrir flest forrit."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Skoða og stjórna skjá"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Það getur lesið allt efni á skjánum og birt efni yfir öðrum forritum."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Skoða og framkvæma aðgerðir"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Það getur fylgst með samskiptum þínum við forrit eða skynjara vélbúnaðar, og haft samskipti við forrit fyrir þína hönd."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Leyfa"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Hafna"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ýttu á eiginleika til að byrja að nota hann:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Veldu forrit sem þú vilt nota með aðgengishnappinum"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Veldu forrit sem þú vilt nota með flýtileið hljóðstyrkstakka"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Slökkt hefur verið á <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Breyta flýtileiðum"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Hætta við"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Lokið"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Slökkva á flýtileið"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Nota flýtileið"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Umsnúningur lita"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Óflokkað"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Þú stilltir mikilvægi þessara tilkynninga."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Þetta er mikilvægt vegna fólksins sem tekur þátt í þessu."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Sérsniðin forritatilkynning"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Viltu leyfa <xliff:g id="APP">%1$s</xliff:g> að stofna nýjan notanda með <xliff:g id="ACCOUNT">%2$s</xliff:g> (notandi með þennan reikning er þegar fyrir hendi)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Leyfa <xliff:g id="APP">%1$s</xliff:g> að stofna nýjan notanda með <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Bæta við tungumáli"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Aðgengisvalmynd"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Skjátextastika <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> var sett í flokkinn TAKMARKAÐ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Persónulegt"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Vinna"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Persónulegt yfirlit"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vinnuyfirlit"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ekki er hægt að deila með vinnuforritum"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Ekki er hægt að deila með persónulegum forritum"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Kerfisstjórinn þinn hefur lokað á deilingu milli eigin sniðs og vinnusniðs"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ekki fæst aðgangur að vinnuforritum"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Kerfisstjórinn þinn leyfir þér ekki að skoða persónulegt efni í vinnuforritum"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Ekki fæst aðgangur að persónulegum forritum"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Kerfisstjórinn þinn leyfir þér ekki að skoða vinnuefni í persónulegum forritum"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Kveiktu á vinnusniði til að deila efni"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Kveiktu á vinnusniði til að skoða efni"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Engin forrit í boði"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Kveikja"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Taka upp eða spila hljóð í símtölum"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Gerir þessu forriti kleift að taka upp og spila hljóð í símtölum þegar það er valið sem sjálfgefið hringiforrit."</string>
</resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index b8515df..6aeac12 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Questo dispositivo è gestito dalla tua organizzazione, che potrebbe monitorare il traffico di rete. Tocca per i dettagli."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Impostazioni di geolocalizzazione modificate dal tuo amministratore"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tocca per vedere le tue impostazioni di geolocalizzazione."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Rilevatore paese"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servizio di geolocalizzazione"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Servizio GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Servizio di notifica dei sensori"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Servizio Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Il dispositivo verrà resettato"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Impossibile usare l\'app di amministrazione. Il dispositivo verrà resettato.\n\nPer eventuali domande, contatta l\'amministratore della tua organizzazione."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Stampa disattivata da <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Lo screenshot per la segnalazione di bug verrà acquisito tra <xliff:g id="NUMBER_1">%d</xliff:g> secondi.</item>
<item quantity="one">Lo screenshot per la segnalazione di bug verrà acquisito tra <xliff:g id="NUMBER_0">%d</xliff:g> secondo.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot con segnalazione di bug effettuato correttamente"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Impossibile acquisire screenshot con segnalazione di bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modalità silenziosa"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Audio non attivo"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Audio attivo"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accesso a comandi aggiuntivi provider di geolocalizz."</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Consente all\'app di accedere a ulteriori comandi del fornitore di posizione. Ciò potrebbe consentire all\'app di interferire con il funzionamento del GPS o di altre fonti di geolocalizzazione."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"accesso alla posizione esatta solo in primo piano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Questa app può recuperare la tua posizione esatta solo quando è in primo piano. I servizi di geolocalizzazione devono essere attivi e disponibili sul dispositivo affinché l\'app possa usarli. Potrebbe aumentare il consumo della batteria."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Questa app può recuperare la tua posizione precisa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione. Questa operazione potrebbe comportare un maggior consumo della batteria."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Accesso alla posizione approssimativa solo in primo piano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Questa app può recuperare la tua posizione approssimativa solo quando è in primo piano. I servizi di geolocalizzazione devono essere attivi e disponibili sull\'auto affinché l\'app possa usarli."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Questa app può recuperare la tua posizione approssimativa dai Servizi di geolocalizzazione quando l\'app è in uso. L\'impostazione Servizi di geolocalizzazione deve essere attiva sul tuo dispositivo perché l\'app possa recuperare la tua posizione."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accesso alla posizione in background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Questa app può accedere alla posizione in background, oltre ad accedervi in primo piano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Questa app può accedere alla posizione in qualsiasi momento, anche quando l\'app non è in uso."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modifica impostazioni audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Consente all\'applicazione di modificare le impostazioni audio globali, come il volume e quale altoparlante viene utilizzato per l\'uscita."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"registrazione audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Questa app può scattare foto e registrare video tramite la fotocamera in qualsiasi momento."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Consenti a un\'applicazione o a un servizio di accedere alle videocamere del sistema per fare foto e video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Questa app di sistema | privilegiata può fare foto e video tramite una videocamera del sistema in qualsiasi momento. Richiede che l\'autorizzazione android.permission.CAMERA sia concessa anche all\'app"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Consenti a un\'applicazione o a un servizio di ricevere callback relativi all\'apertura o alla chiusura di videocamere."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Questa app di firma può ricevere callback quando viene aperta (dal pacchetto dell\'applicazione) o chiusa qualsiasi videocamera."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controllo vibrazione"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Consente all\'applicazione di controllare la vibrazione."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Consente all\'app di accedere allo stato di vibrazione."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Consente all\'app di indirizzare le proprie chiamate tramite il sistema al fine di migliorare l\'esperienza di chiamata."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"visualizzazione e controllo delle chiamate tramite il sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Consente all\'app di visualizzare e controllare le chiamate in corso sul dispositivo. Sono incluse informazioni quali i numeri e lo stato relativi alle chiamate."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuazione di una chiamata da un\'altra app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Consente all\'app di continuare una chiamata che è stata iniziata in un\'altra app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lettura dei numeri di telefono"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Consente all\'app di accedere ai numeri di telefono del dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"Mantenere attivo lo schermo dell\'auto"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"disattivazione stand-by del tablet"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Blocco dell\'attivazione della modalità di sospensione del dispositivo Android TV"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"disattivazione stand-by del telefono"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Consente all\'app di mantenere attivo lo schermo dell\'auto."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Consente all\'applicazione di impedire lo stand-by del tablet."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Consente all\'app di impedire l\'attivazione della modalità di sospensione del dispositivo Android TV."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Consente all\'applicazione di impedire lo stand-by del telefono."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Riprova."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nessuna impronta digitale registrata."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Questo dispositivo non dispone di sensore di impronte."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensore temporaneamente disattivato."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dito <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Impossibile verificare il volto. Riprova."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Non hai configurato Sblocco con il volto."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Sblocco con il volto non supportato su questo dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensore temporaneamente disattivato."</string>
<string name="face_name_template" msgid="3877037340223318119">"Volto <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"La rete mobile non ha accesso a Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"La rete non ha accesso a Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Non è possibile accedere al server DNS privato"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Connesso"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ha una connettività limitata"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tocca per connettere comunque"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Passato a <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Debug USB collegato"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tocca per disattivare il debug USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Seleziona per disattivare il debug USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Debug wireless connesso"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tocca per disattivare il debug wireless"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Seleziona per disattivare il debug wireless."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modalità test harness attivata"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Ripristina le impostazioni di fabbrica per disattivare la modalità test harness."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console seriale attivata"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Il servizio in primo piano avviato in background da <xliff:g id="PACKAGENAME">%1$s</xliff:g> non avrà l\'autorizzazione \"durante l\'uso\" nelle future build R. Visita la pagina go/r-bg-fgs-restriction e invia una segnalazione di bug."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vuoi aumentare il volume oltre il livello consigliato?\n\nL\'ascolto ad alto volume per lunghi periodi di tempo potrebbe danneggiare l\'udito."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usare la scorciatoia Accessibilità?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando la scorciatoia è attiva, puoi premere entrambi i pulsanti del volume per tre secondi per avviare una funzione di accessibilità."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vuoi consentire a <xliff:g id="SERVICE">%1$s</xliff:g> di avere il controllo totale del tuo dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se attivi <xliff:g id="SERVICE">%1$s</xliff:g>, il dispositivo non utilizzerà il blocco schermo per migliorare la crittografia dei dati."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Il pieno controllo è appropriato per le app che rispondono alle tue esigenze di accessibilità, ma non per gran parte delle app."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visualizza e controlla lo schermo"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Può leggere i contenuti presenti sullo schermo e mostrare i contenuti su altre app."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visualizza ed esegui azioni"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Può tenere traccia delle tue interazioni con un\'app o un sensore hardware e interagire con app per tuo conto."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Consenti"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rifiuta"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tocca una funzionalità per iniziare a usarla:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Scegli le app da usare con il pulsante Accessibilità"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Scegli le app da usare con la scorciatoia per i tasti del volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Il servizio <xliff:g id="SERVICE_NAME">%s</xliff:g> è stato disattivato"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Modifica scorciatoie"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Annulla"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Fine"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Disattiva scorciatoia"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usa scorciatoia"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversione colori"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Senza categoria"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Stabilisci tu l\'importanza di queste notifiche."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Importante a causa delle persone coinvolte."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notifica app personalizzata"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Consentire a <xliff:g id="APP">%1$s</xliff:g> di creare un nuovo utente con l\'account <xliff:g id="ACCOUNT">%2$s</xliff:g> (esiste già un utente con questo account)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Consentire a <xliff:g id="APP">%1$s</xliff:g> di creare un nuovo utente con l\'account <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Aggiungi una lingua"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Accessibilità"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra del titolo di <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> è stato inserito nel bucket RESTRICTED"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personale"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Lavoro"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Visualizzazione personale"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Visualizzazione di lavoro"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Impossibile condividere con app di lavoro"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Impossibile condividere con app personali"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Il tuo amministratore IT ha bloccato la condivisione tra profilo personale e di lavoro"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Impossibile accedere alle app di lavoro"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Il tuo amministratore IT non consente la visualizzazione dei contenuti personali nelle app di lavoro"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Impossibile accedere alle app personali"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Il tuo amministratore IT non consente la visualizzazione dei contenuti di lavoro nelle app personali"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Attiva il profilo di lavoro per condividere contenuti"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Attiva il profilo di lavoro per visualizzare contenuti"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nessuna app disponibile"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Attiva"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Registrazione o riproduzione dell\'audio delle telefonate"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Consente a questa app, se assegnata come applicazione telefono predefinita, di registrare o riprodurre l\'audio delle telefonate."</string>
</resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 4886b4a..b166193 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"הארגון שלך מנהל מכשיר זה ועשוי לנטר את התנועה ברשת. הקש לקבלת פרטים."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"מנהל המערכת שינה את הגדרות המיקום"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"יש להקיש כדי לראות את הגדרות המיקום שלך."</string>
+ <string name="country_detector" msgid="7023275114706088854">"גלאי מדינה"</string>
+ <string name="location_service" msgid="2439187616018455546">"שירות מיקום"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"שירות GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"שירות להתראות מחיישנים"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"שירות דמדומים"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"תתבצע מחיקה של המכשיר"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"לא ניתן להשתמש באפליקציה של מנהל המערכת.\n\nאם יש לך שאלות, יש ליצור קשר עם מנהל המערכת של הארגון."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ההדפסה הושבתה על ידי <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -251,6 +256,8 @@
<item quantity="other">יוצר צילום מסך לדוח על באג בעוד <xliff:g id="NUMBER_1">%d</xliff:g> שניות.</item>
<item quantity="one">יוצר צילום מסך לדוח על באג בעוד שנייה <xliff:g id="NUMBER_0">%d</xliff:g>.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"בוצע צילום מסך של דוח על באג"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"הניסיון לצילום המסך של דוח על באג נכשל"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"מצב שקט"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"הקול כבוי"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"קול מופעל"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"גישה לפקודות ספק מיקום נוספות"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"מאפשרת לאפליקציה לגשת לפקודות נוספות של ספק המיקום. הרשאה זו עשויה לאפשר לאפליקציה לשבש את פעולת ה-GPS או מקורות מיקום אחרים."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"קבלת גישה למיקום מדויק בחזית בלבד"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"אפליקציה זו יכולה לזהות את המיקום המדויק שלך רק כאשר היא פועלת בחזית. כדי שהאפליקציה תוכל להשתמש בשירותי המיקום, עליהם להיות מופעלים וזמינים במכשיר. ייתכן שפעולה זו תגביר את צריכת הסוללה."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"האפליקציה הזו יכולה לקבל את המיקום המדויק שלך משירותי המיקום כאשר היא בשימוש. האפליקציה תקבל את המיקום רק אם הפעלת את שירותי המיקום במכשיר. פעולה זו עלולה להגביר את השימוש בסוללה."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"קבלת גישה למיקום משוער תתבצע בחזית בלבד"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"אפליקציה זו יכולה לזהות את המיקום המשוער שלך רק כאשר היא פועלת בחזית. שירותי מיקום חייבים להיות מופעלים וזמינים במכשיר שלך כדי שהאפליקציה תוכל להשתמש בהם."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"כאשר האפליקציה בשימוש היא יכולה לקבל משירותי המיקום את המיקום המשוער שלך. האפליקציה תקבל את המיקום רק אם הפעלת את שירותי המיקום במכשיר."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"גישה למיקום ברקע"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"האפליקציה הזו יכולה לגשת למיקום כשהיא רצה ברקע, בנוסף לקבלת גישה למיקום בחזית."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"לאפליקציה תמיד יש גישה למיקום, גם כשאינה בשימוש."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"שנה את הגדרות האודיו שלך"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"מאפשר לאפליקציה לשנות הגדרות אודיו גלובליות כמו עוצמת קול ובחירת הרמקול המשמש לפלט."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"הקלט אודיו"</string>
@@ -435,9 +442,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"אפליקציה זו יכולה להשתמש במצלמה כדי לצלם תמונות ולהקליט סרטונים בכל עת."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"הרשאת גישה לאפליקציה או לשירות למצלמות המערכת כדי לצלם תמונות וסרטונים"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"לאפליקציית המערכת | הזו יש הרשאות מיוחדות והיא יכולה לצלם תמונות ולהקליט סרטונים באמצעות מצלמת מערכת בכל זמן. בנוסף, לאפליקציה נדרשת ההרשאה android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"אפליקציה או שירות יוכלו לקבל קריאות חוזרות (callback) כשמכשירי מצלמה ייפתחו או ייסגרו."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"אפליקציית הפרימיום הזו יכולה לקבל קריאות חוזרות (callback) כשמכשיר מצלמה כלשהו נפתח (באמצעות חבילת אפליקציה) או נסגר."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"שליטה ברטט"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"מאפשר לאפליקציה לשלוט ברטט."</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"מאפשרת לאפליקציה לקבל גישה למצב הרטט."</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"מאפשרת לאפליקציה לקבל גישה למצב רטט."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"התקשר ישירות למספרי טלפון"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"מאפשר לאפליקציה להתקשר למספרי טלפון ללא התערבותך. פעולה זו עשויה לגרום לשיחות או לחיובים לא צפויים. שים לב שהדבר לא מאפשר לאפליקציה להתקשר למספרי חירום. אפליקציות זדוניות עשויות לגרום לעלויות על ידי ביצוע שיחות ללא התערבותך."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"גישה אל שירות שיחות IMS"</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"מאפשרת לאפליקציה לנתב את השיחות דרך המערכת כדי לשפר את חוויית השיחה."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ניתן להציג שיחות ולשלוט בהן באמצעות המערכת."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"מאפשר לאפליקציה להציג שיחות נוכחיות ולשלוט בהן במכשיר. זה כולל פרטים כמו מספרי שיחה של שיחות ומצב השיחה."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"המשך שיחה מאפליקציה אחרת"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"הרשאה זו מתירה לאפליקציה להמשיך שיחה שהחלה באפליקציה אחרת."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"גישה למספרי הטלפון"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"מתירה לאפליקציה גישה למספרי הטלפון במכשיר."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"מסך המכונית יישאר דלוק"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"מנע מהטאבלט לעבור למצב שינה"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"מונעת ממכשיר ה-Android TV להיכנס למצב שינה"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"מניעת מעבר הטלפון למצב שינה"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"מסך המכונית יישאר דלוק כשהאפליקציה פועלת."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"מאפשר לאפליקציה למנוע מהטאבלט לעבור למצב שינה."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"מאפשרת לאפליקציה למנוע ממכשיר ה-Android TV לעבור למצב שינה."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"מאפשר לאפליקציה למנוע מהטלפון לעבור למצב שינה."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"כדאי לנסות שוב."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"לא נרשמו טביעות אצבע."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"במכשיר זה אין חיישן טביעות אצבע."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"החיישן מושבת באופן זמני."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"אצבע <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"לא ניתן לאמת את הפנים. יש לנסות שוב."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"לא הגדרת שחרור נעילה על ידי זיהוי פנים."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"המכשיר הזה לא תומך בשחרור נעילה על ידי זיהוי פנים."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"החיישן מושבת באופן זמני."</string>
<string name="face_name_template" msgid="3877037340223318119">"פנים <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"לרשת הסלולרית אין גישה לאינטרנט"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"לרשת אין גישה לאינטרנט"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"לא ניתן לגשת לשרת DNS הפרטי"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"הרשת מחוברת"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"הקישוריות של <xliff:g id="NETWORK_SSID">%1$s</xliff:g> מוגבלת"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"כדי להתחבר למרות זאת יש להקיש"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"מעבר אל <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"ניפוי באגים של USB מחובר"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"יש להקיש כדי לכבות את ניפוי הבאגים ב-USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"בחר להשבית ניפוי באגים ב-USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ניפוי הבאגים האלחוטי מחובר"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"יש להקיש כדי להשבית ניפוי באגים אלחוטי"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"יש לבחור כדי להשבית ניפוי באגים אלחוטי."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"מצב מסגרת בדיקה הופעל"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"כדי להשבית את מצב מסגרת בדיקה צריך לאפס להגדרות היצרן."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"קונסולה סדרתית מופעלת"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"לשירות שפועל בחזית מ-<xliff:g id="PACKAGENAME">%1$s</xliff:g> שהחל ברקע לא תהיה הרשאת while-in-use בגרסאות R build בעתיד. יש לעיין בכתובת go/r-bg-fgs-restriction ולהגיש דוח על באג."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"האם להעלות את עוצמת הקול מעל לרמה המומלצת?\n\nהאזנה בעוצמת קול גבוהה למשכי זמן ממושכים עלולה לפגוע בשמיעה."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"להשתמש בקיצור הדרך לתכונת הנגישות?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"כשקיצור הדרך מופעל, לחיצה על שני לחצני עוצמת הקול למשך שלוש שניות מפעילה את תכונת הנגישות."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ברצונך להעניק לשירות <xliff:g id="SERVICE">%1$s</xliff:g> שליטה מלאה במכשיר?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"אם השירות <xliff:g id="SERVICE">%1$s</xliff:g> יופעל, המכשיר לא ישתמש בנעילת המסך כדי לשפר את הצפנת הנתונים."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"שליטה מלאה מתאימה לאפליקציות שעוזרות עם צורכי הנגישות שלך, אבל לא לרוב האפליקציות."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"הצגת המסך ושליטה בו"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"זוהי אפשרות לקריאת כל התוכן במסך ולהצגת התוכן מעל אפליקציות אחרות."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"הצגה וביצוע של פעולות"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"זוהי אפשרות למעקב אחר האינטראקציות שלך עם אפליקציה או חיישן חומרה כלשהם, ולביצוע אינטראקציה בשמך."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"אישור"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"עדיף שלא"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"יש להקיש על תכונה כדי להתחיל להשתמש בה:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"בחירת אפליקציות לשימוש עם לחצן הנגישות"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"בחירת אפליקציות לשימוש עם מקש הקיצור לעוצמת הקול"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> כובה"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"עריכת קיצורי הדרך"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ביטול"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"סיום"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"כבה את קיצור הדרך"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"השתמש בקיצור הדרך"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"היפוך צבעים"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ללא שיוך לקטגוריה"</string>
<string name="importance_from_user" msgid="2782756722448800447">"עליך להגדיר את החשיבות של ההתראות האלה."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ההודעה חשובה בשל האנשים המעורבים."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"התראות אפליקציה בהתאמה אישית"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"האם לאפשר לאפליקציה <xliff:g id="APP">%1$s</xliff:g> ליצור משתמש חדש באמצעות <xliff:g id="ACCOUNT">%2$s</xliff:g> (כבר קיים משתמש לחשבון הזה) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"האם לאפשר לאפליקציה <xliff:g id="APP">%1$s</xliff:g> ליצור משתמש חדש באמצעות <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"הוספת שפה"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"תפריט נגישות"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"סרגל כיתוב של <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> התווספה לקטגוריה \'מוגבל\'"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"אישי"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"עבודה"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"תצוגה אישית"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"תצוגת עבודה"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"לא ניתן לשתף עם אפליקציות לעבודה"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"לא ניתן לשתף עם אפליקציות פרטיות"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"השיתוף בין פרופילים אישיים לפרופילים של עבודה נחסם על ידי מנהל/ת ה-IT"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"לא ניתן לגשת לאפליקציות לעבודה"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"מנהל/ת ה-IT לא מאפשר/ת לך להציג תוכן אישי באפליקציות לעבודה"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"לא ניתן לגשת לאפליקציות אישיות"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"מנהל/ת ה-IT לא מאפשר/ת לך להציג תוכן עבודה באפליקציות אישיות"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"יש להפעיל את פרופיל העבודה כדי לשתף תוכן"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"יש להפעיל את פרופיל העבודה כדי להציג תוכן"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"אין אפליקציות זמינות"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"הפעלה"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"הקלטה או הפעלה של אודיו בשיחות טלפוניות"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"כאשר האפליקציה הזו מוגדרת כאפליקציית חייגן בברירת מחדל, תהיה לה הרשאה להקליט ולהפעיל אודיו בשיחות טלפוניות."</string>
</resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 9de1672..b8011de 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"このデバイスは組織によって管理され、ネットワーク トラフィックが監視される場合があります。詳しくはタップしてください。"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"位置情報の設定が管理者によって変更されました"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"タップすると位置情報の設定が表示されます。"</string>
+ <string name="country_detector" msgid="7023275114706088854">"国の検出"</string>
+ <string name="location_service" msgid="2439187616018455546">"位置情報サービス"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS サービス"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"センサー通知サービス"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"トワイライト サービス"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"デバイスのデータが消去されます"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"管理アプリを使用できません。デバイスのデータはこれから消去されます。\n\nご不明な点がある場合は、組織の管理者にお問い合わせください。"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」により印刷は無効にされています。"</string>
@@ -245,6 +250,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> 秒後にバグレポートのスクリーンショットが作成されます。</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> 秒後にバグレポートのスクリーンショットが作成されます。</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"バグレポートのスクリーンショットを取得しました"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"バグレポートのスクリーンショットを取得できませんでした"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"マナーモード"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"サウンドOFF"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"サウンドON"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"位置情報提供者の追加コマンドアクセス"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"位置情報提供元の追加のコマンドにアクセスすることをアプリに許可します。許可すると、アプリがGPSなどの位置情報源の動作を妨害する恐れがあります。"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"フォアグラウンドでのみ正確な位置情報にアクセス"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"このアプリは、フォアグラウンドでのみユーザーの正確な位置情報を取得できます。位置情報サービスを ON にして、デバイスでアプリがサービスを利用できるようにする必要があります。これにより、電池の消費量が増える可能性があります。"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"このアプリは、使用中に、位置情報サービスからデバイスの正確な位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。この場合、電池使用量が増えることがあります。"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"フォアグラウンドでのみおおよその位置情報にアクセス"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"このアプリは、フォアグラウンドでのみユーザーのおおよその位置情報を取得できます。位置情報サービスを ON にして、デバイスでアプリがサービスを利用できるようにする必要があります。"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"このアプリは、使用中に、位置情報サービスからデバイスのおおよその位置情報を取得できます。アプリが位置情報を取得するには、デバイスで位置情報サービスがオンになっている必要があります。"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"バックグラウンドでの位置情報へのアクセス"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"このアプリは、フォアグラウンドで位置情報にアクセスできるだけでなく、バックグラウンドでの実行中も位置情報にアクセスできます。"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"このアプリは、使用中でない場合でも、常に位置情報にアクセスできます。"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"音声設定の変更"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"音声全般の設定(音量、出力に使用するスピーカーなど)の変更をアプリに許可します。"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"録音"</string>
@@ -429,9 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"このアプリは、いつでもカメラを使用して写真や動画を撮影できます。"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"写真と動画を撮影するには、システムカメラへのアクセスをアプリまたはサービスに許可してください"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"権限を付与されたこのシステムアプリは、いつでもシステムカメラを使用して写真と動画を撮影できます。アプリには android.permission.CAMERA 権限も必要です"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"カメラデバイスが起動または終了したときにコールバックを受け取ることを、アプリまたはサービスに許可してください。"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"この署名アプリを使用すると、カメラデバイスが(なんらかのアプリ パッケージによって)起動するとき、または終了するときにコールバックを受け取ることができます。"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"バイブレーションの制御"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"バイブレーションの制御をアプリに許可します。"</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"バイブレーションの状態へのアクセスをアプリに許可します。"</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"バイブレーションのオン / オフ状態の把握をアプリに許可します。"</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"電話番号発信"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"電話番号への自動発信をアプリに許可します。これにより、予期せぬ発信や料金が発生する可能性があります。なお、緊急通報番号への発信は許可されません。悪意のあるアプリが確認なしで発信し、料金が発生する恐れがあります。"</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS通話サービスへのアクセス"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"通話環境の改善のために、システム経由での通話転送をアプリに許可します。"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"システム経由の通話の表示と操作。"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"デバイスで進行中の通話の表示と操作をアプリに許可します。通話の電話番号や状態などの情報も含まれます。"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"別のアプリでの通話の続行"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"別のアプリで通話を続行することをこのアプリに許可します。"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"電話番号の読み取り"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"デバイスの電話番号へのアクセスをアプリに許可します。"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"車の画面を常にオンにする"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"タブレットのスリープを無効化"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV デバイスのスリープの無効化"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"デバイスのスリープを無効にする"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"車の画面を常にオンにすることをアプリに許可します。"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"タブレットのスリープを無効にすることをアプリに許可します。"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV デバイスのスリープを無効にすることをアプリに許可します。"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"モバイル デバイスのスリープを無効にすることをアプリに許可します。"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"もう一度お試しください。"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"指紋が登録されていません。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"このデバイスには指紋認証センサーがありません。"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"センサーが一時的に無効になっています。"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"指紋 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"顔を確認できません。もう一度お試しください。"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"顔認証を設定していません。"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"このデバイスでは、顔認証はご利用いただけません。"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"センサーが一時的に無効になっています。"</string>
<string name="face_name_template" msgid="3877037340223318119">"顔 <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"モバイル ネットワークがインターネットに接続されていません"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ネットワークがインターネットに接続されていません"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"プライベート DNS サーバーにアクセスできません"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"接続しました"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> の接続が制限されています"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"接続するにはタップしてください"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"「<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>」に切り替えました"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USBデバッグが接続されました"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB デバッグを無効にするにはここをタップしてください"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USBデバッグを無効にする場合に選択します。"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ワイヤレス デバッグが接続されました"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ワイヤレス デバッグをUSB デバッグを無効にするにはここをタップしてください"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ワイヤレス デバッグを無効にする場合に選択します。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"テストハーネス モード有効"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"出荷時設定にリセットしてテストハーネス モードを無効にしてください。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"シリアル コンソールは有効です"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"今後の R ビルドでは、<xliff:g id="PACKAGENAME">%1$s</xliff:g> からバックグラウンドで開始されるフォアグラウンド サービスに「使用中のみ許可」の権限がありません。go/r-bg-fgs-restriction を確認し、バグレポートを提出してください。"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"推奨レベルを超えるまで音量を上げますか?\n\n大音量で長時間聞き続けると、聴力を損なう恐れがあります。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ユーザー補助機能のショートカットの使用"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ショートカットが ON の場合、両方の音量ボタンを 3 秒ほど長押しするとユーザー補助機能が起動します。"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> にデバイスのフル コントロールを許可しますか?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> をオンにすると、デバイスデータの暗号化の強化に画面ロックは使用されなくなります。"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"フル コントロールは、ユーザー補助機能を必要とするユーザーをサポートするアプリには適していますが、ほとんどのアプリには適していません。"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"画面の表示と操作"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"画面上のすべてのコンテンツを読み取り、他のアプリでコンテンツを表示することができます。"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"操作の表示と実行"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"アプリやハードウェア センサーの操作を記録したり、自動的にアプリを操作したりできます。"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"許可"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"許可しない"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"使用を開始する機能をタップ:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"ユーザー補助機能ボタンで使用するアプリを選択"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"音量キーのショートカットで使用するアプリを選択"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> はオフになっています"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ショートカットの編集"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"キャンセル"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完了"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ショートカットを OFF にする"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ショートカットを使用"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色反転"</string>
@@ -1765,8 +1792,8 @@
<string name="package_updated_device_owner" msgid="7560272363805506941">"管理者により更新されています"</string>
<string name="package_deleted_device_owner" msgid="2292335928930293023">"管理者により削除されています"</string>
<string name="confirm_battery_saver" msgid="5247976246208245754">"OK"</string>
- <string name="battery_saver_description_with_learn_more" msgid="1817385558636532621">"電池を長持ちさせるためにバッテリー セーバーが行う操作:\n·ダークテーマをオンにする\n·バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能をオフにする、または制限する\n\n"<annotation id="url">"詳細"</annotation></string>
- <string name="battery_saver_description" msgid="7618492104632328184">"電池を長持ちさせるためにバッテリー セーバーが行う操作:\n·ダークテーマをオンにする\n·バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能をオフにする、または制限する"</string>
+ <string name="battery_saver_description_with_learn_more" msgid="1817385558636532621">"電池を長持ちさせるためにバッテリー セーバーが行う操作:\n·ダークテーマを ON にする\n·バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能を OFF にする、または制限する\n\n"<annotation id="url">"詳細"</annotation></string>
+ <string name="battery_saver_description" msgid="7618492104632328184">"電池を長持ちさせるためにバッテリー セーバーが行う操作:\n·ダークテーマを ON にする\n·バックグラウンド アクティビティ、一部の視覚効果や、「OK Google」などの機能を OFF にする、または制限する"</string>
<string name="data_saver_description" msgid="4995164271550590517">"データセーバーは、一部のアプリによるバックグラウンドでのデータ送受信を停止することでデータ使用量を抑制します。使用中のアプリからデータにアクセスすることはできますが、その頻度は低くなる場合があります。この影響として、たとえば画像はタップしないと表示されないようになります。"</string>
<string name="data_saver_enable_title" msgid="7080620065745260137">"データセーバーを ON にしますか?"</string>
<string name="data_saver_enable_button" msgid="4399405762586419726">"ON にする"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"カテゴリなし"</string>
<string name="importance_from_user" msgid="2782756722448800447">"このような通知の重要度を設定します。"</string>
<string name="importance_from_person" msgid="4235804979664465383">"関係するユーザーのため、この設定は重要です。"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"カスタムアプリ通知"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> が <xliff:g id="ACCOUNT">%2$s</xliff:g> で新しいユーザーを作成できるようにしますか?(このアカウントのユーザーはすでに存在します)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> が <xliff:g id="ACCOUNT">%2$s</xliff:g> で新しいユーザーを作成できるようにしますか?"</string>
<string name="language_selection_title" msgid="52674936078683285">"言語を追加"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ユーザー補助機能メニュー"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> のキャプション バーです。"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> は RESTRICTED バケットに移動しました。"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"個人用"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"仕事用"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"個人用ビュー"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"仕事用ビュー"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"仕事用アプリと共有できません"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"個人用アプリと共有できません"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT 管理者が個人用プロファイルと仕事用プロファイルの間の共有をブロックしました"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"仕事用アプリにアクセスできません"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT 管理者は個人用コンテンツを仕事用アプリで表示することを許可していません"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"個人用アプリにアクセスできません"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT 管理者は仕事用コンテンツを個人用アプリで表示することを許可していません"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"コンテンツを共有するには、仕事用プロファイルをオンにしてください"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"コンテンツを表示するには、仕事用プロファイルをオンにしてください"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"利用できるアプリはありません"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"オンにする"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"通話中に録音または音声の再生を行う"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"デフォルトの電話アプリケーションとして割り当てられている場合、このアプリに通話中の録音または音声の再生を許可します。"</string>
</resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 2d15c16..1e23405 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ამ მოწყობილობას თქვენი ორგანიზაცია მართავს და მას ქსელის ტრაფიკის მონიტორინგი შეუძლია. შეეხეთ დამატებითი დეტალებისთვის."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"მდებარეობის პარამეტრები თქვენმა ადმინისტრატორმა შეცვალა"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"შეეხეთ თქვენი მდებარეობის პარამეტრების სანახავად."</string>
+ <string name="country_detector" msgid="7023275114706088854">"ქვეყნის დეტექტორი"</string>
+ <string name="location_service" msgid="2439187616018455546">"მდებარეობის სერვისი"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS სერვისი"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"სენსორის შეტყობინების სერვისი"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight სერვისი"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"თქვენი მოწყობილობა წაიშლება"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ადმინისტრატორის აპის გამოყენება ვერ მოხერხდება. თქვენი მოწყობილობა ახლა ამოიშლება.\n\nთუ შეკითხვები გაქვთ, დაუკავშირდით თქვენი ორგანიზაციის ადმინისტრატორს."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ბეჭდვა გათიშულია <xliff:g id="OWNER_APP">%s</xliff:g>-ის მიერ."</string>
@@ -245,6 +250,8 @@
<item quantity="other">ხარვეზის შესახებ ანგარიშის ეკრანის ანაბეჭდის გადაღება მოხდება <xliff:g id="NUMBER_1">%d</xliff:g> წამში.</item>
<item quantity="one">ხარვეზის შესახებ ანგარიშის ეკრანის ანაბეჭდის გადაღება მოხდება <xliff:g id="NUMBER_0">%d</xliff:g> წამში.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"სისტემის ხარვეზის ანგარიშის ეკრანის ანაბეჭდი გადაღებულია"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"სისტემის ხარვეზის ანგარიშის ეკრანის ანაბეჭდის გადაღება ვერ მოხერხდა"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ჩუმი რეჟიმი"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ხმა გამორთულია"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ხმა ჩართულია"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"მდებარეობის პროვაიდერის დამატებით ბრძანებებზე წვდომა"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"აპს შეეძლება წვდომა ჰქონდეს მდებარეობის სერვისის დამატებით ბრძანებებზე. შესაძლოა აპმა ეს გამოიყენოს GPS-ისა და მდებარეობის სხვა წყაროების მუშაობის პროცესში ჩარევისთვის."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ზუსტ მდებარეობაზე წვდომა მხოლოდ წინა პლანზე"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ამ აპს შეუძლია თქვენი ზუსტი მდებარეობის შესახებ ინფორმაციის მიღება მხოლოდ მაშინ, როცა გაშვებულია წინა პლანზე. თქვენს მოწყობილობაზე ჩართული და ხელმისაწვდომი უნდა იყოს მდებარეობის სერვისები, აპმა მათი გამოყენება რომ შეძლოს. ამან შეიძლება გაზარდოს ბატარეის მოხმარება."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ამ აპს, მისი გამოყენების პროცესში, შეუძლია თქვენი ზუსტი მდებარეობის შესახებ ინფორმაციის მიღება მდებარეობის სერვისებიდან. იმისთვის, რომ აპმა მდებარეობის შესახებ ინფორმაცია მიიღოს, თქვენს მოწყობილობაზე ჩართული უნდა იყოს მდებარეობის სერვისები. ამან შეიძლება ბატარეის მოხმარება გაზარდოს."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"მიახლოებით მდებარეობაზე წვდომა მხოლოდ წინა პლანზე"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ამ აპს შეუძლია თქვენი მიახლოებითი მდებარეობის შესახებ ინფორმაციის მიღება მხოლოდ მაშინ, როცა გაშვებულია წინა პლანზე. თქვენს მოწყობილობაზე ჩართული და ხელმისაწვდომი უნდა იყოს მდებარეობის სერვისები, აპმა მათი გამოყენება რომ შეძლოს."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ამ აპს, მისი გამოყენების პროცესში, შეუძლია თქვენი მიახლოებითი მდებარეობის შესახებ ინფორმაციის მიღება მდებარეობის სერვისებიდან. იმისთვის, რომ აპმა მდებარეობის შესახებ ინფორმაცია მიიღოს, თქვენს მოწყობილობაზე ჩართული უნდა იყოს მდებარეობის სერვისები."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"მდებარეობაზე წვდომა ფონურ რეჟიმში"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"წინა პლანზე ყოფნისას მდებარეობაზე წვდომის გარდა, ამ აპს შეუძლია, ჰქონდეს წვდომა მდებარეობაზე ფონურ რეჟიმში მუშაობისას."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ამ აპს შეუძლია წვდომა მდებარეობაზე ნებისმიერ დროს, მაშინაც კი, როცა არ გამოიყენება."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"თქვენი აუდიო პარამეტრების შეცვლა"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"აპს შეეძლება აუდიოს გლობალური პარამეტრების შეცვლა. მაგ.: ხმის სიმაღლე და რომელი დინამიკი გამოიყენება სიგნალის გამოსტანად."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"აუდიოს ჩაწერა"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ამ აპს ნებისმიერ დროს შეუძლია კამერით სურათების გადაღება და ვიდეოების ჩაწერა."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ნება დაერთოს აპლიკაციას ან სერვისს, ჰქონდეს წვდომა სისტემის კამერებზე სურათების და ვიდეოების გადასაღებად"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ამ პრივილეგირებულ | სისტემის აპს შეუძლია ფოტოების გადაღება და ვიდეოების ჩაწერა ნებისმიერ დროს სისტემის კამერის გამოყენებით. საჭიროა, რომ აპს ჰქოდეს android.permission.CAMERA ნებართვაც"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ნება დაერთოს აპლიკაციას ან სერვისს, მიიღოს გადმორეკვები კამერის მოწყობილობის გახსნის ან დახურვისას."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"ამ მინაწერის აპს შეუძლია მიიღოს გადმორეკვები, როდესაც რომელიმე კამერის მოწყობილობა იხსნება (რომელიმე აპლიკაციის პაკეტით) ან იხურება."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ვიბრაციის კონტროლი"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"აპს შეეძლება, მართოს ვიბრირება."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ნებას რთავს აპს, ჰქონდეს წვდომა ვიბრაციის მდგომარეობაზე."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"დარეკვის ხარისხის გაუმჯობესების მიზნით, აპს ზარების სისტემის მეშვეობით მარშრუტიზაციის საშუალებას აძლევს."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ზარების ნახვა და გაკონტროლება სისტემის მეშვეობით."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"საშუალებას აძლევს აპს, იხილოს და გააკონტროლოს მიმდინარე ზარები მოწყობილობაზე. აღნიშნული მოიცავს ისეთ ინფორმაციას, როგორიცაა ზარებთან დაკავშირებული აბონენტების ნომრები და ზარების მდგომარეობა."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ზარის სხვა აპიდან გაგრძელება"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ნებას რთავს აპს, გააგრძელოს ზარი, რომელიც სხვა აპშია წამოწყებული."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ტელეფონის ნომრების წაკითხვა"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"აპს მოწყობილობის ტელეფონის ნომრებზე წვდომის საშუალებას მისცემს."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ჩართული ჰქონდეს მანქანის ეკრანი"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"დაიცავით ტაბლეტი დაძინებისგან"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"არ მისცეთ დაძინების საშუალება Android TV მოწყობილობას"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ტელეფონის ძილის რეჟიმში გადასვლის აღკვეთა"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ნებას რთავს აპს, ჩართული ჰქონდეს მანქანის ეკრანი."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"აპს შეეძლება ხელი შეუშალოს ტაბლეტის დაძინებას."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ნებას რთავს აპს, ხელი შეუშალოს Android TV მოწყობილობას დაძინებაში."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"აპს შეეძლება ხელი შეუშალოს ტელეფონის დაძინებას."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ხელახლა სცადეთ"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"თითის ანაბეჭდები რეგისტრირებული არ არის."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ამ მოწყობილობას არ აქვს თითის ანაბეჭდის სენსორი."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"სენსორი დროებით გათიშულია."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"თითი <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"სახის დადასტურება ვერ ხერხდება. ცადეთ ხელახლა."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"თქვენ არ დაგიყენებიათ სახით განბლოკვა."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"განბლოკვა სახით ამ მოწყობილობაზე მხარდაჭერილი არ არის."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"სენსორი დროებით გათიშულია."</string>
<string name="face_name_template" msgid="3877037340223318119">"სახე <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"მობილურ ქსელს არ აქვს ინტერნეტზე წვდომა"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ქსელს არ აქვს ინტერნეტზე წვდომა"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"პირად DNS სერვერზე წვდომა შეუძლებელია"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"დაკავშირებულია"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>-ის კავშირები შეზღუდულია"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"შეეხეთ, თუ მაინც გსურთ დაკავშირება"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"ახლა გამოიყენება <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB გამართვა შეერთებულია"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"შეეხეთ, რათა გამორთოთ USB შეცდომების გამართვა"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"მონიშნეთ რათა შეწყვიტოთ USB-ის გამართვა"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"შეცდომების უსადენო გამართვა დაკავშირებულია"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"შეეხეთ შეცდომების უსადენო გამართვის გამოსართავად"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"აირჩიეთ შეცდომების უსადენო გამართვის გასათიშად."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"რეჟიმი „გარემო ტესტირებისთვის“ ჩართულია"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"დააბრუნეთ ქარხნული პარამეტრები „გარემო ტესტირებისთვის“ რეჟიმის გასათიშად."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"სერიული კონსოლი ჩართულია"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-ის ფონურად დაწყებულ წინა პლანის სერვისს მომავალ R build-ებში გამოყენების პროცესში წვდომის ნებართვა არ ექნება. გთხოვთ, იხილოთ go/r-bg-fgs-restriction და გამოგზავნოთ ხარვეზის ანგარიში."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"გსურთ ხმის რეკომენდებულ დონეზე მაღლა აწევა?\n\nხანგრძლივად ხმამაღლა მოსმენით შესაძლოა სმენადობა დაიზიანოთ."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"გსურთ მარტივი წვდომის მალსახმობის გამოყენება?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"თუ მალსახმობი ჩართულია, ხმის ორივე ღილაკზე 3 წამის განმავლობაში დაჭერით მარტივი წვდომის ფუნქცია ჩაირთვება."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"დართავთ ნებას <xliff:g id="SERVICE">%1$s</xliff:g>-ს, სრულად მართოს თქვენი მოწყობილობა?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>-ს თუ ჩართავთ, მონაცემთა დაშიფვრის გასაძლიერებლად თქვენი მოწყობილობა ეკრანის დაბლოკვას არ გამოიყენებს."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"სრული კონტროლი გამოსადეგია აპებისთვის, რომლებიც მარტივი წვდომის საჭიროებისას გეხმარებათ, მაგრამ არა აპების უმრავლესობისთვის."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ეკრანის ნახვა და მართვა"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"მას შეუძლია წაიკითხოს ეკრანზე არსებული მთელი კონტენტი და აჩვენოს კონტენტი სხვა აპებში."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"მოქმედებების ნახვა და შესრულება"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"მას შეუძლია თვალი მიადევნოს თქვენს ინტერაქციებს აპის ან აპარატურის სენსორის საშუალებით, ასევე, თქვენი სახელით აწარმოოს აპებთან ინტერაქცია."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"დაშვება"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"უარყოფა"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"შეეხეთ ფუნქციას მისი გამოყენების დასაწყებად:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"აირჩიეთ აპები, რომელთა გამოყენებაც გსურთ მარტივი წვდომის ღილაკით"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"აირჩიეთ აპები, რომელთა გამოყენებაც გსურთ ხმის ღილაკის მალსახმობით"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> გამორთულია"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"მალსახმობების რედაქტირება"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"გაუქმება"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"მზადაა"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"მალსახმობის გამორთვა"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"მალსახმობის გამოყენება"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ფერთა ინვერსია"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"კატეგორიის გარეშე"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ამ შეტყობინებების მნიშვნელობის დონე განისაზღვრა თქვენ მიერ."</string>
<string name="importance_from_person" msgid="4235804979664465383">"მნიშვნელოვანია ჩართული მომხმარებლების გამო."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"აპის მორგებული შეტყობინება"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"მიეცეს უფლება <xliff:g id="APP">%1$s</xliff:g>-ს <xliff:g id="ACCOUNT">%2$s</xliff:g>-ის მეშვეობით ახალი მომხმარებელი შექმნას (ამ ანგარიშის მქონე მომხმარებელი უკვე არსებობს)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"მიეცეს უფლება <xliff:g id="APP">%1$s</xliff:g>-ს <xliff:g id="ACCOUNT">%2$s</xliff:g>-ის მეშვეობით ახალი მომხმარებელი შექმნას?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ენის დამატება"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"მარტივი წვდომის მენიუ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის სუბტიტრების ზოლი."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> მოთავსდა კალათაში „შეზღუდული“"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"პირადი"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"სამსახური"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"პირადი ხედი"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"სამსახურის ხედი"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"სამსახურის აპებით გაზიარება შეუძლებელია"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"პირადი აპებით გაზიარება შეუძლებელია"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"თქვენმა IT ადმინისტრატორმა დაბლოკა გაზიარება პირად და სამსახურის პროფილებს შორის"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"სამსახურის აპებზე წვდომა ვერ ხერხდება"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"თქვენი IT ადმინისტრატორი არ გაძლევთ სამსახურის აპებიდან პირადი კონტენტის ნახვის უფლებას"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"პირად აპებზე წვდომა ვერ ხერხდება"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"თქვენი IT ადმინისტრატორი არ გაძლევთ პირადი აპებიდან სამსახურის კონტენტის ნახვის უფლებას"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"კონტენტის გასაზიარებლად ჩართეთ სამსახურის პროფილი"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"კონტენტის სანახავად ჩართეთ სამსახურის პროფილი"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ხელმისაწვდომი აპები არ არის"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ჩართვა"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"სატელეფონო ზარებში აუდიოს ჩაწერა ან დაკვრა"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ნაგულისხმევ დასარეკ აპლიკაციად არჩევის შემთხვევაში, ნებას რთავს აპს ჩაიწეროს ან დაუკრას აუდიო სატელეფონო ზარებში."</string>
</resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index 1406a8b..f54b138 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"Әкімші құрылғыны жеке пайдалануға ұсынды."</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"Құрылғы басқарылады"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ұйымыңыз осы құрылғыны басқарады және желі трафигін бақылауы мүмкін. Мәліметтер алу үшін түртіңіз."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Орналасу параметрлерін әкімшіңіз өзгертті."</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"Орналасу параметрлерін көру үшін түртіңіз."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Ел детекторы"</string>
+ <string name="location_service" msgid="2439187616018455546">"Орынды анықтау қызметі"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS қызметі"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Датчик хабарландыруы қызметі"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight қызметі"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Құрылғыңыздағы деректер өшіріледі"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Әкімші қолданбасын пайдалану мүмкін емес. Қазір құрылғыдағы деректер өшіріледі\n\nСұрақтарыңыз болса, ұйым әкімшісіне хабарласыңыз."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Басып шығаруды <xliff:g id="OWNER_APP">%s</xliff:g> өшірді."</string>
@@ -247,6 +250,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> секундтан кейін қате туралы есептің скриншоты түсіріледі.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> секундтан кейін қате туралы есептің скриншоты түсіріледі.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Қате туралы есеп түсірілген скриншот"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Қате туралы есеп скриншоты түсірілмеді."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Үнсіз режимі"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Дыбыс ӨШІРУЛІ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Дыбыс ҚОСУЛЫ"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"қосымша аймақ жабдықтаушы пәрмендеріне қол жетімділік"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Қолданбаға орын жеткізушісінің қосымша пәрмендеріне қатынасуға рұқсат береді. Бұл қолданбаға GPS немесе басқа орын көздерінің жұмысына кедергі келтіруге рұқсат беруі мүмкін."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"нақты орналасқан жер туралы ақпаратқа тек ашық экранда кіру"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Бұл қолданба нақты орналасқан жеріңіз туралы ақпаратты экранда ашық тұрғанда ғана анықтай алады. Қолданба орынды анықтау қызметтерін пайдалана алуы үшін, олар қосулы әрі құрылғыда қолжетімді болуы керек. Батарея көбірек тұтынылуы мүмкін."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Қолданба пайдаланылып жатқанда, ол орынды анықтау қызметтерінен дәл геодерегіңізді ала алады. Геодеректі алу үшін құрылғыңызға арналған орынды анықтау қызметтері қосулы тұруы керек. Бұл батарея шығынын арттыруы мүмкін."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"болжалды орналасқан жер туралы ақпаратқа тек ашық экранда кіру"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Бұл қолданба орналасқан жеріңіз туралы болжалды ақпаратты экранда ашық тұрғанда ғана анықтай алады. Қолданба орынды анықтау қызметтерін пайдалана алуы үшін, олар қосулы әрі құрылғыда қолжетімді болуы керек."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Бұл қолданба пайдаланылып жатқанда, ол орынды анықтау қызметтерінен болжалды геодерегіңізді ала алады. Геодеректі алу үшін құрылғыңызға арналған орынды анықтау қызметтері қосулы тұруы керек."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"геодеректерді фондық режимде пайдалану"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Қолданба фондық және белсенді режимде де орналасқан жеріңіз мәліметін ала алады."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Бұл қолданба пайдаланылмайтын кезде де, ол геодеректі кез келген уақытта пайдалана алады."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"аудио параметрлерін өзгерту"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Қолданбаға дыбыс қаттылығы және аудио шығыс үндеткішін таңдау сияқты жаһандық аудио параметрлерін өзгерту мүмкіндігін береді."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"аудио жазу"</string>
@@ -431,10 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Бұл қолданба кез келген уақытта камерамен суретке түсіруі және бейнелерді жазуы мүмкін."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Суретке немесе бейнеге түсіру үшін қолданбаға немесе қызметке жүйелік камераларды пайдалануға рұқсат беру"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Осы айрықша | жүйе қолданбасы кез келген уақытта жүйелік камера арқылы суретке не бейнеге түсіре алады. Қолданбаға android.permission.CAMERA рұқсаты қажет болады."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Қолданбаға не қызметке ашылып не жабылып жатқан камера құрылғылары туралы кері шақыру алуға рұқсат ету"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Кез келген камера ашылып (көрсетілген қолданба пакеті арқылы) не жабылып жатқанда, бұл қолтаңба қолданбасы кері шақыру алады."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"тербелісті басқару"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Қолданбаға вибраторды басқаруға рұқсат береді."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Қолданбаға діріл күйін пайдалануға мүмкіндік береді."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"нөмірлерге тікелей телефон шалу"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Қолданбаға сіздің қатысуыңызсыз қоңырау шалу мүмкіндігін береді. Нәтижесінде қосымша төлем немесе күтпеген қоңырау алуыңыз мүмкін. Есіңізде болсын, қолданба төтенше байланыстарға қоңырау шала алмайды. Залалды қолданбалар сіздің рұқсатыңызсыз қоңыраулар шалып, күтпеген төлемдерге себеп болуы мүмкін."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS қоңырау қызметін пайдалану"</string>
@@ -445,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Қоңырау шалу тәжірибесін жақсарту үшін қолданба қоңырауларды жүйе арқылы бағыттай алады."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"жүйе арқылы қоңырауларды көру және басқару."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Қолданбаға құрылғыдағы қазіргі қоңырауларды көруге және басқаруға мүмкіндік береді. Бұл – қоңырау шалу нөмірлері және қоңыраулардың күйі сияқты ақпаратқа қатысты."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"басқа қолданбадағы қоңырауды жалғастыру"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Қолданбаға басқа қолданбадағы қоңырауды жалғастыруға рұқсат береді."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"телефон нөмірлерін оқу"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Қолданбаға құрылғының телефон нөмірлерін алуға мүмкіндік береді."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"көлік экранын қосулы күйде ұстау"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"планшетті ұйқыдан бөгеу"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV құрылғыңызды ұйқы режиміне өткізбеу"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"телефонды ұйқыдан бөгеу"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Қолданбаға көлік экранын қосулы күйде ұстауға мүмкіндік береді."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Қолданбаға планшеттің ұйқыға кетуін болдырмауға рұқсат береді."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Қолданба Android TV құрылғысын \"Ұйқы\" режиміне өткізбейтін болады."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Қолданбаға телефонның ұйқыға кетуін болдырмауға рұқсат береді."</string>
@@ -549,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Әрекетті қайталаңыз."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Саусақ іздері тіркелмеген."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Бұл құрылғыда саусақ ізін оқу сканері жоқ."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчик уақытша өшірулі."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> саусағы"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Бетті тану мүмкін емес. Әрекетті қайталаңыз."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Face Unlock реттелмеді."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Бұл құрылғыда Face Unlock функциясы істемейді."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик уақытша өшірулі."</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> беті"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобильдік желі интернетке қосылмаған."</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Желі интернетке қосылмаған."</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Жеке DNS серверіне кіру мүмкін емес."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Жалғанды"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> желісінің қосылу мүмкіндігі шектеулі."</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Бәрібір жалғау үшін түртіңіз."</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> желісіне ауысты"</string>
@@ -1321,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB түзетуі қосылған"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB арқылы түзетуді өшіру үшін түртіңіз"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB түзетуін өшіру үшін таңдаңыз."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Сымсыз түзету байланыстырылды"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Сымсыз түзетуді өшіру үшін түртіңіз."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Сымсыз түзетуді өшіріңіз."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сынақ бағдарламасы режимі қосылды"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сынақ бағдарламасы режимін өшіру үшін зауыттық күйіне қайтарыңыз."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериялық консоль қосылды"</string>
@@ -1624,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Фондық режимде іске қосылған <xliff:g id="PACKAGENAME">%1$s</xliff:g> белсенді пакетінің алдағы R құрамаларында \"Пайдаланғанда ғана рұқсат ету\" рұқсаты болмайды. go/r-bg-fgs-restriction бетіне өтіп, қате туралы есеп жіберіңіз."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дыбыс деңгейін ұсынылған деңгейден көтеру керек пе?\n\nЖоғары дыбыс деңгейінде ұзақ кезеңдер бойы тыңдау есту қабілетіңізге зиян тигізуі мүмкін."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Арнайы мүмкіндік төте жолын пайдалану керек пе?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Түймелер тіркесімі қосулы кезде, екі дыбыс түймесін 3 секунд басып тұрсаңыз, \"Арнайы мүмкіндіктер\" функциясы іске қосылады."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> қызметі құрылғыңызды толық басқаруына рұқсат етілсін бе?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> қоссаңыз, құрылғыңыз деректерді шифрлау үшін экранды бекітуді пайдаланбайды."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Арнайы мүмкіндіктер бойынша көмектесетін қолданбаларға ғана құрылғыны толық басқару рұқсатын берген дұрыс."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Экранды көру және басқару"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ол экрандағы мазмұнды толық оқиды және мазмұнды басқа қолданбалардың үстінен көрсете алады."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Әрекеттерді көру және орындау"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ол қолданбамен немесе жабдық датчигімен істеген тапсырмаларыңызды бақылайды және қолданбаларды сіздің атыңыздан пайдаланады."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Рұқсат ету"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Қабылдамау"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны пайдалана бастау үшін түртіңіз:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"\"Арнайы мүмкіндіктер\" түймесімен қолданылатын қолданбаларды таңдаңыз"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Дыбыс деңгейі пернелері таңбашасымен қолданылатын қолданбаларды таңдаңыз"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> қызметі өшірулі."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Таңбашаларды өзгерту"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Бас тарту"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Дайын"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Төте жолды өшіру"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Төте жолды пайдалану"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Түстер инверсиясы"</string>
@@ -1848,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Санатқа жатқызылмаған"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Сіз осы хабарландырулардың маңыздылығын орнатасыз."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Қатысты адамдарға байланысты бұл маңызды."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Арнаулы хабар хабарландыруы"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> қолданбасына <xliff:g id="ACCOUNT">%2$s</xliff:g> есептік жазбасы бар жаңа пайдаланушы (мұндай есептік жазбаға ие пайдаланушы бұрыннан бар) жасауға рұқсат етілсін бе?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> қолданбасына <xliff:g id="ACCOUNT">%2$s</xliff:g> есептік жазбасы бар жаңа пайдаланушы жасауға рұқсат етілсін бе?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Тілді қосу"</string>
@@ -2019,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Арнайы мүмкіндіктер мәзірі"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасының жазу жолағы."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ШЕКТЕЛГЕН себетке салынды."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Жұмыс"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Жеке көру"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Жұмыс деректерін көру"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Жұмыс қолданбаларымен бөлісілмейді"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Жеке қолданбалармен бөлісілмейді"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Әкімшіңіз жеке және жұмыс қолданбалары арасында деректер бөлісуге тыйым салған."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Жұмыс қолданбаларын пайдалану мүмкін емес"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Әкімшіңіз жұмыс қолданбаларынан жеке мазмұнды көруге тыйым салған."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Жеке қолданбаларды пайдалану мүмкін емес"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Әкімшіңіз жеке қолданбалардан жұмыс мазмұнын көруге тыйым салған."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Мазмұнды бөлісу үшін жұмыс профилін қосыңыз."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Мазмұнды көру үшін жұмыс профилін қосыңыз."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Қолданбалар жоқ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Қосу"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Телефон қоңырауларында аудио жазу немесе ойнату"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Қолданба әдепкі нөмір тергіш қолданба ретінде тағайындалған кезде, телефон қоңырауларында аудионы жазуға немесе ойнатуға мүмкіндік береді."</string>
</resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index 50e2e15..38f447e 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ស្ថាប័នរបស់អ្នកគ្រប់គ្រងឧបករណ៍នេះ ហើយអាចនឹងតាមដានចរាចរណ៍បណ្តាញ។ ចុចដើម្បីទទួលបានព័ត៌មានលម្អិត។"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ការកំណត់ទីតាំងត្រូវបានប្ដូរដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ចុចដើម្បីមើលការកំណត់ទីតាំងរបស់អ្នក។"</string>
+ <string name="country_detector" msgid="7023275114706088854">"ឧបករណ៍សម្គាល់ប្រទេស"</string>
+ <string name="location_service" msgid="2439187616018455546">"សេវាកម្មទីតាំង"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"សេវាកម្ម GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"សេវាកម្មជូនដំណឹងឧបករណ៍ចាប់សញ្ញា"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"សេវាកម្មព្រលប់"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ឧបករណ៍របស់អ្នកនឹងត្រូវបានលុប"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"មិនអាចប្រើកម្មវិធីអ្នកគ្រប់គ្រងបានទេ។ ឧបករណ៍របស់អ្នកនឹងលុបឥឡូវនេះ។\n\nប្រសិនបើអ្នកមានសំណួរផ្សេងៗ សូមទាក់ទងទៅអ្នកគ្រប់គ្រងស្ថាប័នរបស់អ្នក។"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ការបោះពុម្ពត្រូវបានបិទដោយ <xliff:g id="OWNER_APP">%s</xliff:g> ។"</string>
@@ -245,6 +250,8 @@
<item quantity="other">នឹងថតរូបអេក្រង់សម្រាប់របាយការណ៍កំហុសក្នុងរយៈពេល <xliff:g id="NUMBER_1">%d</xliff:g> វិនាទីទៀត។</item>
<item quantity="one">នឹងថតរូបអេក្រង់សម្រាប់របាយការណ៍កំហុសក្នុងរយៈពេល <xliff:g id="NUMBER_0">%d</xliff:g> វិនាទីទៀត។</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"បានថតរូបថតអេក្រង់ដែលមានរបាយការណ៍អំពីបញ្ហា"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"មិនអាចថតរូបថតអេក្រង់ដែលមានរបាយការណ៍អំពីបញ្ហាបានទេ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"របៀបស្ងាត់"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"បិទសំឡេង"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"បើកសំឡេង"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ចូលដំណើរការពាក្យបញ្ជាក្រុមហ៊ុនផ្ដល់ទីតាំង"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ឲ្យកម្មវិធីចូលដំណើរការពាក្យបញ្ជាកម្មវិធីផ្ដល់ទីតាំងបន្ថែម។ វាអាចអនុញ្ញាតឲ្យកម្មវិធីទាក់ទងជាមួយប្រតិបត្តិការជីភីអេស ឬប្រភពទីតាំងផ្សេង។"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ចូលប្រើទីតាំងជាក់លាក់តែនៅផ្ទៃខាងមុខប៉ុណ្ណោះ"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"កម្មវិធីនេះអាចទទួលបានទីតាំងជាក់លាក់របស់អ្នក តែនៅពេលវាស្ថិតនៅផ្ទៃខាងមុខប៉ុណ្ណោះ។ សេវាកម្មទីតាំងត្រូវតែបើក និងមាននៅលើឧបករណ៍របស់អ្នក ដើម្បីអាចឱ្យកម្មវិធីប្រើវាបាន។ សកម្មភាពនេះអាចបង្កើនការប្រើប្រាស់ថ្ម។"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"កម្មវិធីនេះអាចទទួលបានទីតាំងជាក់លាក់របស់អ្នកពីសេវាកម្មទីតាំង នៅពេលស្ថិតនៅក្នុងការប្រើប្រាស់។ ត្រូវតែបើកសេវាកម្មទីតាំងសម្រាប់ឧបករណ៍របស់អ្នក ទើបកម្មវិធីនេះអាចទទួលបានទីតាំង។ ការធ្វើបែបនេះអាចបង្កើនការប្រើប្រាស់ថ្ម។"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ចូលប្រើទីតាំងប្រហាក់ប្រហែលតែនៅផ្ទៃខាងមុខប៉ុណ្ណោះ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"កម្មវិធីនេះអាចទទួលបានទីតាំងប្រហាក់ប្រហែលរបស់អ្នក តែនៅពេលវាស្ថិតនៅផ្ទៃខាងមុខប៉ុណ្ណោះ។ សេវាកម្មទីតាំងត្រូវតែបើក និងមាននៅលើឧបករណ៍របស់អ្នក ដើម្បីអាចឱ្យកម្មវិធីប្រើវាបាន។"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"កម្មវិធីនេះអាចទទួលបានទីតាំងប្រហាក់ប្រហែលរបស់អ្នកពីសេវាកម្មទីតាំង នៅពេលស្ថិតនៅក្នុងការប្រើប្រាស់។ ត្រូវតែបើកសេវាកម្មទីតាំងសម្រាប់ឧបករណ៍របស់អ្នក ទើបកម្មវិធីនេះអាចទទួលបានទីតាំង។"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ចូលប្រើទីតាំងនៅផ្ទៃខាងក្រោយ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"កម្មវិធីនេះអាចចូលប្រើទីតាំង ពេលកំពុងដំណើរការនៅផ្ទៃខាងក្រោយ បន្ថែមពីលើការចូលប្រើទីតាំងនៅផ្ទៃខាងមុខ។"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"កម្មវិធីនេះអាចចូលប្រើទីតាំងបានគ្រប់ពេល ទោះបីជានៅពេលមិនស្ថិតនៅក្នុងការប្រើប្រាស់ក៏ដោយ។"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ប្ដូរការកំណត់អូឌីយូរបស់អ្នក"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ឲ្យកម្មវិធីកែការកំណត់សំឡេងសកល ដូចជាកម្រិតសំឡេង និងអូប៉ាល័រដែលបានប្រើសម្រាប់លទ្ធផល។"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ថតសំឡេង"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"កម្មវិធីនេះអាចថតរូប និងថតវីដេអូ ដោយប្រើកាមេរ៉ាបានគ្រប់ពេល។"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"អនុញ្ញាតឱ្យកម្មវិធី ឬសេវាកម្មចូលប្រើកាមេរ៉ាប្រព័ន្ធ ដើម្បីថតរូប និងថតវីដេអូ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"កម្មវិធីប្រព័ន្ធដែលមានសិទ្ធិអនុញ្ញាតនេះអាចថតរូប និងថតវីដេអូ ដោយប្រើកាមេរ៉ាប្រព័ន្ធបានគ្រប់ពេល។ តម្រូវឱ្យមានការអនុញ្ញាត android.permission.CAMERA ដើម្បីឱ្យកម្មវិធីអាចធ្វើសកម្មភាពបានផងដែរ"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"អនុញ្ញាតឱ្យកម្មវិធី ឬសេវាកម្មទទួលការហៅត្រឡប់វិញអំពីកាមេរ៉ាដែលកំពុងបិទ ឬបើក។"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"កម្មវិធីពិសេសនេះអាចទទួលការហៅត្រឡប់វិញបាន នៅពេលកំពុងបិទ ឬបើកកាមេរ៉ា (ដោយកញ្ចប់កម្មវិធី)។"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ពិនិត្យការញ័រ"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ឲ្យកម្មវិធីគ្រប់គ្រងកម្មវិធីញ័រ។"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"អនុញ្ញាតឱ្យកម្មវិធីចូលប្រើស្ថានភាពកម្មវិធីញ័រ។"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"អនុញ្ញាតឲ្យកម្មវិធីនេះបញ្ជូនការហៅទូរសព្ទរបស់វាតាមរយៈប្រព័ន្ធ ដើម្បីធ្វើឲ្យការហៅទូរសព្ទប្រសើរជាងមុន។"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"មើល និងគ្រប់គ្រងការហៅទូរសព្ទតាមរយៈប្រព័ន្ធ។"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"អនុញ្ញាតឱ្យកម្មវិធីមើល និងគ្រប់គ្រងការហៅទូរសព្ទដែលកំពុងដំណើរការនៅលើឧបករណ៍។ សកម្មភាពនេះរួមមានព័ត៌មានដូចជា លេខទូរសព្ទសម្រាប់ការហៅទូរសព្ទ និងស្ថានភាពនៃការហៅទូរសព្ទជាដើម។"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"បន្តការហៅទូរសព្ទពីកម្មវិធីផ្សេង"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"អនុញ្ញាតឱ្យកម្មវិធីបន្តការហៅទូរសព្ទ ដែលបានចាប់ផ្តើមនៅក្នុងកម្មវិធីផ្សេង។"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"អានលេខទូរសព្ទ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"អនុញ្ញាតឲ្យកម្មវិធីនេះចូលប្រើប្រាស់លេខទូរសព្ទរបស់ឧបករណ៍នេះ។"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"បន្តបើកអេក្រង់រថយន្ត"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ការពារកុំព្យូទ័របន្ទះមិនឲ្យដេក"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ទប់ស្កាត់មិនឱ្យឧបករណ៍ Android TV របស់អ្នកដេក"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ការពារទូរស័ព្ទមិនឲ្យដេក"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"អនុញ្ញាតឱ្យកម្មវិធីបន្តបើកអេក្រង់រថយន្ត។"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ឲ្យកម្មវិធីការពារកុំព្យូទ័របន្ទះមិនឲ្យដេក។"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"អនុញ្ញាតឱ្យកម្មវិធីទប់ស្កាត់មិនឱ្យឧបករណ៍ Android TV របស់អ្នកដេក។"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ឲ្យកម្មវិធីការពារទូរស័ព្ទមិនឲ្យដេក។"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ព្យាយាមម្ដងទៀត។"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"មិនមានការចុះឈ្មោះស្នាមម្រាមដៃទេ។"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ឧបករណ៍នេះមិនមានឧបករណ៍ចាប់ស្នាមម្រាមដៃទេ។"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"បានបិទឧបករណ៍ចាប់សញ្ញាជាបណ្តោះអាសន្ន។"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ម្រាមដៃ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"មិនអាចផ្ទៀងផ្ទាត់មុខបានទេ។ សូមព្យាយាមម្ដងទៀត។"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"អ្នកមិនទាន់រៀបចំការដោះសោតាមទម្រង់មុខនៅឡើយទេ។"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"មិនអាចប្រើការដោះសោតាមទម្រង់មុខនៅលើឧបករណ៍នេះបានទេ។"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"បានបិទឧបករណ៍ចាប់សញ្ញាជាបណ្តោះអាសន្ន។"</string>
<string name="face_name_template" msgid="3877037340223318119">"ផ្ទៃមុខទី <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1255,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"បណ្ដាញទូរសព្ទចល័តមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"បណ្ដាញមិនមានការតភ្ជាប់អ៊ីនធឺណិតទេ"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"មិនអាចចូលប្រើម៉ាស៊ីនមេ DNS ឯកជនបានទេ"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"បានភ្ជាប់"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> មានការតភ្ជាប់មានកម្រិត"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"មិនអីទេ ចុចភ្ជាប់ចុះ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"បានប្តូរទៅ <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1320,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"បានភ្ជាប់ការកែកំហុសតាម USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"ចុចដើម្បីបិទការកែកំហុសតាម USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"ជ្រើសរើស ដើម្បីបិទការកែកំហុសតាម USB ។"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"បានភ្ជាប់ការជួសជុលដោយឥតខ្សែ"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ចុច ដើម្បីបិទការជួសជុលដោយឥតខ្សែ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ជ្រើសរើស ដើម្បីបិទការជួសជុលដោយឥតខ្សែ។"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"បានបើកមុខងារប្រមូលធ្វើតេស្ត"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ធ្វើការកំណត់ដូចដើមឡើងវិញ ដើម្បីបិទមុខងារប្រមូលធ្វើតេស្ត។"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"កុងសូលស៊េរីត្រូវបានបើក"</string>
@@ -1623,10 +1638,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"សេវាកម្មផ្ទៃខាងមុខដែលចាប់ផ្ដើមដោយផ្ទៃខាងក្រោយពី <xliff:g id="PACKAGENAME">%1$s</xliff:g> នឹងមិនមានការអនុញ្ញាតខណៈពេលកំពុងប្រើប្រាស់ទេ នៅក្នុងកំណែបង្កើត R នៅពេលអនាគត។ សូមមើល go/r-bg-fgs-restriction និងផ្ញើរបាយការណ៍អំពីបញ្ហា។"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"បង្កើនកម្រិតសំឡេងលើសពីកម្រិតបានផ្ដល់យោបល់?\n\nការស្ដាប់នៅកម្រិតសំឡេងខ្លាំងយូរអាចធ្វើឲ្យខូចត្រចៀក។"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ប្រើប្រាស់ផ្លូវកាត់ភាពងាយស្រួល?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"នៅពេលបើកផ្លូវកាត់ ការចុចប៊ូតុងកម្រិតសំឡេងទាំងពីររយៈពេល 3 វិនាទីនឹងចាប់ផ្តើមមុខងារភាពងាយប្រើ។"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"អនុញ្ញាតឱ្យ <xliff:g id="SERVICE">%1$s</xliff:g> មានសិទ្ធិគ្រប់គ្រងឧបករណ៍របស់អ្នកទាំងស្រុងឬ?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"បើអ្នកបើក <xliff:g id="SERVICE">%1$s</xliff:g> ឧបករណ៍របស់អ្នកនឹងមិនប្រើការចាក់សោអេក្រង់របស់អ្នក ដើម្បីបង្កើនប្រសិទ្ធភាពការអ៊ីនគ្រីបទិន្នន័យទេ។"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ការគ្រប់គ្រងទាំងស្រុងមានលក្ខណៈសមស្របសម្រាប់កម្មវិធី ដែលជួយអ្នកទាក់ទងនឹងការប្រើមុខងារភាពងាយស្រួល ប៉ុន្តែមិនសមស្របសម្រាប់កម្មវិធីភាគច្រើនទេ។"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"មើល និងគ្រប់គ្រងអេក្រង់"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ការគ្រប់គ្រងអេក្រង់អាចអានខ្លឹមសារទាំងអស់នៅលើអេក្រង់ និងបង្ហាញខ្លឹមសារលើកម្មវិធីផ្សេងទៀត។"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"មើល និងធ្វើសកម្មភាព"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"វាអាចតាមដានអន្តរកម្មរបស់អ្នកជាមួយនឹងកម្មវិធី ឬឧបករណ៍ចាប់សញ្ញាហាតវែរ និងធ្វើអន្តរកម្មជាមួយកម្មវិធីនានាជំនួសឱ្យអ្នក។"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"អនុញ្ញាត"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"បដិសេធ"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ចុចមុខងារណាមួយ ដើម្បចាប់ផ្ដើមប្រើ៖"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"ជ្រើសរើសកម្មវិធី ដើម្បីប្រើជាមួយប៊ូតុងភាពងាយស្រួល"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"ជ្រើសរើសកម្មវិធី ដើម្បីប្រើជាមួយផ្លូវកាត់គ្រាប់ចុចកម្រិតសំឡេង"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"បានបិទ <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"កែផ្លូវកាត់"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"បោះបង់"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"រួចរាល់"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"បិទផ្លូវកាត់"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ប្រើប្រាស់ផ្លូវកាត់"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"បញ្ច្រាសពណ៌"</string>
@@ -1847,6 +1874,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"មិនបែងចែកប្រភេទ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"អ្នកបានកំណត់សារៈសំខាន់នៃការជូនដំណឹងទាំងនេះ"</string>
<string name="importance_from_person" msgid="4235804979664465383">"វាមានសារៈសំខាន់ដោយសារតែមនុស្សដែលពាក់ព័ន្ធ"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ការជូនដំណឹងកម្មវិធីផ្ទាល់ខ្លួន"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"អនុញ្ញាតឱ្យ <xliff:g id="APP">%1$s</xliff:g> បង្កើតអ្នកប្រើប្រាស់ថ្មីដោយប្រើ <xliff:g id="ACCOUNT">%2$s</xliff:g> (អ្នកប្រើប្រាស់ដែលមានគណនីនេះមានរួចហើយ) ដែរឬទេ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"អនុញ្ញាតឱ្យ <xliff:g id="APP">%1$s</xliff:g> បង្កើតអ្នកប្រើប្រាស់ថ្មីដោយប្រើ <xliff:g id="ACCOUNT">%2$s</xliff:g> ដែរឬទេ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"បន្ថែមភាសា"</string>
@@ -2018,22 +2046,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ម៉ឺនុយភាពងាយស្រួល"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"របារពណ៌នាអំពី <xliff:g id="APP_NAME">%1$s</xliff:g>។"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ត្រូវបានដាក់ទៅក្នុងធុងដែលបានដាក់កំហិត"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ផ្ទាល់ខ្លួន"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ការងារ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ទិដ្ឋភាពផ្ទាល់ខ្លួន"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ទិដ្ឋភាពការងារ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"មិនអាចចែករំលែកជាមួយកម្មវិធីការងារបានទេ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"មិនអាចចែករំលែកជាមួយកម្មវិធីផ្ទាល់ខ្លួនបានទេ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"អ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកបានទប់ស្កាត់ការចែករំលែករវាងកម្រងព័ត៌មានការងារ និងផ្ទាល់ខ្លួន"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"មិនអាចចូលប្រើកម្មវិធីការងារបានទេ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"អ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកមិនអនុញ្ញាតឱ្យអ្នកមើលខ្លឹមសារផ្ទាល់ខ្លួននៅក្នុងកម្មវិធីការងារទេ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"មិនអាចចូលប្រើកម្មវិធីផ្ទាល់ខ្លួនបានទេ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"អ្នកគ្រប់គ្រងផ្នែកព័ត៌មានវិទ្យារបស់អ្នកមិនអនុញ្ញាតឱ្យអ្នកមើលខ្លឹមសារការងារនៅក្នុងកម្មវិធីផ្ទាល់ខ្លួនទេ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"បើកកម្រងព័ត៌មានការងារ ដើម្បីចែករំលែកខ្លឹមសារ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"បើកកម្រងព័ត៌មានការងារ ដើម្បីមើលខ្លឹមសារ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"មិនមានកម្មវិធីដែលអាចប្រើបានទេ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"បើក"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ថត ឬចាក់សំឡេងនៅក្នុងការហៅទូរសព្ទ"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"នៅពេលកំណត់ជាកម្មវិធីផ្ទាំងចុចហៅទូរសព្ទលំនាំដើម សូមអនុញ្ញាតឱ្យកម្មវិធីនេះថត ឬចាក់សំឡេងនៅក្នុងការហៅទូរសព្ទ។"</string>
</resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 4099d30..824689c 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ನಿಮ್ಮ ಸಂಸ್ಥೆಯು ಈ ಸಾಧನವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ ಮತ್ತು ಅದು ನೆಟ್ವರ್ಕ್ ಟ್ರಾಫಿಕ್ ಮೇಲೆ ಗಮನವಿರಿಸಬಹುದು. ವಿವರಗಳಿಗಾಗಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರಿಂದ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಲಾಗಿದೆ"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ನಿಮ್ಮ ಸ್ಥಳ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
+ <string name="country_detector" msgid="7023275114706088854">"ಕಂಟ್ರಿ ಡಿಟೆಕ್ಟರ್"</string>
+ <string name="location_service" msgid="2439187616018455546">"ಸ್ಥಳ ಸೇವೆ"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS ಸೇವೆ"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"ಸೆನ್ಸರ್ ಅಧಿಸೂಚನೆ ಸೇವೆ"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ಟ್ವಿಲೈಟ್ ಸೇವೆ"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ಇದೀಗ ಅಳಿಸಲಾಗುತ್ತದೆ.\n\nನಿಮ್ಮಲ್ಲಿ ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ, ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ಮೂಲಕ ಪ್ರಿಂಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
@@ -245,6 +250,8 @@
<item quantity="one">ಬಗ್ ವರದಿ ಮಾಡಲು <xliff:g id="NUMBER_1">%d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ.</item>
<item quantity="other">ಬಗ್ ವರದಿ ಮಾಡಲು <xliff:g id="NUMBER_1">%d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗುತ್ತಿದೆ.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ಬಗ್ ವರದಿಯ ಜೊತೆಗೆ ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ಬಗ್ ವರದಿಯ ಜೊತೆಗೆ ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಲು ವಿಫಲವಾಗಿದೆ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ಶಾಂತ ಮೋಡ್"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ಶಬ್ಧ ಆಫ್ ಆಗಿದೆ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ಶಬ್ಧ ಆನ್ ಆಗಿದೆ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ಹೆಚ್ಚುವರಿ ಸ್ಥಳ ಪೂರೈಕೆದಾರರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ಹೆಚ್ಚಿನ ಸ್ಥಳ ಪೂರೈಕೆದಾರ ಆದೇಶಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ. ಇದು GPS ಅಥವಾ ಇತರ ಸ್ಥಳ ಮೂಲಗಳ ಕಾರ್ಯಾಚರಣೆಯಲ್ಲಿ ಮಧ್ಯ ಪ್ರವೇಶಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸಬಹುದು."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಮಾತ್ರ ನಿಖರವಾದ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ಈ ಆ್ಯಪ್ ಮುಂಭಾಗದಲ್ಲಿರುವಾಗ ಮಾತ್ರ ನಿಮ್ಮ ನಿಖರ ಸ್ಥಳವನ್ನು ಪಡೆಯಬಲ್ಲದು. ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ಗೆ ಬಳಸಲು ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅವುಗಳು ಲಭ್ಯವಿರಬೇಕು. ಇದು ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ನಿಖರವಾದ ಸ್ಥಳವನ್ನು, ಸ್ಥಳ ಸೇವೆಗಳಿಂದ ಪಡೆಯಬಹುದು. ಆ್ಯಪ್ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಸಾಧನಕ್ಕಾಗಿ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಬೇಕು. ಇದು ಬ್ಯಾಟರಿ ಬಳಕೆಯನ್ನು ಹೆಚ್ಚಿಸಬಹುದು."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ಮುನ್ನೆಲೆಯಲ್ಲಿ ಮಾತ್ರ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ಈ ಆ್ಯಪ್ ಮುನ್ನೆಲೆಯಲ್ಲಿರುವಾಗ ಮಾತ್ರ ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು ಪಡೆಯಬಲ್ಲದು. ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಿರಬೇಕು ಮತ್ತು ಅವುಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ಗೆ ಸಾಧ್ಯವಾಗುವಂತೆ ನಿಮ್ಮ ಸಾಧನದಲ್ಲಿ ಅವುಗಳು ಲಭ್ಯವಿರಬೇಕು."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ನಿಮ್ಮ ಅಂದಾಜು ಸ್ಥಳವನ್ನು, ಸ್ಥಳ ಸೇವೆಗಳಿಂದ ಪಡೆಯಬಹುದು. ಆ್ಯಪ್ ನಿಮ್ಮ ಸ್ಥಳವನ್ನು ಪಡೆಯಲು ನಿಮ್ಮ ಸಾಧನಕ್ಕಾಗಿ ಸ್ಥಳ ಸೇವೆಗಳನ್ನು ಆನ್ ಮಾಡಬೇಕು."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಿ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ಈ ಆ್ಯಪ್ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ರನ್ ಆಗುವಾಗ ಸ್ಥಳದ ಜೊತೆಗೆ ಮುನ್ನೆಲೆಯಲ್ಲಿನ ಸ್ಥಳವನ್ನು ಪ್ರವೇಶಿಸಬಹುದು."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ಈ ಆ್ಯಪ್ ಬಳಕೆಯಲ್ಲಿಲ್ಲದಿರುವಾಗಲೂ ಸಹ ಸ್ಥಳವನ್ನು ಯಾವುದೇ ಸಮಯದಲ್ಲಾದರೂ ಪ್ರವೇಶಿಸಬಹುದು."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ನಿಮ್ಮ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಬದಲಾಯಿಸಿ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ವಾಲ್ಯೂಮ್ ರೀತಿಯ ಮತ್ತು ಔಟ್ಪುಟ್ಗಾಗಿ ಯಾವ ಸ್ಪೀಕರ್ ಬಳಸಬೇಕು ಎಂಬ ರೀತಿಯ ಜಾಗತಿಕ ಆಡಿಯೊ ಸೆಟ್ಟಿಂಗ್ಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡುತ್ತದೆ."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ಆಡಿಯೊ ರೆಕಾರ್ಡ್ ಮಾಡಿ"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಯಾವ ಸಮಯದಲ್ಲಾದರೂ ಕ್ಯಾಮರಾ ಬಳಸಿಕೊಂಡು ಚಿತ್ರಗಳು ಮತ್ತು ವಿಡಿಯೋಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ಫೋಟೋಗಳು ಮತ್ತು ವೀಡಿಯೊಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಲು ಸಿಸ್ಟಂ ಕ್ಯಾಮರಾಗಳಿಗೆ ಅಪ್ಲಿಕೇಶನ್ ಅಥವಾ ಸೇವಾ ಪ್ರವೇಶವನ್ನು ಅನುಮತಿಸಿ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ಈ ವಿಶೇಷ | ಸಿಸ್ಟಂ ಆ್ಯಪ್ ಯಾವುದೇ ಸಮಯದಲ್ಲಾದರೂ ಸಿಸ್ಟಂ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸಿಕೊಂಡು ಫೋಟೋಗಳನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಹುದು ಮತ್ತು ವೀಡಿಯೋಗಳನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಬಹುದು. ಆ್ಯಪ್ಗೆ android.permission.CAMERA ಅನುಮತಿಯ ಅಗತ್ಯವಿರುತ್ತದೆ"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"ವೈಬ್ರೇಷನ್ ನಿಯಂತ್ರಿಸಿ"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ವೈಬ್ರೇಟರ್ ನಿಯಂತ್ರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ವೈಬ್ರೇಟರ್ ಸ್ಥಿತಿಯನ್ನು ಪ್ರವೇಶಿಸಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"ಕರೆಯ ಅನುಭವವನ್ನು ಸುಧಾರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ನ ಕರೆಗಳನ್ನು ಸಿಸ್ಟಂ ಮೂಲಕ ರವಾನಿಸಲು ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ಸಿಸ್ಟಂ ಮೂಲಕ ಕರೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ಸಾಧನದಲ್ಲಿನ ಚಾಲ್ತಿಯಲ್ಲಿರುವ ಕರೆಗಳನ್ನು ವೀಕ್ಷಿಸಲು ಮತ್ತು ನಿಯಂತ್ರಿಸಲು ಆ್ಯಪ್ ಅನುಮತಿಸುತ್ತದೆ. ಕರೆಗಳಿಗೆ ಸಂಬಂಧಿಸಿದ ಕರೆ ಸಂಖ್ಯೆಗಳು ಮತ್ತು ಕರೆ ಮಾಡಿದ ರಾಜ್ಯದಂತಹ ಮಾಹಿತಿಯನ್ನು ಇದು ಒಳಗೊಂಡಿರುತ್ತದೆ."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್ ಮೂಲಕ ಕರೆಯನ್ನು ಮುಂದುವರಿಸಿ"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ಮತ್ತೊಂದು ಅಪ್ಲಿಕೇಶನ್ನಲ್ಲಿ ಪ್ರಾರಂಭವಾದ ಕರೆಯನ್ನು ಮುಂದುವರಿಸಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ಮಾಡಿಕೊಡಿ."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ಫೋನ್ ಸಂಖ್ಯೆಗಳನ್ನು ಓದಿ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ಸಾಧನದ ಫೋನ್ ಸಂಖ್ಯೆಗಳಿಗೆ ಪ್ರವೇಶ ಪಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿ ನೀಡುತ್ತದೆ."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ಕಾರ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ನಲ್ಲೇ ಇರಿಸಿ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ಟ್ಯಾಬ್ಲೆಟ್ ನಿದ್ರಾವಸ್ಥೆಯನ್ನು ತಡೆಯಿರಿ"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ನಿಮ್ಮ Android TV ಸಾಧನವು ನಿದ್ರಾವಸ್ಥೆಗೆ ಹೋಗುವುದನ್ನು ತಡೆಯಿರಿ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ಫೋನ್ ಆಫ್ ಆಗುವುದರಿಂದ ತಡೆಯಿರಿ"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ಕಾರ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಆನ್ನಲ್ಲೇ ಇರಿಸಲು ಆ್ಯಪ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ಟ್ಯಾಬ್ಲೆಟ್ ನಿದ್ರೆಗೆ ಹೋಗುವುದನ್ನು ತಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ನಿಮ್ಮ Android TV ಸಾಧನವು ನಿದ್ರಾವಸ್ಥೆಗೆ ಹೋಗುವುದನ್ನು ತಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ಫೋನ್ ನಿದ್ರೆಗೆ ಹೋಗುವುದನ್ನು ತಡೆಯಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅನುಮತಿಸುತ್ತದೆ."</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ಯಾವುದೇ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಅನ್ನು ನೋಂದಣಿ ಮಾಡಿಲ್ಲ."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ಈ ಸಾಧನವು ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ ಅನ್ನು ಹೊಂದಿಲ್ಲ."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ಸೆನ್ಸಾರ್ ಅನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ಫಿಂಗರ್ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ಮುಖವನ್ನು ದೃಢೀಕರಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"ನೀವು ಫೇಸ್ ಅನ್ಲಾಕ್ ಅನ್ನು ಸೆಟಪ್ ಮಾಡಿಲ್ಲ."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"ಈ ಸಾಧನದಲ್ಲಿ ಫೇಸ್ ಅನ್ಲಾಕ್ ವೈಶಿಷ್ಟ್ಯವು ಬೆಂಬಲಿತವಾಗಿಲ್ಲ."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ಸೆನ್ಸಾರ್ ಅನ್ನು ತಾತ್ಕಾಲಿಕವಾಗಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
<string name="face_name_template" msgid="3877037340223318119">"ಮುಖದ <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -876,7 +891,7 @@
<string name="lockscreen_access_pattern_detected" msgid="3931150554035194012">"ಪ್ಯಾಟರ್ನ್ ಪೂರ್ಣಗೊಂಡಿದೆ"</string>
<string name="lockscreen_access_pattern_area" msgid="1288780416685002841">"ಪ್ಯಾಟರ್ನ್ ಪ್ರದೇಶ."</string>
<string name="keyguard_accessibility_widget_changed" msgid="7298011259508200234">"%1$s.%3$d ರಲ್ಲಿ %2$d ವಿಜೆಟ್."</string>
- <string name="keyguard_accessibility_add_widget" msgid="8245795023551343672">"ವಿಜೆಟ್ ಸೇರಿಸು."</string>
+ <string name="keyguard_accessibility_add_widget" msgid="8245795023551343672">"ವಿಜೆಟ್ ಸೇರಿಸಿ."</string>
<string name="keyguard_accessibility_widget_empty_slot" msgid="544239307077644480">"ಖಾಲಿ"</string>
<string name="keyguard_accessibility_unlock_area_expanded" msgid="7768634718706488951">"ಅನ್ಲಾಕ್ ಪ್ರದೇಶವನ್ನು ವಿಸ್ತರಿಸಲಾಗಿದೆ."</string>
<string name="keyguard_accessibility_unlock_area_collapsed" msgid="4729922043778400434">"ಅನ್ಲಾಕ್ ಪ್ರದೇಶವನ್ನು ಸಂಕುಚಿಸಲಾಗಿದೆ."</string>
@@ -1253,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ಮೊಬೈಲ್ ನೆಟ್ವರ್ಕ್ ಯಾವುದೇ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ನೆಟ್ವರ್ಕ್ ಇಂಟರ್ನೆಟ್ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿಲ್ಲ"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ಖಾಸಗಿ DNS ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ಸೀಮಿತ ಸಂಪರ್ಕ ಕಲ್ಪಿಸುವಿಕೆಯನ್ನು ಹೊಂದಿದೆ"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ಹೇಗಾದರೂ ಸಂಪರ್ಕಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ಗೆ ಬದಲಾಯಿಸಲಾಗಿದೆ"</string>
@@ -1318,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ಡೀಬಗಿಂಗ್ ಸಂಪರ್ಕಗೊಂಡಿದೆ"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಕನೆಕ್ಟ್ ಮಾಡಲಾಗಿದೆ"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಆಫ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಆಯ್ಕೆ ಮಾಡಿ."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ಸ್ವಯಂ ಪರೀಕ್ಷೆಯಾಗುವಿಕೆ ಮೋಡ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ಸ್ವಯಂ ಪರೀಕ್ಷೆಯಾಗುವಿಕೆ ಮೋಡ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಫ್ಯಾಕ್ಟರಿ ರಿಸೆಟ್ ಮಾಡಬೇಕು."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ಸರಣಿ ಕನ್ಸೋಲ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -1621,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ನಿಂದ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಪ್ರಾರಂಭಿಸಲಾದ ಮುನ್ನೆಲೆ ಸೇವೆ ಭವಿಷ್ಯದ R ಬಿಲ್ಡ್ಗಳಿಂದ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ಅನುಮತಿಯನ್ನು ಪಡೆಯುವುದಿಲ್ಲ. go/r-bg-fgs-restriction ಅನ್ನು ನೋಡಿ ಮತ್ತು ದೋಷವರದಿಯನ್ನು ಫೈಲ್ ಮಾಡಿ."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ವಾಲ್ಯೂಮ್ ಅನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾದ ಮಟ್ಟಕ್ಕಿಂತಲೂ ಹೆಚ್ಚು ಮಾಡುವುದೇ?\n\nದೀರ್ಘ ಅವಧಿಯವರೆಗೆ ಹೆಚ್ಚಿನ ವಾಲ್ಯೂಮ್ನಲ್ಲಿ ಆಲಿಸುವುದರಿಂದ ನಿಮ್ಮ ಆಲಿಸುವಿಕೆ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಹಾನಿಯುಂಟು ಮಾಡಬಹುದು."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ಪ್ರವೇಶಿಸುವಿಕೆ ಶಾರ್ಟ್ಕಟ್ ಬಳಸುವುದೇ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ಶಾರ್ಟ್ಕಟ್ ಆನ್ ಆಗಿರುವಾಗ, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಬಟನ್ಗಳನ್ನು 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಒತ್ತಿದರೆ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯವೊಂದು ಪ್ರಾರಂಭವಾಗುತ್ತದೆ."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ಪ್ರವೇಶಿಸುವಿಕೆಯ ಅವಶ್ಯಕತೆಗಳಿಗೆ ಸಹಾಯ ಮಾಡುವ ಆ್ಯಪ್ಗಳಿಗೆ ಪೂರ್ಣ ನಿಯಂತ್ರಣ ನೀಡುವುದು ಸೂಕ್ತವಾಗಿರುತ್ತದೆ, ಆದರೆ ಬಹುತೇಕ ಆ್ಯಪ್ಗಳಿಗೆ ಇದು ಸೂಕ್ತವಲ್ಲ."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ಪರದೆಯನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿಯಂತ್ರಿಸಿ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ಇದು ಪರದೆಯ ಮೇಲಿನ ಎಲ್ಲಾ ವಿಷಯವನ್ನು ಓದಬಹುದು ಮತ್ತು ಇತರ ಆ್ಯಪ್ಗಳ ಮೇಲೆ ವಿಷಯವನ್ನು ಪ್ರದರ್ಶಿಸಬಹುದು."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ಕ್ರಿಯೆಗಳನ್ನು ವೀಕ್ಷಿಸಿ ಮತ್ತು ನಿರ್ವಹಿಸಿ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ಇದು ಆ್ಯಪ್ ಅಥವಾ ಹಾರ್ಡ್ವೇರ್ ಸೆನ್ಸರ್ನ ಜೊತೆಗಿನ ನಿಮ್ಮ ಸಂವಹನಗಳನ್ನು ಟ್ರ್ಯಾಕ್ ಮಾಡಬಹುದು, ಮತ್ತು ನಿಮ್ಮ ಪರವಾಗಿ ಆ್ಯಪ್ಗಳ ಜೊತೆ ಸಂವಹನ ನಡೆಸಬಹುದು."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ಅನುಮತಿಸಿ"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ನಿರಾಕರಿಸಿ"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ಶಾರ್ಟ್ಕಟ್ಗಳನ್ನು ಎಡಿಟ್ ಮಾಡಿ"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ರದ್ದುಗೊಳಿಸಿ"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ಶಾರ್ಟ್ಕಟ್ ಆಫ್ ಮಾಡಿ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ಶಾರ್ಟ್ಕಟ್ ಬಳಸಿ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ಬಣ್ಣ ವಿಲೋಮ"</string>
@@ -1845,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ವರ್ಗೀಕರಿಸದಿರುವುದು"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ನೀವು ಈ ಅಧಿಸೂಚನೆಗಳ ಪ್ರಾಮುಖ್ಯತೆಯನ್ನು ಹೊಂದಿಸಿರುವಿರಿ."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ಜನರು ತೊಡಗಿಕೊಂಡಿರುವ ಕಾರಣ ಇದು ಅತ್ಯಂತ ಪ್ರಮುಖವಾಗಿದೆ."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ಕಸ್ಟಮ್ ಆ್ಯಪ್ ಅಧಿಸೂಚನೆ"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> (ಈ ಖಾತೆಯ ಬಳಕೆದಾರರು ಈಗಾಗಲೇ ಅಸ್ತಿತ್ವದಲ್ಲಿದ್ದಾರೆ) ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು <xliff:g id="APP">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸಬೇಕೆ ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> ಮೂಲಕ ಹೊಸ ಬಳಕೆದಾರರನ್ನು ರಚಿಸಲು <xliff:g id="APP">%1$s</xliff:g> ಗೆ ಅನುಮತಿಸುವುದೇ ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ಭಾಷೆ ಸೇರಿಸಿ"</string>
@@ -2016,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ಪ್ರವೇಶಿಸುವಿಕೆ ಮೆನು"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್ನ ಶೀರ್ಷಿಕೆಯ ಪಟ್ಟಿ."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ಬಂಧಿತ ಬಕೆಟ್ಗೆ ಹಾಕಲಾಗಿದೆ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ವೈಯಕ್ತಿಕ"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ಕೆಲಸ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ವೈಯಕ್ತಿಕ ವೀಕ್ಷಣೆ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ಕೆಲಸದ ವೀಕ್ಷಣೆ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ಕೆಲಸದ ಆ್ಯಪ್ಗಳೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳೊಂದಿಗೆ ಹಂಚಿಕೊಳ್ಳಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು, ವೈಯಕ್ತಿಕ ಮತ್ತು ಉದ್ಯೋಗದ ಪ್ರೊಫೈಲ್ಗಳ ನಡುವೆ ಹಂಚಿಕೊಳ್ಳುವುದನ್ನು ನಿರ್ಬಂಧಿಸಿದ್ದಾರೆ"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು, ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ಆ್ಯಪ್ಗಳಲ್ಲಿರುವ ವೈಯಕ್ತಿಕ ವಿಷಯವನ್ನು ನೋಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ನಿಮ್ಮ IT ನಿರ್ವಾಹಕರು, ವೈಯಕ್ತಿಕ ಆ್ಯಪ್ಗಳಲ್ಲಿರುವ ಕೆಲಸಕ್ಕೆ ಸಂಬಂಧಿಸಿದ ವಿಷಯವನ್ನು ನೋಡಲು ನಿಮಗೆ ಅನುಮತಿಸುವುದಿಲ್ಲ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ವಿಷಯವನ್ನು ಹಂಚಿಕೊಳ್ಳಲು ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ವಿಷಯವನ್ನು ವೀಕ್ಷಿಸಲು ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್ ಅನ್ನು ಆನ್ ಮಾಡಿ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ಯಾವುದೇ ಆ್ಯಪ್ಗಳು ಲಭ್ಯವಿಲ್ಲ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ಆನ್ ಮಾಡಿ"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ಫೋನ್ ಕರೆಗಳಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಿ ಅಥವಾ ಪ್ಲೇ ಮಾಡಿ"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ಡೀಫಾಲ್ಟ್ ಡಯಲರ್ ಅಪ್ಲಿಕೇಶನ್ ರೀತಿ ಬಳಸಿದಾಗ ಫೋನ್ ಕರೆಗಳಲ್ಲಿ ಆಡಿಯೊವನ್ನು ರೆಕಾರ್ಡ್ ಮಾಡಲು ಅಥವಾ ಪ್ಲೇ ಮಾಡಲು ಈ ಆ್ಯಪ್ ಅನ್ನು ಅನುಮತಿಸಿ."</string>
</resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index bae739c..6cdadce 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"조직에서 이 기기를 관리하며 네트워크 트래픽을 모니터링할 수도 있습니다. 자세한 내용을 보려면 탭하세요."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"관리자가 위치 설정을 변경함"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"위치 설정을 보려면 탭하세요."</string>
+ <string name="country_detector" msgid="7023275114706088854">"국가 감지기"</string>
+ <string name="location_service" msgid="2439187616018455546">"위치 서비스"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS 서비스"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"센서 알림 서비스"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"새벽 서비스"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"기기가 삭제됩니다."</string>
<string name="factory_reset_message" msgid="2657049595153992213">"관리자 앱을 사용할 수 없습니다. 곧 기기가 삭제됩니다.\n\n궁금한 점이 있으면 조직의 관리자에게 문의하세요."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g>에 의해 사용 중지되었습니다."</string>
@@ -245,6 +250,8 @@
<item quantity="other">버그 신고 스크린샷을 <xliff:g id="NUMBER_1">%d</xliff:g>초 후에 찍습니다.</item>
<item quantity="one">버그 신고 스크린샷을 <xliff:g id="NUMBER_0">%d</xliff:g>초 후에 찍습니다.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"버그 신고용 스크린샷 촬영 완료"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"버그 신고용 스크린샷 촬영 실패"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"무음 모드"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"소리 꺼짐"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"소리 켜짐"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"추가 위치 제공업체 명령에 접근"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"앱이 추가 위치 정보 제공 기능의 명령에 접근하도록 허용합니다. 이 경우 앱이 GPS 또는 기타 위치 소스의 작동을 방해할 수 있습니다."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"포그라운드에서만 정확한 위치에 액세스"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"이 앱은 포그라운드에 있을 때만 나의 정확한 위치를 확인할 수 있습니다. 앱에서 위치 서비스를 사용하려면 기기에서 위치 서비스가 지원되며 사용 설정되어 있어야 합니다. 배터리 사용량이 늘어날 수 있습니다."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"이 앱은 사용 중일 때 위치 서비스로부터 정확한 위치 정보를 받을 수 있습니다. 앱에서 위치 정보를 받으려면 기기의 위치 서비스가 사용 설정되어 있어야 합니다. 이로 인해 배터리 사용량이 증가할 수 있습니다."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"포그라운드에서만 대략적인 위치에 액세스"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"이 앱은 포그라운드에 있을 때만 나의 대략적인 위치를 확인할 수 있습니다. 앱에서 위치 서비스를 사용하려면 기기에서 위치 서비스가 지원되며 사용 설정되어 있어야 합니다."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"이 앱은 사용 중일 때 위치 서비스로부터 대략적인 위치 정보를 받을 수 있습니다. 앱에서 위치 정보를 받으려면 기기의 위치 서비스가 사용 설정되어 있어야 합니다."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"백그라운드에서 위치 정보 액세스"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"이 앱이 포그라운드뿐만 아니라 백그라운드에서 실행되는 동안에도 위치에 액세스할 수 있습니다."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"이 앱은 사용 중이 아닐 때도 언제든지 위치 정보에 액세스할 수 있습니다."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"오디오 설정 변경"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"앱이 음량이나 출력을 위해 사용하는 스피커 등 전체 오디오 설정을 변경할 수 있도록 허용합니다."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"오디오 녹음"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"이 앱은 언제든지 카메라를 사용하여 사진을 촬영하고 동영상을 녹화할 수 있습니다."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"사진 및 동영상 촬영을 위해 애플리케이션 또는 서비스에서 시스템 카메라에 액세스하도록 허용"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"이 권한을 가진 시스템 앱은 언제든지 시스템 카메라를 사용하여 사진을 촬영하고 동영상을 녹화할 수 있습니다. 또한 앱에 android.permission.CAMERA 권한이 필요합니다."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"애플리케이션 또는 서비스에서 카메라 기기 열림 또는 닫힘에 대한 콜백을 수신하도록 허용"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"이 서명 앱은 사용되는 애플리케이션 패키지와 관련 없이 카메라 기기가 열릴 때나 닫힐 때 콜백을 수신할 수 있습니다."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"진동 제어"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"앱이 진동을 제어할 수 있도록 허용합니다."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"앱이 진동 상태에 액세스하도록 허용합니다."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"통화 환경을 개선하기 위해 앱이 시스템을 통해 통화를 연결하도록 허용합니다."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"시스템을 통해 통화 확인 및 제어"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"앱이 기기에서 진행 중인 통화를 확인 및 제어하도록 허용합니다. 여기에는 통화에 사용된 전화번호 및 통화 상태 등의 정보가 포함됩니다."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"다른 앱에서 전화 받기"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"다른 앱에서 수신한 전화를 계속하려면 앱을 허용합니다."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"전화번호 읽기"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"앱에서 기기의 전화번호에 액세스하도록 허용합니다."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"차량 화면 켜진 상태로 유지"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"태블릿이 절전 모드로 전환되지 않도록 설정"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV 기기 절전 모드 해제"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"휴대전화가 절전 모드로 전환되지 않도록 설정"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"앱에서 차량 화면을 켜진 상태로 유지하도록 허용합니다."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"앱이 태블릿의 절전 모드 전환을 막도록 허용합니다."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"앱이 Android TV 기기가 절전 모드로 전환되지 않게 막도록 허용합니다."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"앱이 휴대전화의 절전 모드 전환을 막도록 허용합니다."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"다시 시도해 보세요."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"등록된 지문이 없습니다."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"기기에 지문 센서가 없습니다."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"센서가 일시적으로 사용 중지되었습니다."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"손가락 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"얼굴을 확인할 수 없습니다. 다시 시도하세요."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"얼굴인식 잠금해제를 설정하지 않았습니다."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"이 기기에서는 얼굴인식 잠금해제가 지원되지 않습니다."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"센서가 일시적으로 사용 중지되었습니다."</string>
<string name="face_name_template" msgid="3877037340223318119">"얼굴 <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"모바일 네트워크에 인터넷이 연결되어 있지 않습니다."</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"네트워크에 인터넷이 연결되어 있지 않습니다."</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"비공개 DNS 서버에 액세스할 수 없습니다."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"연결되었습니다."</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>에서 연결을 제한했습니다."</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"계속 연결하려면 탭하세요."</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>(으)로 전환"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB 디버깅 연결됨"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB 디버깅을 사용 중지하려면 탭하세요."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB 디버깅을 사용하지 않으려면 선택합니다."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"무선 디버깅 연결됨"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"무선 디버깅을 사용 중지하려면 탭하세요."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"무선 디버깅을 사용 중지하려면 선택하세요."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"테스트 하네스 모드 사용 설정됨"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"테스트 하네스 모드를 사용 중지하려면 초기화하세요."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"시리얼 콘솔 사용 설정됨"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"향후 R 빌드에서는 백그라운드에서 시작된 <xliff:g id="PACKAGENAME">%1$s</xliff:g>의 포그라운드 서비스에 더 이상 사용 중인 상태에서 필요한 권한이 부여되지 않습니다. go/r-bg-fgs-restriction 페이지에서 버그 신고를 제출하세요."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"권장 수준 이상으로 볼륨을 높이시겠습니까?\n\n높은 볼륨으로 장시간 청취하면 청력에 손상이 올 수 있습니다."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"접근성 단축키를 사용하시겠습니까?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"단축키가 사용 설정된 경우 볼륨 버튼 두 개를 동시에 3초간 누르면 접근성 기능이 시작됩니다."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>에서 기기를 완전히 제어하도록 허용하시겠습니까?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g>을(를) 사용 설정하면 기기에서 데이터 암호화를 개선하기 위해 화면 잠금을 사용하지 않습니다."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"접근성 관련 지원을 제공하는 앱에는 완벽한 제어권을 부여하는 것이 좋으나, 대부분의 앱에는 적합하지 않습니다."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"화면 확인 및 제어"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"화면에 표시된 모든 콘텐츠를 읽고 다른 앱 위에 콘텐츠를 표시할 수 있습니다."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"작업 확인 및 실행"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"앱 또는 하드웨어 센서와의 상호작용을 추적할 수 있으며 나를 대신해 앱과 상호작용할 수 있습니다."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"허용"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"거부"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"기능을 사용하려면 탭하세요"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"접근성 버튼으로 사용할 앱을 선택하세요"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"볼륨 키 단축키로 사용할 앱을 선택하세요"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>이(가) 사용 중지됨"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"단축키 수정"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"취소"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"완료"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"단축키 사용 중지"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"단축키 사용"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"색상 반전"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"지정된 카테고리 없음"</string>
<string name="importance_from_user" msgid="2782756722448800447">"이러한 알림의 중요도를 설정했습니다."</string>
<string name="importance_from_person" msgid="4235804979664465383">"관련된 사용자가 있으므로 중요합니다."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"맞춤 앱 알림"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>에서 <xliff:g id="ACCOUNT">%2$s</xliff:g> 계정으로 신규 사용자를 만들도록 허용하시겠습니까? 이 계정으로 등록된 사용자가 이미 존재합니다."</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>에서 <xliff:g id="ACCOUNT">%2$s</xliff:g> 계정으로 신규 사용자를 만들도록 허용하시겠습니까?"</string>
<string name="language_selection_title" msgid="52674936078683285">"언어 추가"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"접근성 메뉴"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 자막 표시줄입니다."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 항목이 RESTRICTED 버킷으로 이동함"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"개인"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"직장"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"개인 뷰"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"직장 뷰"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"직장 앱과 공유할 수 없음"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"개인 앱과 공유할 수 없음"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT 관리자가 개인 프로필과 직장 프로필 간의 공유를 차단했습니다."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"직장 앱에 액세스할 수 없습니다"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT 관리자가 직장 앱에서 개인 콘텐츠를 보도록 허용하지 않습니다."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"개인 앱에 액세스할 수 없습니다"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT 관리자가 개인 앱에서 직장 콘텐츠를 보도록 허용하지 않습니다."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"콘텐츠를 공유하려면 직장 프로필을 사용 설정하세요."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"콘텐츠를 보려면 직장 프로필을 사용 설정하세요."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"사용 가능한 앱 없음"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"사용 설정"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"전화 통화 중에 오디오 녹음 또는 재생"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"이 앱이 기본 다이얼러 애플리케이션으로 지정되었을 때 전화 통화 중에 오디오를 녹음하거나 재생하도록 허용합니다."</string>
</resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index e9177ab..5b5db9cd 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"Админ түзмөктөн жеке колдонуу үчүн баш тартты"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"Түзмөктү ишкана башкарат"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ишканаңыз бул түзмөктү башкарат жана тармак трафигин көзөмөлдөшү мүмкүн. Чоо-жайын билгиңиз келсе, таптап коюңуз."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"Жайгашкан жерди аныктоо жөндөөлөрүн администраторуңуз өзгөртүп койду"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"Жайгашкан жерди аныктоо жөндөөлөрүн көрүү үчүн таптап коюңуз."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Өлкөнү аныктагыч"</string>
+ <string name="location_service" msgid="2439187616018455546">"Жайгашкан жерди аныктоо кызматы"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS кызматы"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Сенсордун билдирмелеринин кызматы"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight кызматы"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Түзмөгүңүз тазаланат"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Түзмөктү башкаруучу колдонмо жараксыз. Түзмөгүңүз азыр тазаланат.\n\nСуроолоруңуз болсо, ишканаңыздын администраторуна кайрылыңыз."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Басып чыгаруу <xliff:g id="OWNER_APP">%s</xliff:g> тарабынан өчүрүлдү."</string>
@@ -247,6 +250,8 @@
<item quantity="other">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_1">%d</xliff:g> секундда скриншот алынат.</item>
<item quantity="one">Мүчүлүштүк тууралуу кабарлоо үчүн <xliff:g id="NUMBER_0">%d</xliff:g> секундда скриншот алынат.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Мүчүлүштүк тууралуу кабар берүү үчүн скриншот тартылды"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Мүчүлүштүк тууралуу кабар берүү үчүн скриншот тартылган жок"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Үнсүз режим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Добушу ӨЧҮК"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Добушу КҮЙҮК"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"жайгашкан жерди аныктагычтын кошумча буйруктарын пайдалануу"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Колдонмого жайгашкан жерди табуучу кошумча жабдуучулардын буйруктарын колдонуу мүмкүнчүлүгүн берет. Ушуну менен колдонмо GPS\'тин ишине жана башка жайгашкан жерлерди аныктоо кызматтарына кийлигише алат."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"так аныкталган жайгашкан жерге активдүү режимде гана кирүүгө уруксат берүү"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетип, колдонмого кайда жүргөнүңүздү аныктоого уруксат беришиңиз керек. Батареяңыз тез отуруп калышы мүмкүн."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана так аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетишиңиз керек. Батарея тезирээк отуруп калышы мүмкүн."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"кайда жүргөнүмдү активдүү режимде божомолдоого уруксат берүү"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетип, колдонмого кайда жүргөнүңүздү аныктоого уруксат беришиңиз керек."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана болжолдуу аныктай алат. Ал үчүн түзмөгүңүздө жайгашкан жерди аныктоо кызматын иштетишиңиз керек."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"жайгашкан жерди фондо аныктоо"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана эмес, фондук режимде да аныктай алат."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Колдонмо кайда жүргөнүңүздү активдүү режимде гана эмес, фондук режимде да аныктай алат."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"аудио жөндөөлөрүңүздү өзгөртүңүз"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Колдонмого үн деңгээли жана кайсы динамик аркылуу үн чыгарылышы керек сыяктуу түзмөктүн аудио тууралоолорун өзгөртүүгө уруксат берет."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"аудио жаздыруу"</string>
@@ -431,27 +436,34 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Бул колдонмо каалаган убакта камера менен сүрөт же видеолорду тарта алат."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Сүрөткө тартып, видеолорду жаздыруу үчүн бул колдонмого же кызматка тутумдун камерасын колдонууга уруксат берүү"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Бул артыкчылыктуу | тутум колдонмосу тутумдун камерасын каалаган убакта колдонуп, сүрөткө тартып, видео жаздыра алат. Ошондой эле колдонмого android.permission.CAMERA уруксатын берүү керек."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Колдонмого же кызматка камера ачылып же жабылып жатканда чалууларды кабыл алууга уруксат берүү."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Бул колдонмо камера ачылып же жабылып жатканда (колдонмонун таңгагы) чалууларды кабыл алат."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"титирөөнү башкаруу"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Колдонмого дирилдегичти көзөмөлдөө мүмкүнчүлүгүн берет."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Колдонмого дирилдөө абалына кирүүгө уруксат берет."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"телефон номерлерине түз чалуу"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Колдонмого сиздин катышууңузсуз телефон номурларга чалуу уруксатын берет. Бул сиз күтпөгөн чыгымдарга же чалууларга алып келиши мүмкүн. Бул куткаруучулардын номурларына чалууга уруксат бербей тургандыгын эске алыңыз. Зыяндуу колдонмолор, сиздин ырастооңузсуз чалууларды аткарып, көп чыгымдарга себепкер болушу мүмкүн."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS чалуу кызматына мүмкүнчүлүк алуу"</string>
- <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Колдонмого сизди катыштырбай туруп, IMS кызматынын жардамы менен чалууларды жасоо мүмкүнчүлүгүн берет."</string>
+ <string name="permdesc_accessImsCallService" msgid="6328551241649687162">"Колдонмого сизди катыштырбай туруп, IMS кызматынын жардамы менен, чалууларды жасоо мүмкүнчүлүгүн берет."</string>
<string name="permlab_readPhoneState" msgid="8138526903259297969">"телефондун абалын жана аныктыгын окуу"</string>
<string name="permdesc_readPhoneState" msgid="7229063553502788058">"Колдонмого түзмөктүн чалуу мүмкүнчүлүктөрүнө жетки алуу уруксатын берет. Бул уруксат колдонмого, телефондун номурун, түзмөктүн ID-син, чалуунун абалын жана байланышта чыккан номурду аныктоого жол берет."</string>
<string name="permlab_manageOwnCalls" msgid="9033349060307561370">"чалууларды тутум аркылуу өткөрүү"</string>
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Чалуунун сапатын жакшыртуу максатында колдонмого чалууларын тутум аркылуу өткөрүүгө уруксат берет."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"тутум аркылуу чалууларды көрүп, көзөмөлдөө."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Колдонмого түзмөктөгү аткарылып жаткан чалууларды көрүп, көзөмөлдөөгө уруксат берет. Буга чалуулардын саны жана абалы сыяктуу маалымат кирет."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"чалууну башка колдонмодон улантуу"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Башка колдонмодон аткарылган чалууну бул колдонмодо улантууга уруксат берүү."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"телефон номерлерин окуу"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Колдонмого түзмөктүн телефон номерлерин окуу мүмкүнчүлүгү берилет."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"унаанын экранын күйгүзүлгөн бойдон калтыруу"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"планшетти уктатпай сактоо"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV түзмөгүңүзгө уйку режимин күйгүзүүгө жол бербеңиз"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"телефонду уктатпай сактоо"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Колдонмого унаанын экранын күйгүзүлгөн бойдон калтырууга уруксат берет."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Колдонмо планшетти көшүү режимине өткөрбөйт."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Колдонмого Android TV түзмөгүңүзгө уйку режимин күйгүзүүгө жол бербөөгө уруксат берет."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Колдонмо телефонду көшүү режимине өткөрбөйт."</string>
@@ -549,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Кайра бир аракеттениңиз."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Бир да манжа изи катталган эмес."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Бул түзмөктө манжа изинин сенсору жок."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сенсор убактылуу өчүрүлгөн."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>-манжа"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Жүз ырасталбай жатат. Кайталап көрүңүз."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Жүзүнөн таануу функциясын жөндөй элексиз."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Жүзүнөн таануу функциясы бул түзмөктө иштебейт."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Сенсор убактылуу өчүрүлгөн."</string>
<string name="face_name_template" msgid="3877037340223318119">"Жүз <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1254,9 +1264,8 @@
<string name="wifi_no_internet" msgid="1386911698276448061">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> Интернетке туташуусу жок"</string>
<string name="wifi_no_internet_detailed" msgid="634938444133558942">"Параметрлерди ачуу үчүн таптап коюңуз"</string>
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобилдик Интернет жок"</string>
- <string name="other_networks_no_internet" msgid="6698711684200067033">"Тармактын Интернет байланышы жок"</string>
+ <string name="other_networks_no_internet" msgid="6698711684200067033">"Тармактын Интернет жок"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Жеке DNS сервери жеткиликсиз"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Туташты"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> байланышы чектелген"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Баары бир туташуу үчүн таптаңыз"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> тармагына которуштурулду"</string>
@@ -1321,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Мүчүлүштүктөрдү USB аркылуу оңдоо иштеп жатат"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Өчүрүү үчүн тийип коюңуз"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB аркылуу мүчүлүштүктөрдү оңдоону өчүрүүнү тандаңыз."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Мүчүлүштүктөрдү зымсыз оңдоо иштетилди"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Мүчүлүштүктөрдү зымсыз оңдоону өчүрүү үчүн таптап коюңуз"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Мүчүлүштүктөрдү зымсыз оңдоону өчүрүүнү тандаңыз."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Сыноо программасынын режими иштетилди"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Сыноо программасынын режимин өчүрүү үчүн, баштапкы жөндөөлөргө кайтарыңыз."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериялык консоль иштетилди"</string>
@@ -1624,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Фондогу <xliff:g id="PACKAGENAME">%1$s</xliff:g> кызматы активдүү режимде иштеп баштап, кийинки R курамаларында колдонуу учурунда уруксаты болбойт. Төмөнкү бөлүмгө өтүп, мүчүлүштүк тууралуу кабарды тапшырыңыз: go/r-bg-fgs-restriction."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Сунушталган деңгээлден да катуулатып уккуңуз келеби?\n\nМузыканы узакка чейин катуу уксаңыз, угууңуз начарлап кетиши мүмкүн."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ыкчам иштетесизби?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Атайын мүмкүнчүлүктөр функциясын пайдалануу үчүн ал күйгүзүлгөндө, үндү катуулатып/акырындаткан эки баскычты тең 3 секунддай коё бербей басып туруңуз."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> кызматына түзмөгүңүздү толугу менен көзөмөлдөөгө уруксат бересизби?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Эгер <xliff:g id="SERVICE">%1$s</xliff:g> күйгүзүлсө, түзмөгүңүз дайын-даректерди шифрлөөнү күчтөндүрүү үчүн экраныңыздын кулпусун пайдаланбайт."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Толук көзөмөл атайын мүмкүнчүлүктөрдү пайдаланууга керек, бирок калган көпчүлүк колдонмолорго кереги жок."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Экранды көрүп, көзөмөлдөө"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Кызмат экрандагы нерселерди окуп, материалды башка колдонмолордун үстүнөн көрсөтөт."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Аракеттерди көрүп, аткаруу"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Кызмат колдонмодо жасаган аракеттериңизге же түзмөктүн сенсорлоруна көз салып, сиздин атыңыздан буйруктарды берет."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Уруксат берүү"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Жок"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Функцияны колдонуп баштоо үчүн аны таптап коюңуз:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Атайын мүмкүнчүлүктөр баскычы менен колдонгуңуз келген колдонмолорду тандаңыз"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Үн деңгээлинин баскычтары менен колдонгуңуз келген колдонмолорду тандаңыз"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> өчүрүлдү"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Кыска жолдорду түзөтүү"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Жокко чыгаруу"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Бүттү"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Кыска жолду өчүрүү"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Кыска жолду колдонуу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Түстү инверсиялоо"</string>
@@ -1848,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Категорияларга бөлүнгөн эмес"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Бул эскертмелердин маанилүүлүгүн белгиледиңиз."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Булар сиз үчүн маанилүү адамдар."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Колдонмонун ыңгайлаштырылган билдирмеси"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> колдонмосуна <xliff:g id="ACCOUNT">%2$s</xliff:g> аккаунту менен жаңы колдонуучу түзүүгө уруксат бересизби (мындай аккаунту бар колдонуучу мурунтан эле бар)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> колдонмосуна <xliff:g id="ACCOUNT">%2$s</xliff:g> аккаунту менен жаңы колдонуучу түзүүгө уруксат бересизби?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Тил кошуу"</string>
@@ -2019,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Атайын мүмкүнчүлүктөр менюсу"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунун маалымат тилкеси."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Жумуш"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Жеке көрүнүш"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Жумуш көрүнүшү"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Жумуш колдонмолору менен бөлүшүүгө болбойт"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Жеке колдонмолор менен бөлүшүүгө болбойт"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT администраторуңуз жеке жана жумуш профилдеринин ортосунда бөлүшүүнү бөгөттөп койгон"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Жумуш колдонмолоруна кирүү мүмкүн эмес"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT администраторуңуз жумуш колдонмолорунда жеке мазмунду көрүүгө тыюу салып койгон"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Жеке колдонмолорго кирүү мүмкүн эмес"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT администраторуңуз жеке колдонмолордо жумушка тийиштүү мазмунду көрүүгө тыюу салып койгон"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Мазмунду бөлүшүү үчүн жумуш профилин күйгүзүңүз"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Мазмунду көрүү үчүн жумуш профилин күйгүзүңүз"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Колдонмолор жок"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Күйгүзүү"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Телефон чалууларда жаздырып же аудиону ойнотуу"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Бул колдонмо демейки телефон катары дайындалганда ага чалууларды жаздырууга жана аудиону ойнотууга уруксат берет."</string>
</resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index ce17258..4939716 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ອົງກອນຂອງທ່ານຈັດການອຸປະກອນນີ້ ແລະ ອາດກວດສອບທຣາບຟິກເຄືອຂ່າຍນຳ. ແຕະເພື່ອເບິ່ງລາຍລະອຽດ."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ຜູ້ເບິ່ງແຍງຂອງທ່ານປ່ຽນການຕັ້ງຄ່າສະຖານທີ່ແລ້ວ"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ແຕະເພື່ອເບິ່ງການຕັ້ງຄ່າສະຖານທີ່ຂອງທ່ານ."</string>
+ <string name="country_detector" msgid="7023275114706088854">"ຕົວກວດຫາປະເທດ"</string>
+ <string name="location_service" msgid="2439187616018455546">"ບໍລິການສະຖານທີ່"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"ບໍລິການ GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"ບໍລິການການແຈ້ງເຕືອນເຊັນເຊີ"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ບໍລິການ Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ອຸປະກອນຂອງທ່ານຈະຖືກລຶບ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ບໍ່ສາມາດໃຊ້ແອັບຜູ້ເບິ່ງແຍງລະບົບໄດ້. ອຸປະກອນຂອງທ່ານຈະຖືກລຶບຂໍ້ມູນໃນຕອນນີ້.\n\nຫາກທ່ານມີຄຳຖາມ, ໃຫ້ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອົງກອນຂອງທ່ານ."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ການພິມຖືກປິດໄວ້ໂດຍ <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">ກຳລັງຈະຖ່າຍພາບໜ້າຈໍສຳລັບການລາຍງານຂໍ້ຜິດພາດໃນ <xliff:g id="NUMBER_1">%d</xliff:g> ວິນາທີ.</item>
<item quantity="one">ກຳລັງຈະຖ່າຍພາບໜ້າຈໍສຳລັບການລາຍງານຂໍ້ຜິດພາດໃນ <xliff:g id="NUMBER_0">%d</xliff:g> ວິນາທີ.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ຖ່າຍຮູບໜ້າຈໍກັບການລາຍງານຂໍ້ຜິດພາດແລ້ວ"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ຖ່າຍຮູບໜ້າຈໍກັບການລາຍງານຂໍ້ຜິດພາດບໍ່ສຳເລັດ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ໂໝດປິດສຽງ"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ປິດສຽງແລ້ວ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ເປິດສຽງແລ້ວ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ເຂົ້າເຖິງຄຳສັ່ງຜູ່ໃຫ້ບໍລິການພິກັດສະຖານທີ່"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ອະນຸຍາດໃຫ້ແອັບຯເຂົ້າເຖິງຄຳສັ່ງເພີ່ມເຕີມຂອງຜູ່ໃຫ້ບໍລິການສະຖານທີ່. ນີ້ອາດຈະເປັນການເຮັດໃຫ້ແອັບຯ ລົບກວນການເຮັດວຽກຂອງ GPS ຫຼືແຫລ່ງຂໍ້ມູນສະຖານທີ່ອື່ນໆໄດ້."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ເຂົ້າເຖິງສະຖານທີ່ແນ່ນອນໃນພື້ນໜ້າເທົ່ານັ້ນ"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ແອັບນີ້ສາມາດຮັບເອົາສະຖານທີ່ແນ່ນອນຂອງທ່ານໄດ້ທຸກເວລາທີ່ມັນຢູ່ໃນພື້ນໜ້າ. ການບໍລິການສະຖານທີ່ຕ້ອງເປີດຢູ່ ແລະ ສາມາດໃຊ້ໄດ້ໃນອຸປະກອນຂອງທ່ານເພື່ອໃຫ້ແອັບສາມາດໃຊ້ພວກມັນໄດ້. ນີ້ອາດຈະເຮັດໃຫ້ການໃຊ້ແບັດເຕີຣີເພີ່ມຂຶ້ນ."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ແອັບນີ້ສາມາດຂໍສະຖານທີ່ແບບລະອຽດຂອງທ່ານຈາກບໍລິການສະຖານທີ່ໄດ້ໃນຂະນະທີ່ກຳລັງໃຊ້ແອັບຢູ່. ທ່ານຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນຂອງທ່ານກ່ອນເພື່ອໃຫ້ແອັບຂໍຂໍ້ມູນສະຖານທີ່. ນີ້ອາດເພີ່ມການນຳໃຊ້ແບັດເຕີຣີ."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ເຂົ້າເຖິງສະຖານທີ່ໂດຍປະມານເມື່ອຢູ່ໃນພື້ນໜ້າເທົ່ານັ້ນ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ແອັບນີ້ສາມາດລະບຸສະຖານທີ່ໂດຍປະມານການຂອງທ່ານໄດ້ສະເພາະເມື່ອມັນຢູ່ໃນພື້ນຫຼັງເທົ່ານັ້ນ. ຈະຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ ແລະ ໃຊ້ໄດ້ຢູ່ລົດຂອງທ່ານເພື່ອໃຫ້ແອັບສາມາດໃຊ້ພວກມັນໄດ້."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ແອັບນີ້ສາມາດຂໍສະຖານທີ່ໂດຍປະມານຂອງທ່ານຈາກບໍລິການສະຖານທີ່ໄດ້ໃນຂະນະທີ່ກຳລັງໃຊ້ແອັບຢູ່. ທ່ານຕ້ອງເປີດໃຊ້ບໍລິການສະຖານທີ່ສຳລັບອຸປະກອນຂອງທ່ານກ່ອນເພື່ອໃຫ້ແອັບຂໍຂໍ້ມູນສະຖານທີ່."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ເຂົ້າເຖິງສະຖານທີ່ໃນພື້ນຫຼັງ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ແອັບນີ້ສາມາດເຂົ້າເຖິງສະຖານທີ່ໃນເວລາເຮັດວຽກໃນພື້ນຫຼັງ, ນອກເໜືອໄປຈາກການເຂົ້າເຖິງສະຖານທີ່ໃນພື້ນໜ້າ."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ແອັບນີ້ສາມາດເຂົ້າເຖິງສະຖານທີ່ໄດ້ຕະຫຼອດເວລາ, ເຖິງແມ່ນວ່າຈະບໍ່ໄດ້ໃຊ້ແອັບຢູ່ກໍຕາມ."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ປ່ຽນການຕັ້ງຄ່າສຽງຂອງທ່ານ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ອະນຸຍາດໃຫ້ແອັບຯແກ້ໄຂການຕັ້ງຄ່າສຽງສ່ວນກາງ ເຊັ່ນ: ລະດັບສຽງ ແລະລຳໂພງໃດທີ່ຖືກໃຊ້ສົ່ງສຽງອອກ."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ບັນທຶກສຽງ"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"This app can take pictures and record videos using the camera at any time."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ຫຼື ບໍລິການເຂົ້າເຖິງກ້ອງຂອງລະບົບໄດ້ເພື່ອຖ່າຍຮູບ ແລະ ວິດີໂອ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ສິດນີ້ | ແອັບລະບົບສາມາດຖ່າຍຮູບ ແລະ ບັນທຶກວິດີໂອໄດ້ໂດຍໃຊ້ກ້ອງຂອງລະບົບຕອນໃດກໍໄດ້. ຕ້ອງໃຊ້ສິດອະນຸຍາດ android.permission.CAMERA ໃຫ້ແອັບຖືນຳ"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ອະນຸຍາດໃຫ້ແອັບພລິເຄຊັນ ຫຼື ບໍລິການຮັບການເອີ້ນກັບກ່ຽວກັບອຸປະກອນກ້ອງຖືກເປີດ ຫຼື ປິດໄດ້."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"ແອັບລາຍເຊັນນີ້ສາມາດຮັບການເອີ້ນກັບໄດ້ເມື່ອມີອຸປະກອນກ້ອງໃດຖືກເປີດ (ໂດຍແພັກເກດແອັບພລິເຄຊັນຫຍັງ) ຫຼື ຖືກປິດ."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ຄວບຄຸມການສັ່ນ"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ອະນຸຍາດໃຫ້ແອັບຯຄວບຄຸມໂຕສັ່ນ."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງສະຖານະການສັ່ນໄດ້."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Allows the app to route its calls through the system in order to improve the calling experience."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ເຫັນ ແລະ ຄວບຄຸມການໂທຜ່ານລະບົບ."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ອະນຸຍາດໃຫ້ແອັບເຫັນ ແລະ ຄວບຄຸມການໂທທີ່ກຳລັງດຳເນີນຢູ່ອຸປະກອນ. ນີ້ຮວມເຖິງຂໍ້ມູນ ເຊັ່ນ: ເບີໂທສຳລັບການໂທ ແລະ ສະຖານະຂອງການໂທນຳ."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ສືບຕໍ່ການໂທຈາກແອັບອື່ນ"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ອະນຸຍາດໃຫ້ແອັບສືບຕໍ່ການໂທເຊິ່ງອາດຖືກເລີ່ມຕົ້ນໃນແອັບອື່ນ."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ອ່ານເບີໂທລະສັບ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ອະນຸຍາດໃຫ້ແອັບເຂົ້າເຖິງເບີໂທລະສັບຂອງອຸປະກອນໄດ້."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ເປີດໜ້າຈໍລົດໄວ້ຕະຫຼອດ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ຂັດຂວາງບໍ່ໃຫ້ປິດໜ້າຈໍແທັບເລັດ"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ປ້ອງກັນບໍ່ໃຫ້ອຸປະກອນ Android TV ຂອງທ່ານນອນ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ຂັດຂວາງບໍ່ໃຫ້ໂທລະສັບປິດໜ້າຈໍ"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ອະນຸຍາດໃຫ້ແອັບເຮັດໃຫ້ໜ້າຈໍລົດເປີດໄວ້ຕະຫຼອດ."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ອະນຸຍາດໃຫ້ແອັບຯ ປ້ອງກັນບໍ່ໃຫ້ປິດໜ້າຈໍແທັບເລັດ."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ອະນຸຍາດໃຫ້ແອັບປ້ອງກັນບໍ່ໃຫ້ອຸປະກອນ Android TV ຂອງທ່ານນອນ."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ອະນຸຍາດໃຫ້ແອັບຯປ້ອງກັນບໍ່ໃຫ້ປິດໜ້າຈໍໂທລະສັບ."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ເຄືອຂ່າຍມືຖືບໍ່ສາມາດເຂົ້າເຖິງອິນເຕີເນັດໄດ້"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ເຄືອຂ່າຍບໍ່ສາມາດເຂົ້າເຖິງອິນເຕີເນັດໄດ້"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ບໍ່ສາມາດເຂົ້າເຖິງເຊີບເວີ DNS ສ່ວນຕົວໄດ້"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ເຊື່ອມຕໍ່ແລ້ວ"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ມີການເຊື່ອມຕໍ່ທີ່ຈຳກັດ"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ແຕະເພື່ອຢືນຢັນການເຊື່ອມຕໍ່"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"ສະຫຼັບໄປໃຊ້ <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ແລ້ວ"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"ເຊື່ອມຕໍ່ການດີບັກຜ່ານ USB ແລ້ວ"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"ແຕະເພື່ອປິດການດີບັກ USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"ເລືອກເພື່ອປິດການດີບັ໊ກຜ່ານ USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ເຊື່ອມຕໍ່ການດີບັກໄຮ້ສາຍແລ້ວ"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ແຕະເພື່ອປິດການດີບັກໄຮ້ສາຍ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ເລືອກປິດການປິດການນຳໃຊ້ການດີບັກໄຮ້ສາຍ."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ເປີດໃຊ້ໂໝດ Test Harness ແລ້ວ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ດຳເນີນການຣີເຊັດເປັນຄ່າຈາກໂຮງງານເພື່ອປິດການນຳໃຊ້ໂໝດ Test Harness."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ເປີດນຳໃຊ້ຊີຣຽວຄອນໂຊແລ້ວ"</string>
@@ -1620,8 +1637,21 @@
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ເພີ່ມລະດັບສຽງໃຫ້ເກີນກວ່າລະດັບທີ່ແນະນຳບໍ?\n\nການຮັບຟັງສຽງໃນລະດັບທີ່ສູງເປັນໄລຍະເວລາດົນອາດເຮັດໃຫ້ການຟັງຂອງທ່ານມີບັນຫາໄດ້."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ໃຊ້ປຸ່ມລັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string>
<string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ເມື່ອເປີດໃຊ້ທາງລັດແລ້ວ, ການກົດປຸ່ມລະດັບສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີຈະເປັນການເລີ່ມຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ອະນຸຍາດໃຫ້ <xliff:g id="SERVICE">%1$s</xliff:g> ຄວບຄຸມອຸປະກອນທ່ານໄດ້ເຕັມຮູບແບບບໍ?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ຫາກທ່ານເປີດໃຊ້ <xliff:g id="SERVICE">%1$s</xliff:g>, ອຸປະກອນຂອງທ່ານຈະບໍ່ໃຊ້ການລັອກໜ້າຈໍຂອງທ່ານເພື່ອເພີ່ມການເຂົ້າລະຫັດຂໍ້ມູນ."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ການຄວບຄຸມແບບເຕັມຮູບແບບແມ່ນເໝາະສົມສຳລັບແອັບທີ່ຊ່ວຍທ່ານໃນດ້ານການຊ່ວຍເຂົ້າເຖິງ, ແຕ່ບໍ່ເໝາະສຳລັບທຸກແອັບ."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ເບິ່ງ ແລະ ຄວບຄຸມໜ້າຈໍ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ມັນສາມາດອ່ານເນື້ອຫາທັງໝົດຢູ່ໜ້າຈໍ ແລະ ສະແດງເນື້ອຫາບັງແອັບອື່ນໄດ້."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ເບິ່ງ ແລະ ດຳເນີນການ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ມັນສາມາດຕິດຕາມການໂຕ້ຕອບຂອງທ່ານກັບແອັບ ຫຼື ເຊັນເຊີຮາດແວໃດໜຶ່ງ ແລະ ໂຕ້ຕອບກັບແອັບໃນນາມຂອງທ່ານໄດ້."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ອະນຸຍາດ"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ປະຕິເສດ"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ແຕະໃສ່ຄຸນສົມບັດໃດໜຶ່ງເພື່ອເລີ່ມການນຳໃຊ້ມັນ:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"ເລືອກແອັບເພື່ອໃຊ້ກັບປຸ່ມການຊ່ວຍເຂົ້າເຖິງ"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"ເລືອກແອັບເພື່ອໃຊ້ກັບທາງລັດປຸ່ມລະດັບສຽງ"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ປິດ <xliff:g id="SERVICE_NAME">%s</xliff:g> ໄວ້ແລ້ວ"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ແກ້ໄຂທາງລັດ"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ຍົກເລີກ"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ແລ້ວໆ"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ປິດປຸ່ມລັດ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ໃຊ້ປຸ່ມລັດ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ການປີ້ນສີ"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ບໍ່ມີໝວດໝູ່"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ທ່ານຕັ້ງຄວາມສຳຄັນຂອງການແຈ້ງເຕືອນເຫຼົ່ານີ້."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ຂໍ້ຄວາມນີ້ສຳຄັນເນື່ອງຈາກບຸກຄົນທີ່ກ່ຽວຂ້ອງ."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ການແຈ້ງເຕືອນແອັບແບບກຳນົດເອງ"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"ອະນຸຍາດໃຫ້ <xliff:g id="APP">%1$s</xliff:g> ສ້າງຜູ້ໃຊ້ໃໝ່ກັບ <xliff:g id="ACCOUNT">%2$s</xliff:g> ໄດ້ບໍ່ (ມີຜູ້ໃຊ້ທີ່ໃຊ້ບັນຊີນີ້ຢູ່ກ່ອນແລ້ວ) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"ອະນຸຍາດໃຫ້ <xliff:g id="APP">%1$s</xliff:g> ສ້າງຜູ້ໃຊ້ໃໝ່ກັບ <xliff:g id="ACCOUNT">%2$s</xliff:g> ໄດ້ບໍ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ເພີ່ມພາສາ"</string>
@@ -2013,14 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ເມນູການຊ່ວຍເຂົ້າເຖິງ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"ແຖບຄຳບັນຍາຍຂອງ <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ຖືກວາງໄວ້ໃນກະຕ່າ \"ຈຳກັດ\" ແລ້ວ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ສ່ວນຕົວ"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ວຽກ"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ມຸມມອງສ່ວນຕົວ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ມຸມມອງວຽກ"</string>
<string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ບໍ່ສາມາດແບ່ງປັນກັບແອັບວຽກໄດ້"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ບໍ່ສາມາດແບ່ງປັນກັບແອັບສ່ວນຕົວໄດ້"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບລັອກການແບ່ງປັນລະຫວ່າງແອັບສ່ວນຕົວ ແລະ ແອັບວຽກໄວ້"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"ປຸ່ມເປີດຢູ່ແອັບວຽກ"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"ເປີດໃຊ້ແອັບວຽກເພື່ອເຂົ້າເຖິງແອັບ ແລະ ລາຍຊື່ຜູ້ຕິດຕໍ່ວຽກ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບລັອກການແບ່ງປັນລະຫວ່າງໂປຣໄຟລ໌ສ່ວນຕົວ ແລະ ໂປຣໄຟລ໌ວຽກໄວ້"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"ບໍ່ສາມາດເຂົ້າເຖິງແອັບວຽກໄດ້"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານເບິ່ງເນື້ອຫາສ່ວນຕົວໃນແອັບວຽກໄດ້"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ບໍ່ສາມາດເຂົ້າເຖິງແອັບສ່ວນຕົວໄດ້"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ຜູ້ເບິ່ງແຍງໄອທີຂອງທ່ານບໍ່ອະນຸຍາດໃຫ້ທ່ານເບິ່ງເນື້ອຫາວຽກໃນແອັບສ່ວນຕົວ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ເປີດໃຊ້ໂປຣໄຟລ໌ວຽກເພື່ອແບ່ງປັນເນື້ອຫາ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ເປີດໃຊ້ໂປຣໄຟລ໌ວຽກເພື່ອເບິ່ງເນື້ອຫາ"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"ບໍ່ມີແອັບທີ່ສາມາດໃຊ້ໄດ້"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"ພວກເຮົາບໍ່ພົບແອັບໃດໆເລີຍ"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"ປຸ່ມເປີດຢູ່ວຽກ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ເປີດໃຊ້"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ບັນທຶກ ຫຼື ຫຼິ້ນສຽງໃນການໂທລະສັບ"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ອະນຸຍາດແອັບນີ້, ເມື່ອມອບໝາຍເປັນແອັບພລິເຄຊັນໂທລະສັບເລີ່ມຕົ້ນເພື່ອບັນທຶກ ຫຼື ຫຼິ້ນສຽງໃນການໂທລະສັບ."</string>
</resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 2c7e96b..2813099 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Šį įrenginį tvarko organizacija ir gali stebėti tinklo srautą. Palieskite, kad gautumėte daugiau informacijos."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Vietovės nustatymus pakeitė administratorius"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Palieskite, kad peržiūrėtumėte vietovės nustatymus."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Šalies detektorius"</string>
+ <string name="location_service" msgid="2439187616018455546">"Vietovės paslauga"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS paslauga"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Jutiklių pranešimų paslauga"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Paslauga „Twilight“"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Įrenginys bus ištrintas"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administratoriaus programos negalima naudoti. Dabar įrenginio duomenys bus ištrinti.\n\nJei turite klausimų, susisiekite su organizacijos administratoriumi."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Neleidžiama spausdinti (<xliff:g id="OWNER_APP">%s</xliff:g>)."</string>
@@ -251,6 +256,8 @@
<item quantity="many">Pranešimo apie riktą ekrano kopija bus užfiksuota po <xliff:g id="NUMBER_1">%d</xliff:g> sekundės.</item>
<item quantity="other">Pranešimo apie riktą ekrano kopija bus užfiksuota po <xliff:g id="NUMBER_1">%d</xliff:g> sekundžių.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Sukurta ekrano kopija su pranešimu apie riktą"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nepavyko sukurti ekrano kopijos su pranešimu apie riktą"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tylus režimas"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Garsas IŠJUNGTAS"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Garsas ĮJUNGTAS"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"pasiekti papildomas vietos teikimo įrankio komandas"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Programai leidžiama pasiekti papildomas vietovės nustatymo paslaugų teikėjų komandas. Dėl to programa gali trukdyti veikti GPS ar kitiems vietovės nustatymo šaltiniams."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"pasiekti tikslią vietovę, tik kai programa veikia priekiniame plane"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ši programa gali gauti tikslius jūsų vietovės duomenis, tik kai veikia priekiniame plane. Vietovės paslaugos turi būti įjungtos ir pasiekiamos įrenginyje, kad programa galėtų jas naudoti. Dėl to akumuliatoriui gali reikėti daugiau energijos."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ši programa gali gauti tikslius jūsų vietovės duomenis iš Vietovės paslaugų, kai programa naudojama. Kad programa galėtų gauti vietovės duomenis, Vietovės paslaugos turi būti įjungtos įrenginyje. Dėl to gali padidėti akumuliatoriaus energijos vartojimas."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"pasiekti apytikslę vietovę, tik kai programa veikia priekiniame plane"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ši programa gali gauti apytikslius jūsų vietovės duomenis, tik kai veikia priekiniame plane. Vietovės paslaugos turi būti įjungtos ir pasiekiamos įrenginyje, kad programa galėtų jas naudoti."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ši programa gali gauti apytikslius jūsų vietovės duomenis iš Vietovės paslaugų, kai programa naudojama. Kad programa galėtų gauti vietovės duomenis, Vietovės paslaugos turi būti įjungtos įrenginyje."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"prieiga prie vietovės fone"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ši programa gali pasiekti vietovę, kai veikia fone ar priekiniame plane."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ši programa gali bet kada pasiekti vietovę, net kai programa nenaudojama."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"keisti garso nustatymus"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Leidžiama programai keisti visuotinius garso nustatymus, pvz., garsumą ir tai, kuris garsiakalbis naudojamas išvesčiai."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"įrašyti garsą"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ši programa gali bet kada fotografuoti ir įrašyti vaizdo įrašų naudodama fotoaparatą."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Suteikti programai arba paslaugai prieigą prie sistemos fotoaparatų, kad būtų galima daryti nuotraukas ir įrašyti vaizdo įrašus"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ši privilegijuota | sistemos programa gali daryti nuotraukas ir įrašyti vaizdo įrašus naudodama sistemos fotoaparatą bet kuriuo metu. Programai taip pat būtinas leidimas „android.permission.CAMERA“"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Leisti programai ar paslaugai sulaukti atgalinio skambinimo, kai atidaromas ar uždaromas fotoaparatas."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ši pasirašymo programa gali sulaukti atgalinio skambinimo, kai atidaromas ar uždaromas (kurio nors programos paketo) koks nors fotoaparatas."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"valdyti vibraciją"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Leidžiama programai valdyti vibravimą."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Programai leidžiama pasiekti vibratoriaus būseną."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Programai leidžiama nukreipti jos skambučius per sistemą siekiant pagerinti skambinimo paslaugas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"matyti ir valdyti skambučius per sistemą."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Programai leidžiama matyti ir valdyti vykstančius skambučius įrenginyje. Tai apima tokią informaciją kaip skambučių telefono numeriai ir skambučių būsena."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"tęsti skambutį naudojant kitą programą"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Programai leidžiama tęsti skambutį, kuris buvo pradėtas naudojant kitą programą."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"skaityti telefonų numerius"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Programai leidžiama pasiekti įrenginio telefonų numerius."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"palikti automobilio ekraną įjungtą"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"neleisti planšetiniam kompiuteriui užmigti"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"neleisti „Android TV“ įrenginiui užmigti"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"neleisti telefonui snausti"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Programai leidžiama palikti automobilio ekraną įjungtą."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Leidžiama programai neleisti planšetiniam kompiuteriui užmigti."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Programai leidžiama nustatyti, kad „Android TV“ įrenginys nebūtų perjungtas į miego būseną."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Leidžiama programai neleisti telefonui užmigti."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Bandykite dar kartą."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Neužregistruota jokių kontrolinių kodų."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Šiame įrenginyje nėra kontrolinio kodo jutiklio."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Jutiklis laikinai išjungtas."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> pirštas"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nepavyko patvirtinti veido. Bandykite dar kartą."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Nenustatėte Atrakinimo pagal veidą."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Atrakinimas pagal veidą šiame įrenginyje nepalaikomas."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Jutiklis laikinai išjungtas."</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g> veidas"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobiliojo ryšio tinkle nėra prieigos prie interneto"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Tinkle nėra prieigos prie interneto"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Privataus DNS serverio negalima pasiekti"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Prisijungta"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"„<xliff:g id="NETWORK_SSID">%1$s</xliff:g>“ ryšys apribotas"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Palieskite, jei vis tiek norite prisijungti"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Perjungta į tinklą <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB derinimas prijungtas"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Palieskite, kad išjungtumėte USB derinimą"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Pasirinkite, kas išjungtumėte USB derinimą."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Belaidžio ryšio derinimas prijungtas"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Palieskite, kad išjungtumėte belaidžio ryšio derinimą"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pasirinkite, kad išjungtumėte belaidžio ryšio derinimą."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testavimo sistemos režimas įgalintas"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Atkurkite gamyklinius duomenis, kad išjungtumėte testavimo sistemos režimą."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijos pultas įgalintas"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fone pradėtai priekinio plano paslaugai iš „<xliff:g id="PACKAGENAME">%1$s</xliff:g>“ nebus suteiktas leidimas naudojimo metu būsimose R versijose. Apsilankykite go/r-bg-fgs-restriction ir pateikite pranešimą apie riktą."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Padidinti garsą daugiau nei rekomenduojamas lygis?\n\nIlgai klausydami dideliu garsu galite pažeisti klausą."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Naudoti spartųjį pritaikymo neįgaliesiems klavišą?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kai spartusis klavišas įjungtas, paspaudus abu garsumo mygtukus ir palaikius 3 sekundes bus įjungta pritaikymo neįgaliesiems funkcija."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Leisti „<xliff:g id="SERVICE">%1$s</xliff:g>“ valdyti visas įrenginio funkcijas?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jei įjungsite „<xliff:g id="SERVICE">%1$s</xliff:g>“, įrenginyje nebus naudojamas ekrano užraktas siekiant patobulinti duomenų šifruotę."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Galimybę valdyti visas funkcijas patariama suteikti programoms, kurios padeda specialiųjų poreikių turintiems asmenims, bet ne daugumai programų."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekrano peržiūra ir valdymas"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Naudojant šį ekrano valdiklį galima skaityti visą ekrane rodomą turinį ir rodyti turinį virš kitų programų."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Veiksmų peržiūra ir atlikimas"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Naudojant šią funkciją galima stebėti jūsų sąveiką su programa ar aparatinės įrangos jutikliu ir sąveikauti su programomis jūsų vardu."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Leisti"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Atmesti"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Norėdami naudoti funkciją, palieskite ją:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Programų, kurioms bus naudojamas pritaikomumo mygtukas, pasirinkimas"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Programų, kurioms bus naudojamas garsumo spartusis klavišas, pasirinkimas"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Paslauga „<xliff:g id="SERVICE_NAME">%s</xliff:g>“ išjungta"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redaguoti sparčiuosius klavišus"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Atšaukti"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Atlikta"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Išjungti spartųjį klavišą"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Naudoti spartųjį klavišą"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Spalvų inversija"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Be kategorijos"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Galite nustatyti šių pranešimų svarbą."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Tai svarbu dėl susijusių žmonių."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Tinkintas programos pranešimas"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Leisti „<xliff:g id="APP">%1$s</xliff:g>“ kurti naują <xliff:g id="ACCOUNT">%2$s</xliff:g> naudotoją (šią paskyrą naudojantis naudotojas jau yra)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Leisti „<xliff:g id="APP">%1$s</xliff:g>“ kurti naują <xliff:g id="ACCOUNT">%2$s</xliff:g> naudotoją?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Pridėkite kalbą"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pritaikomumo meniu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Programos „<xliff:g id="APP_NAME">%1$s</xliff:g>“ antraštės juosta."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"„<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>“ įkeltas į grupę APRIBOTA"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Asmeninė"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Darbo"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Asmeninė peržiūra"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Darbo peržiūra"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Negalima bendrinti su darbo programomis"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Negalima bendrinti su asmeninėmis programomis"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT administratorius užblokavo bendrinimą tarp asmeninio ir darbo profilių"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nepavyko pasiekti darbo programų"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT administratorius neleidžia peržiūrėti asmeninio turinio darbo programose"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nepavyko pasiekti asmeninių programų"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT administratorius neleidžia peržiūrėti darbo turinio asmeninėse programose"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Įjunkite darbo profilį, jei norite bendrinti turinį"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Įjunkite darbo profilį, jei norite peržiūrėti turinį"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nėra pasiekiamų programų"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Įjungti"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefonų skambučių garso įrašo įrašymas arba leidimas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Leidžiama šiai programai, esant prisijungus kaip numatytajai numerio rinkiklio programai, įrašyti ar leisti telefonų skambučių garso įrašą."</string>
</resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index 8614214..0e314f2 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -195,6 +195,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Jūsu organizācija pārvalda šo ierīci un var uzraudzīt tīkla datplūsmu. Pieskarieties, lai saņemtu detalizētu informāciju."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Atrašanās vietas iestatījumus nomainīja administrators"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Pieskarieties, lai skatītu atrašanās vietas iestatījumus."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Valsts noteikšanas rīks"</string>
+ <string name="location_service" msgid="2439187616018455546">"Atrašanās vietas pakalpojums"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS pakalpojums"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensoru paziņojumu pakalpojums"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Krēslas noteikšanas pakalpojums"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Jūsu ierīces dati tiks dzēsti"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administratora lietotni nevar izmantot. Ierīcē saglabātie dati tiks dzēsti.\n\nJa jums ir kādi jautājumi, sazinieties ar savas organizācijas administratoru."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Drukāšanu atspējoja <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="one">Pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundes tiks veikts ekrānuzņēmums kļūdas pārskatam.</item>
<item quantity="other">Pēc <xliff:g id="NUMBER_1">%d</xliff:g> sekundēm tiks veikts ekrānuzņēmums kļūdas pārskatam.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Izveidots ekrānuzņēmums ar kļūdas pārskatu."</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Neizdevās izveidot ekrānuzņēmumu ar kļūdas pārskatu."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Klusuma režīms"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Skaņa ir IZSLĒGTA."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Skaņa ir IESLĒGTA."</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"piekļūt atrašanās vietas nodrošinātāja papildu komandām"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ļauj lietotnei piekļūt papildu atrašanās vietas noteikšanas nodrošinātāju komandām. Tas var ļaut lietotnei traucēt GPS vai citu atrašanās vietas noteikšanas avotu darbību."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"piekļuve precīzai atrašanās vietai, tikai darbojoties priekšplānā"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Šī lietotne var iegūt precīzu jūsu atrašanās vietu, tikai darbojoties priekšplānā. Jūsu ierīcē ir jābūt ieslēgtiem un pieejamiem atrašanās vietu pakalpojumiem, lai lietotne varētu tos izmantot. Tādējādi var palielināties akumulatora jaudas patēriņš."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Šī lietotne var iegūt precīzus jūsu atrašanās vietas datus no atrašanās vietu pakalpojumiem, kamēr lietotne tiek izmantota. Lai lietotne varētu iegūt atrašanās vietas datus, jūsu ierīcē ir jābūt ieslēgtiem atrašanās vietu pakalpojumiem. Tas var palielināt akumulatora lietojuma patēriņu."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"piekļuve aptuvenai atrašanās vietai, tikai darbojoties priekšplānā"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Šī lietotne var iegūt aptuvenu jūsu atrašanās vietu, tikai darbojoties priekšplānā. Jūsu ierīcē ir jābūt ieslēgtiem un pieejamiem atrašanās vietu pakalpojumiem, lai lietotne varētu tos izmantot."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Šī lietotne var iegūt aptuvenus jūsu atrašanās vietas datus no atrašanās vietu pakalpojumiem, kamēr lietotne tiek izmantota. Lai lietotne varētu iegūt atrašanās vietas datus, jūsu ierīcē ir jābūt ieslēgtiem atrašanās vietu pakalpojumiem."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"piekļūt atrašanās vietai fonā"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Šī lietotne var piekļūt atrašanās vietas datiem, darbojoties ne tikai priekšplānā, bet arī fonā."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Šī lietotne var jebkurā brīdī piekļūt atrašanās vietas datiem, pat ja lietotne netiek izmantota."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"mainīt audio iestatījumus"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ļauj lietotnei mainīt globālos audio iestatījumus, piemēram, skaļumu un izejai izmantoto skaļruni."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ierakstīt audio"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Šī lietotne jebkurā brīdī var uzņemt attēlus un ierakstīt videoklipus, izmantojot kameru."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Atļauja lietojumprogrammai vai pakalpojumam piekļūt sistēmas kamerām, lai uzņemtu attēlus un videoklipus"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Šī privileģētā/sistēmas lietotne var jebkurā brīdī uzņemt attēlus un ierakstīt videoklipus, izmantojot sistēmas kamerus. Lietotnei nepieciešama arī atļauja android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Atļaut lietojumprogrammai vai pakalpojumam saņemt atzvanus par kameras ierīču atvēršanu vai aizvēršanu"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Šajā parakstu lietotnē var saņemt atzvanus, ja tiek atvērta vai aizvērta jebkāda kameras ierīce (atkarībā no lietojumprogrammas pakotnes)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrolēt vibrosignālu"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Ļauj lietotnei kontrolēt vibrosignālu."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ļauj lietotnei piekļūt vibrosignāla statusam."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Ļauj lietotnei maršrutēt tās zvanus sistēmā, lai uzlabotu zvanīšanas pieredzi."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"skatīt un kontrolēt zvanus sistēmā."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Ļauj lietotnei ierīcē skatīt un kontrolēt aktīvos zvanus. Šeit ir ietverta tāda informācija kā zvanu tālruņa numuri un zvanu statuss."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"turpināt zvanu no citas lietotnes"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Ļauj lietotnei turpināt zvanu, kas tika sākts citā lietotnē."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lasīt tālruņa numurus"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Ļauj lietotnei piekļūt ierīcē esošajiem tālruņa numuriem."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"paturēt ieslēgtu automašīnas ekrānu"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"novērst planšetdatora pāriešanu miega režīmā"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV miega režīma ieslēgšanas liegšana"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"novērst tālruņa pāriešanu miega režīmā"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Ļauj lietotnei paturēt ieslēgtu automašīnas ekrānu."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Ļauj lietotnei novērst planšetdatora pāriešanu miega režīmā."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Ļauj lietotnei novērst Android TV ierīces pāriešanu miega režīmā."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Ļauj lietotnei novērst tālruņa pāriešanu miega režīmā."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Mēģiniet vēlreiz."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nav reģistrēts neviens pirksta nospiedums."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Šajā ierīcē nav pirksta nospieduma sensora."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensors ir īslaicīgi atspējots."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. pirksts"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nevar verificēt seju. Mēģiniet vēlreiz."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Autorizācija pēc sejas nav iestatīta."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Autorizācija pēc sejas šajā ierīcē netiek atbalstīta"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensors ir īslaicīgi atspējots."</string>
<string name="face_name_template" msgid="3877037340223318119">"Seja <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1273,7 +1286,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilajā tīklā nav piekļuves internetam."</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Tīklā nav piekļuves internetam."</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Nevar piekļūt privātam DNS serverim."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Izveidots savienojums"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Tīklā <xliff:g id="NETWORK_SSID">%1$s</xliff:g> ir ierobežota savienojamība"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Lai tik un tā izveidotu savienojumu, pieskarieties"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Pārslēdzās uz tīklu <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1338,6 +1350,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB atkļūdošana ir pievienota."</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Pieskarieties, lai izslēgtu USB atkļūdošanu"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Atlasiet, lai atspējotu USB atkļūdošanu."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Aktivizēta bezvadu atkļūdošana"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Pieskarieties, lai izslēgtu bezvadu atkļūdošanu."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Atlasiet, lai atspējotu bezvadu atkļūdošanu."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Drošības pārbaudes režīms ir iespējots"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Lai atspējotu drošības pārbaudes režīmu, veiciet rūpnīcas datu atiestatīšanu."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriālā konsole ir iespējota"</string>
@@ -1643,10 +1658,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fonā sāktam priekšplāna pakalpojumam no pakotnes <xliff:g id="PACKAGENAME">%1$s</xliff:g> nebūs atļaujas “while-in-use” turpmākajās R versijās. Lūdzu, skatiet vietni go/r-bg-fgs-restriction un iesniedziet kļūdas pārskatu."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vai palielināt skaļumu virs ieteicamā līmeņa?\n\nIlgstoši klausoties skaņu lielā skaļumā, var tikt bojāta dzirde."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vai izmantot pieejamības saīsni?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kad īsinājumtaustiņš ir ieslēgts, nospiežot abas skaļuma pogas un 3 sekundes turot tās, tiks aktivizēta pieejamības funkcija."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vai atļaut pakalpojumam <xliff:g id="SERVICE">%1$s</xliff:g> pilnībā kontrolēt jūsu ierīci?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ja ieslēgsiet pakalpojumu <xliff:g id="SERVICE">%1$s</xliff:g>, ierīce neizmantos ekrāna bloķēšanu datu šifrēšanas uzlabošanai."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pilnīga kontrole ir piemērota lietotnēm, kas nepieciešamas lietotājiem ar īpašām vajadzībām, taču ne lielākajai daļai lietotņu."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Skatīt un pārvaldīt ekrānu"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Tā var nolasīt visu ekrānā esošo saturu un attēlot saturu citām lietotnēm."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Darbību skatīšana un veikšana"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Tā var izsekot jūsu mijiedarbību ar lietotni vai aparatūras sensoru un mijiedarboties ar lietotnēm jūsu vārdā."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Atļaut"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Neatļaut"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Pieskarieties funkcijai, lai sāktu to izmantot"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Izvēlieties lietotnes, ko izmantot ar pieejamības pogu"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Izvēlieties lietotnes, ko izmantot ar skaļuma pogu īsinājumtaustiņu"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Pakalpojums <xliff:g id="SERVICE_NAME">%s</xliff:g> ir izslēgts."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Rediģēt īsinājumtaustiņus"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Atcelt"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gatavs"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Izslēgt saīsni"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Izmantot saīsni"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Krāsu inversija"</string>
@@ -1877,6 +1904,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nav kategorijas"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Jūs iestatījāt šo paziņojumu svarīguma līmeni."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Tas ir svarīgi iesaistīto personu dēļ."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Pielāgots lietotnes paziņojums"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Vai atļaut lietotnei <xliff:g id="APP">%1$s</xliff:g> izveidot jaunu lietotāju, izmantojot e-pasta adresi <xliff:g id="ACCOUNT">%2$s</xliff:g> (lietotājs ar šādu kontu jau pastāv)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Vai atļaut lietotnei <xliff:g id="APP">%1$s</xliff:g> izveidot jaunu lietotāju, izmantojot e-pasta adresi <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Pievienot valodu"</string>
@@ -2050,22 +2078,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pieejamības izvēlne"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> subtitru josla."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Pakotne “<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>” ir ievietota ierobežotā kopā."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Privātais profils"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Darba profils"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personisks skats"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Darba skats"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nevar kopīgot ar darba lietotnēm"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nevar kopīgot ar personīgajām lietotnēm"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT administrators bloķēja datu kopīgošanu starp personīgo un darba profilu."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nevar piekļūt darba lietotnēm"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT administrators neļauj skatīt personisko saturu darba lietotnēs."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nevar piekļūt personīgajām lietotnēm"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT administrators neļauj skatīt darba saturu personīgajās lietotnēs."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Ieslēdziet darba profilu, lai kopīgotu saturu."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Ieslēdziet darba profilu, lai skatītu saturu."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nav pieejamu lietotņu"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Ieslēgt"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ierakstīt vai atskaņot audio tālruņa sarunās"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ļauj šai lietotnei ierakstīt vai atskaņot audio tālruņa sarunās, kad tā ir iestatīta kā noklusējuma tālruņa lietojumprogramma."</string>
</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index a80779c..7303653 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -21,9 +21,9 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="byteShort" msgid="202579285008794431">"Б"</string>
- <string name="kilobyteShort" msgid="2214285521564195803">"КБ"</string>
- <string name="megabyteShort" msgid="6649361267635823443">"МБ"</string>
- <string name="gigabyteShort" msgid="7515809460261287991">"ГБ"</string>
+ <string name="kilobyteShort" msgid="2214285521564195803">"KB"</string>
+ <string name="megabyteShort" msgid="6649361267635823443">"MB"</string>
+ <string name="gigabyteShort" msgid="7515809460261287991">"GB"</string>
<string name="terabyteShort" msgid="1822367128583886496">"ТБ"</string>
<string name="petabyteShort" msgid="5651571254228534832">"ПБ"</string>
<string name="fileSizeSuffix" msgid="4233671691980131257">"<xliff:g id="NUMBER">%1$s</xliff:g> <xliff:g id="UNIT">%2$s</xliff:g>"</string>
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Вашата организација управува со уредов и можно е да го следи сообраќајот на мрежата. Допрете за детали."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Администраторот ги променил поставките за локација"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Допрете за да ги видите поставките за локација."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Детектор на земја"</string>
+ <string name="location_service" msgid="2439187616018455546">"Услуги според локација"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Услуга GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга за известување од сензорот"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Услуга за самрак"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Уредот ќе се избрише"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Апликацијата на администраторот не може да се користи. Уредот ќе се избрише сега.\n\nАко имате прашања, контактирајте со администраторот на организацијата."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Печатењето е оневозможено од <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Ќе се направи слика од екранот за извештајот за грешки за <xliff:g id="NUMBER_1">%d</xliff:g> секунда.</item>
<item quantity="other">Ќе се направи слика од екранот за извештајот за грешки за <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Се сними слика од екранот со извештај за грешка"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Не успеа да се сними слика од екранот со извештај за грешка"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Тивок режим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Звукот е исклучен"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Звукот е вклучен"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"пристапи кон наредби на давателот на дополнителна локација"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Овозможува апликацијата да пристапи кон дополнителни наредби на давател на локација. Ова може да овозможи апликацијата да го попечи функционирањето на GPS или други извори на локација."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"пристап до прецизната локација само во преден план"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Апликацијава може да ја добие вашата точна локација само кога е во преден план. Услугите според локација мора да се вклучени и достапни на уредот за да може да ги користи апликацијата. Ова може да го зголеми трошењето на батеријата."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Апликацијава може да ја добие вашата прецизна локација од „Услугите според локација“ кога се користи. „Услугите според локација“ за уредот мора да се вклучени ако сакате апликацијата да ја добие локацијата. Ова може да го зголеми користењето на батеријата."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"пристап до приближната локација само во преден план"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Апликацијава може да ја добие вашата приближна локација само кога е во преден план. Услугите според локација мора да се вклучени и достапни на уредот за да може да ги користи апликацијата."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Апликацијава може да ја добие вашата приближна локација од „Услугите според локација“ кога се користи. „Услугите според локација“ за уредот мора да се вклучени ако сакате апликацијата да ја добие локацијата."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"пристап до локацијата во заднина"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Оваа апликација, покрај тоа што може да пристапува до локацијата кога е во преден план, има пристап и кога се извршува во заднина."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Апликацијава може да пристапува до локацијата во секое време, дури и кога не се користи."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"менува аудио поставки"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Овозможува апликацијата да ги менува глобалните аудио поставки, како што се јачината на звукот и кој звучник се користи за излез."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"снимај аудио"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Апликацијава може да фотографира и да снима видеа со камерата во секое време."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволете апликацијата или услугата да пристапува до системските камери за да фотографира и да снима видеа"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Оваа привилегирана | системска апликација може да фотографира и да снима видеа со системската камера во секое време. Потребно е апликацијата да ја има и дозволата android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволете апликацијатa или услугата да прима повратни повици за отворањето или затворањето на уредите со камера."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Оваа апликација за потпис може да прима повратни повици кога кој било уред со камера (од некој пакет за апликации) е отворен или затворен."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"контролирај вибрации"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Дозволува апликацијата да ги контролира вибрациите."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ѝ дозволува на апликацијата да пристапи до состојбата на вибрации."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дозволете ѝ на апликацијата да ги пренасочи повиците преку системот за да го подобри искуството при јавувањето."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"гледање и контролирање повици преку системот."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Дозволува апликацијата да гледа и контролира тековни повици на уредот. Ова вклучува информации како телефонски броеви за повици и состојбата на повиците."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"изземање од ограничувања за снимање аудио"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Изземете ја апликацијата од ограничувања за снимање аудио."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"продолжување повик од друга апликација"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Овозможува апликацијата да продолжи повик започнат на друга апликација."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"да чита телефонски броеви"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Ѝ дозволува на апликацијата да пристапи до телефонските броеви на уредот."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"оставете го екранот на автомобилот вклучен"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"спречи режим на штедење кај таблет"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"го спречува вашиот уред Android TV да влезе во режим на мирување"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"спречи телефон од режим на штедење"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дозволува апликацијата да го држи екранот на автомобилот вклучен."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Дозволува апликацијата да го спречи таблетот да не заспие."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дозволува апликацијата да го спречи вашиот уред Android TV да влезе во режим на мирување."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Дозволува апликацијата да го спречи телефонот да не заспие."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Обидете се повторно."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Не се запишани отпечатоци."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Уредов нема сензор за отпечатоци."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензорот е привремено оневозможен."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Прст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ликот не може да се потврди. Обидете се повторно."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Не сте поставиле „Отклучување со лик“."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"„Отклучувањето со лик“ не е поддржано на уредов."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензорот е привремено оневозможен."</string>
<string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1117,7 +1128,7 @@
<string name="define_desc" msgid="6916651934713282645">"Дефинирајте го избраниот текст"</string>
<string name="low_internal_storage_view_title" msgid="9024241779284783414">"Капацитетот е речиси полн"</string>
<string name="low_internal_storage_view_text" msgid="8172166728369697835">"Некои системски функции може да не работат"</string>
- <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Нема доволно меморија во системот. Проверете дали има слободен простор од 250 МБ и рестартирајте."</string>
+ <string name="low_internal_storage_view_text_no_boot" msgid="7368968163411251788">"Нема доволно меморија во системот. Проверете дали има слободен простор од 250 MB и рестартирајте."</string>
<string name="app_running_notification_title" msgid="8985999749231486569">"<xliff:g id="APP_NAME">%1$s</xliff:g> работи"</string>
<string name="app_running_notification_text" msgid="5120815883400228566">"Допрете за повеќе информации или за сопирање на апликацијата."</string>
<string name="ok" msgid="2646370155170753815">"Во ред"</string>
@@ -1167,7 +1178,7 @@
<string name="aerr_application_repeated" msgid="7804378743218496566">"<xliff:g id="APPLICATION">%1$s</xliff:g> постојано запира"</string>
<string name="aerr_process_repeated" msgid="1153152413537954974">"<xliff:g id="PROCESS">%1$s</xliff:g> постојано запира"</string>
<string name="aerr_restart" msgid="2789618625210505419">"Отвори ја апликацијата повторно"</string>
- <string name="aerr_report" msgid="3095644466849299308">"Испрати повратни информации"</string>
+ <string name="aerr_report" msgid="3095644466849299308">"Испратете повратни информации"</string>
<string name="aerr_close" msgid="3398336821267021852">"Затвори"</string>
<string name="aerr_mute" msgid="2304972923480211376">"Исклучи го звукот додека уредот не се рестартира"</string>
<string name="aerr_wait" msgid="3198677780474548217">"Почекај"</string>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобилната мрежа нема интернет-пристап"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Мрежата нема интернет-пристап"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Не може да се пристапи до приватниот DNS-сервер"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Поврзано"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> има ограничена поврзливост"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Допрете за да се поврзете и покрај тоа"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Префрлено на <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Поврзано е отстранување грешки преку USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Допрете за да го исклучите"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Изберете за да се оневозможи отстранување грешки на USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Безжичното отстранување грешки е поврзано"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Допрете за да се исклучи безжичното отстранување грешки"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изберете за да се оневозможи безжично отстранување грешки."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Овозможен е режимот на рамка за тестирање"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Извршете фабричко ресетирање за да го оневозможите режимот на рамка за тестирање."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Сериската конзола е овозможена"</string>
@@ -1623,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Услугата од преден план започната во заднина од <xliff:g id="PACKAGENAME">%1$s</xliff:g> нема да има дозола за „додека се користи“ во идните R-верзии. Погледнете на go/r-bg-fgs-restriction и испратете извештај за грешка."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да го зголемиме звукот над препорачаното ниво?\n\nСлушањето звуци со голема јачина подолги периоди може да ви го оштети сетилото за слух."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Да се користи кратенка за „Пристапност“?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Кога е вклучена кратенката, ако ги притиснете двете копчиња за јачина на звук во времетраење од 3 секунди, ќе се стартува функција за пристапност."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Дали дозволувате <xliff:g id="SERVICE">%1$s</xliff:g> да има целосна контрола врз вашиот уред?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако вклучите <xliff:g id="SERVICE">%1$s</xliff:g>, уредот нема да го користи заклучувањето на екранот за да го подобри шифрирањето на податоците."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Целосната контрола е соодветна за апликации што ви помагаат со потребите за пристапност, но не и за повеќето апликации."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Приказ и контрола на екранот"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да ги чита сите содржини на екранот и да прикажува содржини на други апликации."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Приказ и изведување дејства"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да ги следи вашите интеракции со апликациите или хардверскиот сензор и да комуницира со апликациите во ваше име."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Допрете на функција за да почнете да ја користите:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Изберете ги апликациите што ќе ги користите со копчето за пристапност"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Изберете ги апликациите што ќе ги користите со кратенка за копчето за јачина на звук"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> е исклучена"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Изменете ги кратенките"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Откажи"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Исклучи ја кратенката"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи кратенка"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија на бои"</string>
@@ -1847,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Некатегоризирано"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ја поставивте важноста на известувањава."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ова е важно заради луѓето кои се вклучени."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Приспособено известување за апликација"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Дозволувате <xliff:g id="APP">%1$s</xliff:g> да создаде нов корисник со <xliff:g id="ACCOUNT">%2$s</xliff:g>? (Веќе постои корисник со оваа сметка.)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Дозволувате <xliff:g id="APP">%1$s</xliff:g> да создаде нов корисник со <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Додај јазик"</string>
@@ -2018,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени за пристапност"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Насловна лента на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е ставен во корпата ОГРАНИЧЕНИ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Службени"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Личен приказ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Работен приказ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Не може да се споделува со работни апликации"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Не може да се споделува со лични апликации"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT-администраторот го блокирал споделувањето помеѓу лични и работни профили"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Не може да се пристапи до работните апликации"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT-администраторот не ви дозволува прегледување лични содржини во работни апликации"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Не може да се пристапи до личните апликации"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT-администраторот не ви дозволува прегледување работни содржини во лични апликации"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Вклучете го работниот профил за да споделувате содржини"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Вклучете го работниот профил за да прегледувате содржини"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Нема достапни апликации"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Вклучи"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Снимајте или пуштајте аудио во телефонски повици"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дозволува апликацијава да снима или да пушта аудио во телефонски повици кога е назначена како стандардна апликација за бирање."</string>
</resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index ccc6b31..fe8679c 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -191,10 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"വ്യക്തിപരമായ ഉപയോഗത്തിനായി, ഉപകരണത്തിന്റെ ഔദ്യോഗിക ഉപയോഗം അഡ്മിൻ അവസാനിപ്പിച്ചു"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"ഉപകരണം മാനേജുചെയ്യുന്നുണ്ട്"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"നിങ്ങളുടെ സ്ഥാപനമാണ് ഈ ഉപകരണം മാനേജുചെയ്യുന്നത്, നെറ്റ്വർക്ക് ട്രാഫിക്ക് നിരീക്ഷിക്കുകയും ചെയ്തേക്കാം, വിശദാംശങ്ങൾ അറിയാൻ ടാപ്പുചെയ്യുക."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
- <skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"നിങ്ങളുടെ അഡ്മിൻ ലൊക്കേഷൻ ക്രമീകരണം മാറ്റി"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"നിങ്ങളുടെ ലൊക്കേഷൻ ക്രമീകരണം കാണാൻ ടാപ്പ് ചെയ്യുക."</string>
+ <string name="country_detector" msgid="7023275114706088854">"രാജ്യം കണ്ടെത്താനുള്ള സംവിധാനം"</string>
+ <string name="location_service" msgid="2439187616018455546">"ലൊക്കേഷൻ സേവനം"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS സേവനം"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"സെൻസർ അറിയിപ്പ് സേവനം"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"സന്ധ്യാസമയത്തെ സേവനം"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"നിങ്ങളുടെ ഉപകരണം മായ്ക്കും"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"അഡ്മിൻ ആപ്പ് ഉപയോഗിക്കാനാകില്ല. നിങ്ങളുടെ ഉപകരണം ഇപ്പോൾ മായ്ക്കപ്പെടും.\n\nനിങ്ങൾക്ക് ചോദ്യങ്ങൾ ഉണ്ടെങ്കിൽ, നിങ്ങളുടെ സ്ഥാപനത്തിന്റെ അഡ്മിനെ ബന്ധപ്പെടുക."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> പ്രിന്റിംഗ് പ്രവർത്തനരഹിതമാക്കി."</string>
@@ -247,6 +250,8 @@
<item quantity="other">ബഗ് റിപ്പോർട്ടിനായി <xliff:g id="NUMBER_1">%d</xliff:g> സെക്കൻഡിൽ സ്ക്രീൻഷോട്ട് എടുക്കുന്നു.</item>
<item quantity="one">ബഗ് റിപ്പോർട്ടിനായി <xliff:g id="NUMBER_0">%d</xliff:g> സെക്കൻഡിൽ സ്ക്രീൻഷോട്ട് എടുക്കുന്നു.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ബഗ് റിപ്പോർട്ടിന്റെ സ്ക്രീൻഷോട്ട് എടുത്തു"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ബഗ് റിപ്പോർട്ടിന്റെ സ്ക്രീൻഷോട്ട് എടുക്കാനായില്ല"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"നിശബ്ദ മോഡ്"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ശബ്ദം ഓഫാണ്"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ശബ്ദം ഓണാണ്"</string>
@@ -414,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ലൊക്കേഷൻ ദാതാവിന്റെ അധിക കമാൻഡുകൾ ആക്സസ്സുചെയ്യുക"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ലൊക്കേഷൻ ദാതാവിന്റെ അധിക കമാൻഡുകൾ ആക്സസ്സുചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് GPS-ന്റെയോ മറ്റ് ലൊക്കേഷൻ ഉറവിടങ്ങളുടെയോ പ്രവർത്തനത്തിൽ ഇടപെടാൻ അപ്ലിക്കേഷനെ അനുവദിക്കാനിടയുണ്ട്."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ഫോർഗ്രൗണ്ടിൽ മാത്രം കൃത്യമായ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ഫോർഗ്രൗണ്ടിൽ ഉള്ളപ്പോൾ മാത്രമേ ഈ ആപ്പിന് നിങ്ങളുടെ കൃത്യമായ ലൊക്കേഷൻ ലഭിക്കൂ. ഈ ആപ്പിന് ലൊക്കേഷൻ സേവനങ്ങൾ ഉപയോഗിക്കാൻ കഴിയണമെങ്കിൽ, അവ നിങ്ങളുടെ ഉപകരണത്തിൽ ലഭ്യമായിരിക്കുകയും ഓണായിരിക്കുകയും വേണം. ഇത് ബാറ്ററി ഉപഭോഗം വർദ്ധിപ്പിച്ചേക്കാം."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ആപ്പ് ഉപയോഗത്തിലിരിക്കുമ്പോൾ ലൊക്കേഷൻ സേവനങ്ങളിൽ നിന്ന് നിങ്ങളുടെ കൃത്യമായ ലൊക്കേഷൻ ഈ ആപ്പിന് നേടാനാവും. ആപ്പിന് ലൊക്കേഷൻ ലഭിക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിനുള്ള ലൊക്കേഷൻ സേവനങ്ങൾ ഓണാക്കേണ്ടതുണ്ട്. ഇത് ബാറ്ററി ഉപയോഗം വർദ്ധിപ്പിച്ചേക്കാം."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ഫോർഗ്രൗണ്ടിൽ മാത്രം ഏകദേശ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ഫോർഗ്രൗണ്ടിൽ ഉള്ളപ്പോൾ മാത്രമേ ഈ ആപ്പിന് നിങ്ങളുടെ ഏകദേശ ലൊക്കേഷൻ ലഭിക്കൂ. ഈ ആപ്പിന് ലൊക്കേഷൻ സേവനങ്ങൾ ഉപയോഗിക്കാൻ കഴിയണമെങ്കിൽ, അവ നിങ്ങളുടെ ഉപകരണത്തിൽ ലഭ്യമായിരിക്കുകയും ഓണായിരിക്കുകയും വേണം."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ആപ്പ് ഉപയോഗത്തിലിരിക്കുമ്പോൾ ലൊക്കേഷൻ സേവനങ്ങളിൽ നിന്ന് നിങ്ങളുടെ ഏകദേശ ലൊക്കേഷൻ ഈ ആപ്പിന് നേടാനാവും. ആപ്പിന് ലൊക്കേഷൻ ലഭിക്കാൻ നിങ്ങളുടെ ഉപകരണത്തിനുള്ള ലൊക്കേഷൻ സേവനങ്ങൾ ഓണാക്കേണ്ടതുണ്ട്."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"പശ്ചാത്തലത്തിൽ ലൊക്കേഷൻ ആക്സസ് ചെയ്യുക"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"പശ്ചാത്തലത്തിൽ പ്രവർത്തിക്കുമ്പോൾ, ഫോർഗ്രൗണ്ട് ലൊക്കേഷന് പുറമെ, ലൊക്കേഷൻ ആക്സസ് ചെയ്യാനും ഈ ആപ്പിന് കഴിയും."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ആപ്പ് ഉപയോഗത്തിലല്ലെങ്കിൽ പോലും ഈ ആപ്പിന് ഏത് സമയത്തും ലൊക്കേഷൻ ആക്സസ് ചെയ്യാം."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"നിങ്ങളുടെ ഓഡിയോ ക്രമീകരണങ്ങൾ മാറ്റുക"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"വോളിയവും ഔട്ട്പുട്ടിനായി ഉപയോഗിച്ച സ്പീക്കറും പോലുള്ള ആഗോള ഓഡിയോ ക്രമീകരണങ്ങൾ പരിഷ്ക്കരിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ഓഡിയോ റെക്കോർഡ് ചെയ്യുക"</string>
@@ -431,10 +436,13 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ഏതുസമയത്തും ക്യാമറ ഉപയോഗിച്ചുകൊണ്ട് ചിത്രങ്ങൾ എടുക്കാനും വീഡിയോകൾ റെക്കോർഡുചെയ്യാനും ഈ ആപ്പിന് കഴിയും."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ചിത്രങ്ങളും വീഡിയോകളും എടുക്കാൻ, സിസ്റ്റം ക്യാമറ ആക്സസ് ചെയ്യുന്നതിന് ആപ്പിനെയോ സേവനത്തെയോ അനുവദിക്കുക"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"സിസ്റ്റം ക്യാമറ ഉപയോഗിച്ച് ഏത് സമയത്തും ചിത്രങ്ങളെടുക്കാനും വീഡിയോകൾ റെക്കോർഡ് ചെയ്യാനും ഈ വിശേഷാധികാര | സിസ്റ്റം ആപ്പിന് കഴിയും. ആപ്പിലും android.permission.CAMERA അനുമതി ഉണ്ടായിരിക്കണം"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"വൈബ്രേറ്റുചെയ്യൽ നിയന്ത്രിക്കുക"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"വൈബ്രേറ്റർ നിയന്ത്രിക്കുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"വൈബ്രേറ്റ് ചെയ്യൽ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"ഫോൺ നമ്പറുകളിലേക്ക് നേരിട്ട് വിളിക്കുക"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"നിങ്ങളുടെ ഇടപെടൽ ഇല്ലാതെ ഫോൺ നമ്പറുകളിലേക്ക് കോൾ ചെയ്യാൻ അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു. ഇത് അപ്രതീക്ഷിത നിരക്കുകൾക്കോ കോളുകൾക്കോ ഇടയാക്കാം. ഇത് അടിയന്തര നമ്പറുകളിലേക്ക് വിളിക്കാൻ അപ്ലിക്കേഷനെ അനുവദിക്കില്ലെന്ന കാര്യം ശ്രദ്ധിക്കുക. ക്ഷുദ്രകരമായ അപ്ലിക്കേഷനുകൾ നിങ്ങളുടെ സ്ഥിരീകരണമില്ലാതെ കോളുകൾ ചെയ്യുന്നത് പണച്ചെലവിനിടയാക്കാം."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS കോൾ സേവനം ആക്സസ് ചെയ്യുക"</string>
@@ -445,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"കോളിംഗ് അനുഭവം മെച്ചപ്പെടുത്തുന്നതിനായി തങ്ങളുടെ കോളുകൾ സിസ്റ്റത്തിലേയ്ക്ക് വഴിതിരിച്ചുവിടാൻ ആപ്പുകളെ അനുവദിക്കുന്നു."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"സിസ്റ്റത്തിലൂടെ കോളുകൾ കാണുകയും നിയന്ത്രിക്കുകയും ചെയ്യുക."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ഉപകരണത്തിൽ നിലവിലുള്ള കോളുകൾ കാണാനും നിയന്തിക്കാനും ആപ്പിനെ അനുവദിക്കുന്നു. കോളുകൾക്കുള്ള നമ്പറുകളും അവയുടെ നിലയും പോലെയുള്ള വിവരങ്ങൾ ഇതിൽ ഉൾപ്പെടുന്നു."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"മറ്റൊരു ആപ്പിൽ നിന്നുള്ള കോൾ തുടരുക"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"മറ്റൊരു ആപ്പിൽ ആരംഭിച്ച കോൾ തുടരാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ഫോൺ നമ്പറുകൾ റീഡുചെയ്യൽ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ഉപകരണത്തിന്റെ ഫോൺ നമ്പറുകൾ ആക്സസ് ചെയ്യാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"കാറിലെ സ്ക്രീൻ ഓണാക്കി വയ്ക്കുക"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ഉറങ്ങുന്നതിൽ നിന്ന് ടാബ്ലെറ്റിനെ തടയുക"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"നിങ്ങളുടെ Android ടിവി ഉറങ്ങുന്നതിൽ നിന്ന് തടയുക"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ഉറങ്ങുന്നതിൽ നിന്ന് ഫോണിനെ തടയുക"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"കാറിലെ സ്ക്രീൻ ഓണാക്കി വയ്ക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ടാബ്ലെറ്റ് സുഷുപ്തിയിലാകുന്നതിൽ നിന്നും തടയുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"നിങ്ങളുടെ Android ടിവിയെ ഉറങ്ങുന്നതിൽ നിന്ന് തടയാൻ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ഫോൺ സുഷുപ്തിയിലാകുന്നതിൽ നിന്നും തടയുന്നതിന് അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string>
@@ -549,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"വീണ്ടും ശ്രമിക്കൂ."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"വിരലടയാളങ്ങൾ എൻറോൾ ചെയ്തിട്ടില്ല."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ഈ ഉപകരണത്തിൽ ഫിംഗർപ്രിന്റ് സെൻസറില്ല."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"സെൻസർ താൽക്കാലികമായി പ്രവർത്തനരഹിതമാക്കി."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"കൈവിരൽ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"മുഖം പരിശോധിക്കാൻ കഴിയില്ല. വീണ്ടും ശ്രമിക്കൂ."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് സജ്ജീകരിച്ചില്ല."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"മുഖം തിരിച്ചറിഞ്ഞുള്ള അൺലോക്ക് ഈ ഉപകരണം പിന്തുണയ്ക്കുന്നില്ല."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"സെൻസർ താൽക്കാലികമായി പ്രവർത്തനരഹിതമാക്കി."</string>
<string name="face_name_template" msgid="3877037340223318119">"മുഖം <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1256,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"മൊബെെൽ നെറ്റ്വർക്കിന് ഇന്റർനെറ്റ് ആക്സസ് ഇല്ല"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"നെറ്റ്വർക്കിന് ഇന്റർനെറ്റ് ആക്സസ് ഇല്ല"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"സ്വകാര്യ DNS സെർവർ ആക്സസ് ചെയ്യാനാവില്ല"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"കണക്റ്റ് ചെയ്തു"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> എന്നതിന് പരിമിതമായ കണക്റ്റിവിറ്റി ഉണ്ട്"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ഏതുവിധേനയും കണക്റ്റ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> എന്നതിലേക്ക് മാറി"</string>
@@ -1321,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ഡീബഗ്ഗിംഗ് കണക്റ്റ് ചെയ്തു"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB ഡീബഗ്ഗിംഗ് ഓഫാക്കാൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ഡീബഗ്ഗുചെയ്യൽ പ്രവർത്തനരഹിതമാക്കാൻ തിരഞ്ഞെടുക്കുക."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ കണക്റ്റ് ചെയ്തിരിക്കുന്നു"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ ഓഫാക്കാൻ ടാപ്പ് ചെയ്യുക"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ പ്രവർത്തനരഹിതമാക്കാൻ തിരഞ്ഞെടുക്കുക."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"പരിശോധനാ സംവിധാനങ്ങൾ മോഡ് പ്രവർത്തനക്ഷമമാക്കി"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"പരിശോധനാ സംവിധാന മോഡ് പ്രവർത്തനരഹിതമാക്കാൻ ഫാക്ടറി പുനഃക്രമീകരണം നിർവഹിക്കുക."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"സീരിയൽ കൺസോൾ പ്രവർത്തനക്ഷമമാക്കി"</string>
@@ -1624,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> എന്നതിൽ നിന്നുള്ള പശ്ചാത്തലത്തിൽ ആരംഭിച്ച് ഫോർഗ്രൗണ്ടിൽ വരുന്ന സേവനത്തിന് ഭാവി R ബിൽഡുകളിൽ, \'ഉപയോഗിക്കുമ്പോൾ മാത്രമുള്ള അനുമതി\' ഉണ്ടായിരിക്കില്ല. go/r-bg-fgs-restriction കണ്ട് ബഗ് റിപ്പോർട്ട് ഫയൽ ചെയ്യുക."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"മുകളിൽക്കൊടുത്തിരിക്കുന്ന ശുപാർശചെയ്ത ലെവലിലേക്ക് വോളിയം വർദ്ധിപ്പിക്കണോ?\n\nഉയർന്ന വോളിയത്തിൽ ദീർഘനേരം കേൾക്കുന്നത് നിങ്ങളുടെ ശ്രവണ ശേഷിയെ ദോഷകരമായി ബാധിക്കാം."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ഉപയോഗസഹായി കുറുക്കുവഴി ഉപയോഗിക്കണോ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"കുറുക്കുവഴി ഓണായിരിക്കുമ്പോൾ, രണ്ട് വോളിയം ബട്ടണുകളും 3 സെക്കൻഡ് നേരത്തേക്ക് അമർത്തുന്നത് ഉപയോഗസഹായി ഫീച്ചർ ആരംഭിക്കും."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ഉപയോഗസഹായി ആവശ്യങ്ങൾക്കായി നിങ്ങളെ സഹായിക്കുന്ന ആപ്പുകൾക്ക് പൂർണ്ണ നിയന്ത്രണം അനുയോജ്യമാണെങ്കിലും മിക്ക ആപ്പുകൾക്കും അനുയോജ്യമല്ല."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"സ്ക്രീൻ കാണുക, നിയന്ത്രിക്കുക"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ഇതിന് സ്ക്രീനിലെ എല്ലാ ഉള്ളടക്കവും വായിക്കാനും മറ്റ് ആപ്പുകളിൽ ഉള്ളടക്കം പ്രദർശിപ്പിക്കാനുമാവും."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"കാണുക, പ്രവർത്തനങ്ങൾ നിർവഹിക്കുക"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ഇതിന് ഒരു ആപ്പുമായോ ഹാർഡ്വെയർ സെൻസറുമായോ ഉള്ള നിങ്ങളുടെ ആശയവിനിമയങ്ങൾ ട്രാക്ക് ചെയ്യാനും നിങ്ങളുടെ പേരിൽ ആശയവിനിമയം നടത്താനും കഴിയും."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"അനുവദിക്കൂ"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"നിരസിക്കുക"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"കുറുക്കുവഴികൾ തിരുത്തുക"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"റദ്ദാക്കുക"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"കുറുക്കുവഴി ഓഫാക്കുക"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"കുറുക്കുവഴി ഉപയോഗിക്കുക"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"വർണ്ണ വിപര്യയം"</string>
@@ -1848,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"വർഗ്ഗീകരിച്ചിട്ടില്ലാത്ത"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ഈ അറിയിപ്പുകളുടെ പ്രാധാന്യം നിങ്ങൾ സജ്ജീകരിച്ചു."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ഉൾപ്പെട്ടിട്ടുള്ള ആളുകളെ കണക്കിലെടുക്കുമ്പോള് ഇത് പ്രധാനപ്പെട്ടതാണ്."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ഇഷ്ടാനുസൃത ആപ്പ് അറിയിപ്പുകൾ"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> എന്ന അക്കൗണ്ട് (ഈ അക്കൗണ്ട് ഉപയോഗിക്കുന്ന ഒരു ഉപയോക്താവ് നിലവിലുണ്ട്) ഉപയോഗിച്ച് പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ <xliff:g id="APP">%1$s</xliff:g> എന്നതിനെ അനുവദിക്കണോ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> എന്ന അക്കൗണ്ട് ഉപയോഗിച്ച് പുതിയ ഉപയോക്താവിനെ സൃഷ്ടിക്കാൻ <xliff:g id="APP">%1$s</xliff:g> എന്നതിനെ അനുവദിക്കണോ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ഒരു ഭാഷ ചേർക്കുക"</string>
@@ -2019,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ഉപയോഗസഹായി മെനു"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിന്റെ അടിക്കുറിപ്പ് ബാർ."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> നിയന്ത്രിത ബക്കറ്റിലേക്ക് നീക്കി"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"വ്യക്തിപരമായത്"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ജോലിസ്ഥലം"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"വ്യക്തിപര കാഴ്ച"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ഔദ്യോഗിക കാഴ്ച"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ഔദ്യോഗിക ആപ്പുകൾ ഉപയോഗിച്ച് പങ്കിടാനാവില്ല"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"വ്യക്തിപരമാക്കിയ ആപ്പുകൾ ഉപയോഗിച്ച് പങ്കിടാനാവില്ല"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"വ്യക്തിപരവും ഔദ്യോഗികവുമായ പ്രൊഫെെലുകൾക്കിടയിലെ പങ്കിടലിനെ ഐടി അഡ്മിൻ ബ്ലോക്ക് ചെയ്തു"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"ഔദ്യോഗിക ആപ്പുകൾ ആക്സസ് ചെയ്യാനാകില്ല"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ഔദ്യോഗിക ആപ്പുകളിൽ വ്യക്തിപര ഉള്ളടക്കം കാണാൻ ഐടി അഡ്മിൻ നിങ്ങളെ അനുവദിക്കുന്നില്ല"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"വ്യക്തിപര ആപ്പുകൾ ആക്സസ് ചെയ്യാനാകില്ല"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"വ്യക്തിപര ആപ്പുകളിൽ ഔദ്യോഗിക ഉള്ളടക്കം കാണാൻ ഐടി അഡ്മിൻ നിങ്ങളെ അനുവദിക്കുന്നില്ല"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ഉള്ളടക്കം പങ്കിടാൻ ഔദ്യോഗിക പ്രൊഫെെൽ ഓണാക്കുക"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ഉള്ളടക്കം കാണാൻ ഔദ്യോഗിക പ്രൊഫെെൽ ഓണാക്കുക"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ആപ്പുകളൊന്നും ലഭ്യമല്ല"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ഓണാക്കുക"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ടെലിഫോൺ കോളുകൾ ചെയ്യുമ്പോൾ റെക്കോർഡ് ചെയ്യുക അല്ലെങ്കിൽ ഓഡിയോ പ്ലേ ചെയ്യുക"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ഡിഫോൾട്ട് ഡയലർ ആപ്പായി അസെെൻ ചെയ്യുന്ന സമയത്ത്, ടെലിഫോൺ കോളുകൾ ചെയ്യുമ്പോൾ റെക്കോർഡ് ചെയ്യാൻ അല്ലെങ്കിൽ ഓഡിയോ പ്ലേ ചെയ്യാൻ ഈ ആപ്പിനെ അനുവദിക്കുന്നു."</string>
</resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index a21f6ec..58c1671 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Таны байгууллага энэ төхөөрөмжийг удирдаж, сүлжээний ачааллыг хянадаг. Дэлгэрэнгүй мэдээлэл авах бол товшино уу."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Таны админ байршлын тохиргоог өөрчилсөн байна"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Байршлын тохиргоогоо харахын тулд товшино уу."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Улс тодорхойлогч"</string>
+ <string name="location_service" msgid="2439187616018455546">"Байршлын үйлчилгээ"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS үйлчилгээ"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Мэдрэгчийн мэдэгдлийн үйлчилгээ"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight үйлчилгээ"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Таны төхөөрөмж устах болно."</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Админ аппыг ашиглах боломжгүй. Таны төхөөрөмжийг одоо устгана.\n\nХэрэв танд асуулт байгаа бол байгууллагынхаа админтай холбогдоно уу."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> хэвлэх үйлдлийг идэвхгүй болгосон."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Алдааны тайлангийн дэлгэцийн зургийг <xliff:g id="NUMBER_1">%d</xliff:g> секундад авна.</item>
<item quantity="one">Алдааны тайлангийн дэлгэцийн зургийг <xliff:g id="NUMBER_0">%d</xliff:g> секундад авна.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Алдааны мэдээтэй дэлгэцийн зургийг дарлаа"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Алдааны мэдээтэй дэлгэцийн зургийг дарж чадсангүй"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Дуугүй горим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Дуу хаагдсан"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Дуу асав"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"байршил нийлүүлэгчийн нэмэлт тушаалд хандах"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Апп нь байршил нийлүүлэгчийн нэмэлт тушаалд хандах боломжтой. Энэ нь апп-д GPS эсвэл бусад байршлын үйлчилгээний ажиллагаанд нөлөөлөх боломжийг олгоно."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"нарийвчилсан байршилд зөвхөн нүүр хэсэгт хандах"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Энэ апп нь зөвхөн дэлгэц дээр байх үедээ л таны байршлыг нарийн тогтоох боломжтой. Байршлын үйлчилгээ нь таны төхөөрөмж дээр асаалттай, апп ашиглах боломжтой байх ёстой. Энэ нь батарейны хэрэглээг нэмэгдүүлж болзошгүй."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Энэ апп нь түүнийг ашиглах үед байршлын үйлчилгээнээс таны нарийвчилсан байршлыг тогтоох боломжтой. Аппад байршлыг тогтоохын тулд таны төхөөрөмжийн байршлын үйлчилгээг асаасан байх ёстой. Энэ нь батарей ашиглалтыг нэмэгдүүлж болзошгүй."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"зөвхөн дэлгэц дээр байхад ойролцоо байршилд хандах"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Энэ апп нь зөвхөн дэлгэц дээр байх үедээ л таны байршлыг ойролцоогоор тогтоох боломжтой. Байршлын үйлчилгээ нь таны төхөөрөмж дээр асаалттай, апп ашиглах боломжтой байх ёстой."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Энэ апп нь түүнийг ашиглах үед байршлын үйлчилгээнээс таны байршлыг ойролцоогоор тогтоох боломжтой. Аппад байршлыг тогтоохын тулд таны төхөөрөмжийн байршлын үйлчилгээг асаасан байх ёстой."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"байршилд ард хандах"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Энэ апп нь дэлгэц дээр байхдаа байршилд хандахаас гадна арын хэсэгт ажиллах үедээ байршилд хандах боломжтой."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Энэ апп нь дурын үед, түүнийг ашиглаагүй байх үед ч байршилд хандах боломжтой."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Аудио тохиргоо солих"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Апп нь дууны хэмжээ, спикерын гаралтад ашиглагдах глобал аудио тохиргоог өөрчлөх боломжтой."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"аудио бичих"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Энэ апп ямар ч үед камер ашиглан зураг авж, видео хийх боломжтой."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Видео болон зураг авахын тулд апп эсвэл үйлчилгээнд хандахыг системийн камерт зөвшөөрөх"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Энэ хамгаалагдсан | системийн апп нь системийн камер ашиглан ямар ч үед зураг авж, видео бичих боломжтой. Аппыг ашиглахын тулд android.permission.CAMERA-н зөвшөөрөл мөн шаардлагатай"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Аппликэйшн эсвэл үйлчилгээнд камерын төхөөрөмжүүдийг нээж эсвэл хааж байгаа тухай залгасан дуудлага хүлээн авахыг зөвшөөрөх."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Гарын үсгийн энэ апп нь дурын камерын төхөөрөмжийг нээх (ямар аппликэйшний багцаар болох) эсвэл хаах үед буцааж залгасан дуудлага хүлээн авах боломжтой."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"чичиргээг удирдах"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Апп нь чичиргээг удирдах боломжтой."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Аппыг чичиргээний төлөвт хандахыг зөвшөөрдөг."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дуудлагыг сайжруулахын тулд дуудлагаа системээр дамжуулах зөвшөөрлийг апп-д олгодог."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"систем дэх дуудлагыг харах болон хянах."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Аппад төхөөрөмж дээр хийж буй дуудлагыг харах болон хянахыг зөвшөөрдөг. Үүнд дуудлагын дугаар болон дуудлагын төлөв зэрэг мэдээллийг агуулдаг."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"аудио бичих хязгаарлалтаас гаргах"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Аудио бичихийн тулд аппыг хязгаарлалтаас гаргана уу."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"дуудлагыг өөр аппаас үргэлжлүүлэх"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Аппад өөр аппад эхлүүлсэн дуудлагыг үргэлжлүүлэхийг зөвшөөрдөг."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"утасны дугаарыг унших"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Төхөөрөмжийн утасны дугаарт хандах зөвшөөрлийг апп-д олгоно."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"машины дэлгэцийг асаалттай байлгах"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"таблетыг унтуулахгүй байлгах"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"таны Android TВ төхөөрөмжийг идэвхгүй болохоос сэргийлэх"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"утсыг унтуулахгүй байлгах"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Аппад машины дэлгэцийг асаалттай байлгахыг зөвшөөрдөг."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Апп нь таблетыг унтахаас сэргийлэх боломжтой"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Аппад таны Android ТВ төхөөрөмжийг идэвхгүй болохоос сэргийлэхийг зөвшөөрнө."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Апп нь утсыг унтахаас сэргийлэх боломжтой"</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Дахин оролдно уу."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Бүртгүүлсэн хурууны хээ алга."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Энэ төхөөрөмжид хурууны хээ мэдрэгч алга."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Мэдрэгчийг түр хугацаанд идэвхгүй болгосон."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Хурууны хээ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Царайг бататгаж чадсангүй. Дахин оролдоно уу."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Та царайгаар тайлахыг тохируулаагүй байна."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Царайгаар тайлахыг энэ төхөөрөмж дээр дэмждэггүй."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Мэдрэгчийг түр хугацаанд идэвхгүй болгосон."</string>
<string name="face_name_template" msgid="3877037340223318119">"Царай <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобайл сүлжээнд интернэт хандалт байхгүй байна"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Сүлжээнд интернэт хандалт байхгүй байна"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Хувийн DNS серверт хандах боломжгүй байна"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Холбогдсон"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> зарим үйлчилгээнд хандах боломжгүй байна"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Ямар ч тохиолдолд холбогдохын тулд товших"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> руу шилжүүлсэн"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB дебаг холбогдсон"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB дебаг хийхийг унтраахын тулд товшино уу"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB дебаг хийхийг идэвхгүй болгох бол сонгоно уу."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Утасгүй дебагийг холболоо"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Утасгүй дебагийг унтраахын тулд товшино уу"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Утасгүй дебагийг идэвхгүй болгохын тулд сонгоно уу."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Туршилтын цогц горимыг идэвхжүүлсэн"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Туршилтын цогц горимыг идэвхгүй болгохын тулд үйлдвэрийн төлөвт шинэчилнэ үү."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Цуваа консолыг идэвхжүүлсэн"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-н дэлгэц дээрх үйлчилгээг эхлүүлдэг дэвсгэр нь цаашид R хийцийн ашиглах үеийн зөвшөөрөлгүй болно. go/r-bg-fgs-restriction-г үзэж, алдааны мэдээ илгээнэ үү."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дууг санал болгосноос чанга болгож өсгөх үү?\n\nУрт хугацаанд чанга хөгжим сонсох нь таны сонсголыг муутгаж болно."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Хүртээмжийн товчлолыг ашиглах уу?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Товчлол асаалттай үед дууны түвшний хоёр товчлуурыг хамтад нь 3 секунд дарснаар хандалтын онцлогийг эхлүүлнэ."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>-д таны төхөөрөмжийг бүрэн хянахыг зөвшөөрөх үү?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Хэрэв та <xliff:g id="SERVICE">%1$s</xliff:g>-г асаавал таны төхөөрөмж өгөгдлийн шифрлэлтийг сайжруулахын тулд таны дэлгэцийн түгжээг ашиглахгүй."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Бүрэн хянах нь таны хандалтын үйлчилгээний шаардлагад тусалдаг аппуудад тохиромжтой боловч ихэнх аппад тохиромжгүй байдаг."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Харах болон хянах дэлгэц"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Энэ нь дэлгэц дээрх бүх контентыг унших болон контентыг бусад аппад харуулах боломжтой."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Үйлдлийг харах болон гүйцэтгэх"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Энэ нь таны апп болон техник хангамжийн мэдрэгчтэй хийх харилцан үйлдлийг хянах болон таны өмнөөс апптай харилцан үйлдэл хийх боломжтой."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Зөвшөөрөх"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Татгалзах"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Үүнийг ашиглаж эхлэхийн тулд онцлог дээр товшино уу:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Хандалтын товчлуурын тусламжтай ашиглах аппуудыг сонгоно уу"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Дууны түвшний түлхүүрийн товчлолын тусламжтай ашиглах аппуудыг сонгоно уу"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g>-г унтраалаа"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Товчлолуудыг засах"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Болих"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Болсон"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Товчлолыг унтраах"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Товчлол ашиглах"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Өнгө хувиргалт"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Ангилаагүй"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Та эдгээр мэдэгдлийн ач холбогдлыг тогтоосон."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Оролцсон хүмүүсээс шалтгаалан энэ нь өндөр ач холбогдолтой."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Аппын захиалгат мэдэгдэл"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>-д <xliff:g id="ACCOUNT">%2$s</xliff:g>-тай (ийм бүртгэлтэй хэрэглэгч аль хэдийн байна) шинэ хэрэглэгч үүсгэхийг зөвшөөрөх үү ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>-д <xliff:g id="ACCOUNT">%2$s</xliff:g>-тай шинэ хэрэглэгч үүсгэхийг зөвшөөрөх үү?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Хэл нэмэх"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Хандалтын цэс"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н гарчгийн талбар."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>-г ХЯЗГААРЛАСАН сагс руу орууллаа"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Хувийн"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Ажил"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Хувийн харагдах байдал"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Ажлын харагдах байдал"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ажлын аппуудтай хуваалцах боломжгүй"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Хувийн аппуудтай хуваалцах боломжгүй"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Таны IT админ хувийн болон ажлын профайлуудын хооронд хуваалцахыг блоклосон"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ажлын аппуудад хандах боломжгүй байна"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Таны IT админ ажлын аппууд дахь хувийн контентыг харахыг танд зөвшөөрөхгүй байна"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Хувийн аппуудад хандах боломжгүй байна"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Таны IT админ хувийн аппууд дахь ажлын контентыг харахыг танд зөвшөөрөхгүй байна"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Контентыг хуваалцахын тулд ажлын профайлыг асаана уу"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Контентыг харахын тулд ажлын профайлыг асаана уу"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Боломжтой апп алга байна"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Асаах"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Утасны дуудлагын үеэр аудио бичих эсвэл тоглуулах"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Энэ аппыг залгагч өгөгдмөл аппликэйшн болгосон үед түүнд утасны дуудлагын үеэр аудио бичих эсвэл тоглуулахыг зөвшөөрдөг."</string>
</resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index 5f392af..5a991ab 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"तुमची संस्था हे डिव्हाइस व्यवस्थापित करते आणि नेटवर्क रहदारीचे निरीक्षण करू शकते. तपशीलांसाठी टॅप करा."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"तुमच्या ॲडमिनने स्थान सेटिंग्ज बदलल्या आहेत"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"तुमची स्थान सेटिंग्ज पाहण्यासाठी टॅप करा."</string>
+ <string name="country_detector" msgid="7023275114706088854">"कंट्री डिटेक्टर"</string>
+ <string name="location_service" msgid="2439187616018455546">"स्थान सेवा"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS सेवा"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"सेंसर सूचना सेवा"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ट्वायलाइट सेवा"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"तुमचे डिव्हाइस मिटविले जाईल"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"प्रशासक अॅप वापरता येणार नाही. तुमचे डिव्हाइस आता साफ केले जाईल.\n\nतुम्हाला कुठलेही प्रश्न असल्यास, तुमच्या संस्थेच्या प्रशासकाशी संपर्क साधा."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> नी प्रिंट करणे बंद केले आहे."</string>
@@ -245,6 +250,8 @@
<item quantity="other">दोष अहवालासाठी <xliff:g id="NUMBER_1">%d</xliff:g> सेकंदांमध्ये स्क्रीनशॉट घेत आहे.</item>
<item quantity="one">दोष अहवालासाठी <xliff:g id="NUMBER_0">%d</xliff:g> सेकंदामध्ये स्क्रीनशॉट घेत आहे.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"बग रिपोर्टसह घेतलेला स्क्रीनशॉट"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"बग रिपोर्टसह स्क्रीनशॉट घेता आला नाही"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"मूक मोड"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ध्वनी बंद आहे"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ध्वनी चालू आहे"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"अतिरिक्त स्थान प्रदाता आदेश अॅक्सेस करा"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"अॅपला अतिरिक्त स्थान प्रदाता आदेशावर प्रवेश करण्याची अनुमती देते. हे कदाचित अॅपला GPS किंवा इतर स्थान स्रोत च्या ऑपरेशनमध्ये हस्तक्षेप करण्याची अनुमती देऊ शकते."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"फक्त फोरग्राउंडमध्ये अचूकपणे अॅक्सेस करा"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"हे अॅप फक्त फोरग्राउंडमध्ये असतानाच तुमचे अचूक स्थान मिळवू शकते. स्थातुमच्या डिव्हाइसवर स्थान सेवा सुरू असणे आणि उपलब्ध असणे आवश्यक आहे जेणेकरून ॲप त्यांचा वापर करू शकतील. यामुळे बॅटरी वापर वाढू शकतो."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"हे अॅप वापरात असताना स्थान सेवांकडून तुमचे अचूक स्थान मिळवू शकते. अॅपला स्थान मिळवता येण्यासाठी तुमच्या डिव्हाइसची स्थान सेवा सुरू करणे आवश्यक आहे. यामुळे बॅटरीचा वापर वाढू शकतो."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"फक्त फोअरग्राउंडमध्ये अचूक स्थान अॅक्सेस करा"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"हे अॅप फक्त फोरग्राउंडमध्ये असताना तुमचे अचूक स्थान मिळवू शकते. तुमच्या डिव्हाइसवर स्थान सेवा सुरू असणे आणि उपलब्ध असणे आवश्यक आहे जेणेकरून ॲप त्यांचा वापर करू शकतील."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"हे अॅप वापरात असताना स्थान सेवांकडून तुमचे अंदाजे स्थान मिळवू शकते. अॅपला स्थान मिळवता येण्यासाठी तुमच्या डिव्हाइसची स्थान सेवा सुरू करणे आवश्यक आहे."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"बॅकग्राउंडमध्ये स्थान अॅक्सेस करू शकतो"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"हे अॅप फोरग्राउंड स्थान ॲक्सेस व्यतिरिक्त, बॅकग्राउंडमध्ये सुरू असताना स्थान ॲक्सेस करू शकते."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"हे अॅप वापरात नसतानादेखील केव्हाही स्थान अॅक्सेस करू शकते."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"आपल्या ऑडिओ सेटिंग्ज बदला"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"व्हॉल्यूम आणि आउटपुटसाठी कोणता स्पीकर वापरला आहे यासारख्या समग्र ऑडिओ सेटिंग्ज सुधारित करण्यासाठी अॅप ला अनुमती देते."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ऑडिओ रेकॉर्ड"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"हा अॅप कोणत्याही वेळी कॅमेरा वापरून चित्रेे घेऊ आणि व्हिडिओ रेकॉर्ड करू शकतो."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"फोटो आणि व्हिडिओ काढण्यासाठी ॲप्लिकेशन किंवा सेवेला सिस्टम कॅमेरे ॲक्सेस करण्याची अनुमती द्या"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"हे विशेषाधिकृत आहे | सिस्टम ॲप कधीही सिस्टम कॅमेरा वापरून फोटो आणि व्हिडिओ रेकॉर्ड करू शकते. ॲपला android.permission.CAMERA परवानगी देण्याचीदेखील आवश्यकता आहे"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"व्हायब्रेट नियंत्रित करा"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"अॅप ला व्हायब्रेटर नियंत्रित करण्यासाठी अनुमती देते."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"अॅपला व्हायब्रेटर स्थितीचा अॅक्सेस करण्याची अनुमती देते."</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"कॉल करण्याचा अनुभव सुधारण्यासाठी ॲपला त्याचे कॉल प्रणालीच्या माध्यमातून रूट करू देते."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"सिस्टम वापरून कॉल पाहा आणि नियंत्रण ठेवा."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"डिव्हाइसवर येणार कॉल पाहण्यासाठी आणि नियंत्रित करण्यासाठी ॲपला अनुमती देते. यामध्ये कॉल करण्यासाठी कॉलचा नंबर आणि कॉलची स्थिती यासारख्या माहितीचा समावेश असतो."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"दुसऱ्या ॲपवरून कॉल करणे सुरू ठेवा"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"दुसऱ्या ॲपमध्ये सुरू झालेल्या कॉलला पुढे सुरू ठेवण्याची ॲपला अनुमती देते."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"फोन नंबर वाचा"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ॲपला डिव्हाइसच्या फोन नंबरमध्ये प्रवेश करण्याची अनुमती देते."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"कारची स्क्रीन सुरू ठेवा"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"टॅबलेट निष्क्रिय होण्यापासून प्रतिबंधित करा"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"तुमच्या Android TV डिव्हाइसला स्लीप मोडमध्ये जाण्यापासून थांबवा"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"फोन निष्क्रिय होण्यापासून प्रतिबंधित करा"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ॲपला कारची स्क्रीन सुरू ठेवण्याची अनुमती देते."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"टॅब्लेटला निष्क्रिय होण्यापासून प्रतिबंधित करण्यासाठी अॅप ला अनुमती देते."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV डिव्हाइसला स्लीप मोडमध्ये जाण्यापासून प्रतिबंधित करण्यासाठी ॲपला अनुमती देते."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"फोनला निष्क्रिय होण्यापासून प्रतिबंधित करण्यासाठी अॅप ला अनुमती देते."</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"पुन्हा प्रयत्न करा."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कोणत्याही फिंगरप्रिंटची नोंद झाली नाही"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"या डिव्हाइसमध्ये फिंगरप्रिंट सेन्सर नाही."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"सेन्सर तात्पुरता बंद केला आहे."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g> बोट"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"चेहरा पडताळणी करू शकत नाही. पुन्हा प्रयत्न करा."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"तुम्ही फेस अनलॉक सेट केले नाही."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"या डिव्हाइसवर फेस अनलॉकला सपोर्ट नाही."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"सेन्सर तात्पुरता बंद केला आहे."</string>
<string name="face_name_template" msgid="3877037340223318119">"चेहरा <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"मोबाइल नेटवर्कला इंटरनेट ॲक्सेस नाही"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"नेटवर्कला इंटरनेट ॲक्सेस नाही"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"खाजगी DNS सर्व्हर ॲक्सेस करू शकत नाही"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"कनेक्ट केले"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ला मर्यादित कनेक्टिव्हिटी आहे"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"तरीही कनेक्ट करण्यासाठी टॅप करा"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> वर स्विच केले"</string>
@@ -1318,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB डीबगिंग कनेक्ट केले"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB डीबगिंग बंद करण्यासाठी टॅप करा"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB डीबगिंग बंद करण्यासाठी निवडा."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"वायरलेस डीबगिंग कनेक्ट केले आहे"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"वायरलेस डीबगिंग बंद करण्यासाठी टॅप करा"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वायरलेस डीबगिंग बंद करण्यासाठी निवडा."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"टेस्ट हार्नेस मोड सुरू केला आहे"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"टेस्ट हार्नेस मोड बंद करण्यासाठी फॅक्टरी रीसेट करा."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"सिरीअल कन्सोल सुरू केला आहे"</string>
@@ -1621,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> कडून बॅकग्राउंडने फोरग्राउंडमध्ये सुरू केलेल्या सेवेला भविष्यातील आर बिल्डमध्ये वापर करते वेळची परवानगी नसेल. कृपया go/r-bg-fgs-restriction पहा आणि बगची तक्रार नोंदवा."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"शिफारस केलेल्या पातळीच्या वर आवाज वाढवायचा?\n\nउच्च आवाजात दीर्घ काळ ऐकण्याने आपल्या श्रवणशक्तीची हानी होऊ शकते."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"प्रवेशयोग्यता शॉर्टकट वापरायचा?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"शॉर्टकट सुरू असताना, दोन्ही व्हॉल्यूम बटणे तीन सेकंदांसाठी दाबून ठेवल्याने अॅक्सेसिबिलिटी वैशिष्ट्य सुरू होईल."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"जी ॲप्स तुमच्या ॲक्सेसिबिलिटी गरजा पूर्ण करतात अशा ॲप्ससाठी संपूर्ण नियंत्रण योग्य आहे. पण ते सर्व ॲप्सना लागू होईल असे नाही."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रीन पाहा आणि नियंत्रित करा"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ते स्क्रीनवरील सर्व आशय वाचू शकते आणि इतर ॲप्सवर आशय प्रदर्शित करू शकते."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"पाहा आणि क्रिया करा"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"तुम्ही ॲप किंवा हार्डवेअर सेन्सर कसे वापरता याचा हे मागोवा घेऊ शकते आणि इतर ॲप्ससोबत तुमच्या वतीने काम करू शकते."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमती द्या"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"नकार द्या"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"शॉर्टकट संपादित करा"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"रद्द करा"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"शॉर्टकट बंद करा"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"शॉर्टकट वापरा"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"रंगांची उलटापालट"</string>
@@ -1845,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"वर्गीकरण न केलेले"</string>
<string name="importance_from_user" msgid="2782756722448800447">"तुम्ही या सूचनांचे महत्त्व सेट केले."</string>
<string name="importance_from_person" msgid="4235804979664465383">"सामील असलेल्या लोकांमुळे हे महत्वाचे आहे."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"कस्टम ॲप सूचना"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> सह नवीन वापरकर्ता तयार करण्याची (हे खाते असलेला वापरकर्ता आधीपासून अस्तित्वात आहे) <xliff:g id="APP">%1$s</xliff:g> ला अनुमती द्यायची आहे का?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> सह नवीन वापरकर्ता तयार करण्याची <xliff:g id="APP">%1$s</xliff:g> ला अनुमती द्यायची आहे का?"</string>
<string name="language_selection_title" msgid="52674936078683285">"एक भाषा जोडा"</string>
@@ -2016,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"अॅक्सेसिबिलिटी मेनू"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> चा शीर्षक बार."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> हे प्रतिबंधित बादलीमध्ये ठेवण्यात आले आहे"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"वैयक्तिक"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ऑफिस"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"वैयक्तिक दृश्य"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"कार्य दृश्य"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ऑफिस ॲप्स सोबत शेअर करू शकत नाही"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"वैयक्तिक अॅप्स सोबत शेअर करू शकत नाही"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"तुमच्या आयटी ॲडमिनने वैयक्तिक आणि कार्य प्रोफाइल दरम्यान शेअर करणे ब्लॉक केले आहे"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"कामासंबंधित ॲप्स अॅक्सेस करू शकत नाही"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"तुमचा आयटी ॲडमिन तुम्हाला वैयक्तिक आशय कामासंबंधित ॲप्सवर पाहाण्याची अनुमती देत नाही"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"वैयक्तिक ॲप्स अॅक्सेस करू शकत नाही"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"तुमचा आयटी ॲडमिन तुम्हाला कामासंबंधित आशय वैयक्तिक ॲप्सवर पाहाण्याची अनुमती देत नाही"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"आशय शेअर करण्यासाठी कार्य प्रोफाइल सुरू करा"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"आशय पाहण्यासाठी कार्य प्रोफाइल सुरू करा"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"कोणतीही अॅप्स उपलब्ध नाहीत"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"सुरू करा"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"टेलिफोनी कॉलमध्ये ऑडिओ रेकॉर्ड करा किंवा प्ले करा"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"टेलिफोनी कॉलमध्ये ऑडिओ रेकॉर्ड करण्याची किंवा प्ले करण्यासाठी डीफॉल्ट डायलर अॅप्लिकेशन म्हणून असाइन केले असताना या ॲपला परवानगी देते."</string>
</resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index 848ebf4..bf975de 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasi anda mengurus peranti ini dan mungkin memantau trafik rangkaian. Ketik untuk mendapatkan butiran."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Tetapan lokasi diubah oleh pentadbir anda"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Ketik untuk melihat tetapan lokasi anda."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Pengesan Negara"</string>
+ <string name="location_service" msgid="2439187616018455546">"Perkhidmatan Lokasi"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Perkhidmatan GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Perkhidmatan Pemberitahuan Penderia"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Perkhidmatan Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Peranti anda akan dipadam"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Apl pentadbir tidak dapat digunakan. Peranti anda akan dipadamkan sekarang.\n\nJika anda ingin mengemukakan soalan, hubungi pentadbir organisasi anda."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Pencetakan dilumpuhkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Mengambil tangkapan skrin untuk laporan pepijat dalam masa <xliff:g id="NUMBER_1">%d</xliff:g> saat.</item>
<item quantity="one">Mengambil tangkapan skrin untuk laporan pepijat dalam masa <xliff:g id="NUMBER_0">%d</xliff:g> saat.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Tangkapan skrin diambil dengan laporan pepijat"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Gagal mengambil tangkapan skrin dengan laporan pepijat"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mod senyap"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Bunyi DIMATIKAN"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Bunyi DIHIDUPKAN"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"akses perintah tambahan pembekal lokasi"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Membenarkan apl mengakses arahan pembekal lokasi tambahan. Ini boleh membenarkan apl untuk campur tangan dengan operasi GPS atau sumber lokasi lain."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"akses lokasi tepat hanya di latar depan"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Apl ini boleh mendapatkan lokasi tepat anda hanya apabila apl tersebut berada di latar depan. Perkhidmatan lokasi mesti dihidupkan dan tersedia pada peranti anda untuk membolehkan apl menggunakan perkhidmatan tersebut. Tindakan ini mungkin meningkatkan penggunaan bateri."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Apl ini boleh mendapatkan lokasi tepat anda daripada perkhidmatan lokasi semasa apl ini sedang digunakan. Perkhidmatan lokasi untuk peranti anda mesti dihidupkan untuk apl mendapatkan lokasi. Hal ini mungkin meningkatkan penggunaan bateri."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"akses lokasi anggaran hanya di latar depan"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Apl ini boleh mendapatkan lokasi anggaran anda hanya apabila apl tersebut berada di latar depan. Perkhidmatan lokasi mesti dihidupkan dan tersedia pada peranti anda untuk membolehkan apl menggunakan perkhidmatan tersebut."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Apl ini boleh mendapatkan lokasi anggaran anda daripada perkhidmatan lokasi semasa apl ini sedang digunakan. Perkhidmatan lokasi untuk peranti anda mesti dihidupkan untuk apl mendapatkan lokasi."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"akses lokasi di latar belakang"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Apl ini boleh mengakses lokasi semasa berjalan di latar belakang, di samping akses lokasi di latar depan."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Apl ini boleh mengakses lokasi pada bila-bila masa, walaupun semasa apl tidak digunakan."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"tukar tetapan audio anda"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Membenarkan apl untuk mengubah suai tetapan audio global seperti kelantangan dan pembesar suara mana digunakan untuk output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"rakam audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Apl ini boleh mengambil gambar dan merakam video menggunakan kamera pada bila-bila masa."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Benarkan aplikasi atau perkhidmatan mengakses kamera sistem untuk mengambil gambar dan video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Apl sistem | terlindung ini boleh mengambil gambar dan merakam video menggunakan kamera sistem pada bila-bila masa. Apl juga perlu mempunyai kebenaran android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Benarkan aplikasi atau perkhidmatan menerima panggilan balik tentang peranti kamera yang dibuka atau ditutup."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Apl tandatangan ini boleh menerima panggilan balik apabila mana-mana peranti kamera dibuka (oleh pakej aplikasi tertentu) atau ditutup."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kawal getaran"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Membenarkan apl mengawal penggetar."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Membenarkan apl mengakses keadaan penggetar."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Membenarkan apl menghalakan panggilan menerusi sistem untuk meningkatkan pengalaman panggilan."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"lihat dan kawal panggilan melalui sistem."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Membenarkan apl melihat dan mengawal panggilan yang sedang berlangsung pada peranti. Ini termasuklah maklumat seperti nombor panggilan untuk panggilan dan keadaan panggilan tersebut."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"teruskan panggilan daripada apl lain"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Membenarkan apl meneruskan panggilan yang dimulakan dalam apl lain."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"baca nombor telefon"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Membenarkan apl mengakses nombor telefon peranti."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"pastikan skrin kereta sentiasa hidup"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"menghalang tablet daripada tidur"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"menghalang peranti Android TV anda daripada tidur"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"halang telefon daripada tidur"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Membenarkan apl memastikan skrin kereta sentiasa hidup."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Membenarkan apl menghalang tablet daripada tidur."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Membenarkan apl menghalang peranti Android TV anda daripada tidur."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Membenarkan apl menghalang telefon daripada tidur."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Cuba lagi."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Tiada cap jari didaftarkan."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Peranti ini tiada penderia cap jari."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Penderia dilumpuhkan sementara."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Jari <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Tidak dapat mengesahkan wajah. Cuba lagi."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Anda belum menyediakan wajah buka kunci."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Wajah buka kunci tidak disokong pada peranti ini."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Penderia dilumpuhkan sementara."</string>
<string name="face_name_template" msgid="3877037340223318119">"Wajah <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Rangkaian mudah alih tiada akses Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Rangkaian tiada akses Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Pelayan DNS peribadi tidak boleh diakses"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Disambungkan"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> mempunyai kesambungan terhad"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Ketik untuk menyambung juga"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Beralih kepada <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Penyahpepijatan USB disambungkan"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Ketik untuk mematikan penyahpepijatan USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Pilih untuk melumpuhkan penyahpepijatan USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Penyahpepijatan wayarles disambungkan"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Ketik untuk mematikan penyahpepijatan wayarles"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Pilih untuk melumpuhkan penyahpepijatan wayarles."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Mod Abah-abah Ujian didayakan"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Laksanakan tetapan semula kilang untuk melumpuhkan Mod Abah-abah Ujian."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsol bersiri didayakan"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Perkhidmatan latar depan dimulakan latar belakang daripada <xliff:g id="PACKAGENAME">%1$s</xliff:g> tidak akan mempunyai kebenaran semasa-dalam-penggunaan dalam binaan R akan datang. Sila lihat go/r-bg-fgs-restriction dan failkan laporan pepijat."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Naikkan kelantangan melebihi paras yang disyokorkan?\n\nMendengar pada kelantangan yang tinggi untuk tempoh yang lama boleh merosakkan pendengaran anda."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Kebolehaksesan?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Apabila pintasan dihidupkan, tindakan menekan kedua-dua butang kelantangan selama 3 saat akan memulakan ciri kebolehaksesan."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Benarkan <xliff:g id="SERVICE">%1$s</xliff:g> mempunyai kawalan penuh atas peranti anda?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jika anda menghidupkan <xliff:g id="SERVICE">%1$s</xliff:g>, peranti anda tidak akan menggunakan kunci skrin anda untuk meningkatkan penyulitan data."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kawalan penuh sesuai untuk apl yang membantu anda dengan keperluan kebolehaksesan tetapi bukan untuk kebanyakan apl."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Melihat dan mengawal skrin"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ciri ini boleh membaca semua kandungan pada skrin dan memaparkan kandungan di atas apl lain."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Lihat dan laksanakan tindakan"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Tindakan ini boleh menjejak interaksi anda dengan apl atau penderia perkakasan dan berinteraksi dengan apl bagi pihak anda."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Benarkan"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tolak"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Ketik ciri untuk mula menggunakan ciri itu:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Pilih apl untuk digunakan dengan butang kebolehaksesan"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Pilih apl untuk digunakan dengan pintasan kekunci kelantangan"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> telah dimatikan"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edit pintasan"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Batal"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Selesai"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Matikan pintasan"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gunakan Pintasan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Penyongsangan Warna"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Tidak dikategorikan"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Anda menetapkan kepentingan pemberitahuan ini."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Mesej ini penting disebabkan orang yang terlibat."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Pemberitahuan apl tersuai"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Benarkan <xliff:g id="APP">%1$s</xliff:g> membuat Pengguna baharu dengan <xliff:g id="ACCOUNT">%2$s</xliff:g> (Pengguna dengan akaun ini sudah wujud) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Benarkan <xliff:g id="APP">%1$s</xliff:g> membuat Pengguna baharu dengan <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Tambahkan bahasa"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Kebolehaksesan"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bar kapsyen <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah diletakkan dalam baldi TERHAD"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Peribadi"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Paparan peribadi"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Paparan kerja"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Tidak dapat berkongsi dengan apl kerja"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Tidak dapat berkongsi dengan apl peribadi"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Pentadbir IT anda menyekat perkongsian antara profil peribadi dan kerja"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Tidak dapat mengakses apl kerja"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Pentadbir IT anda tidak membenarkan anda melihat kandungan peribadi dalam apl kerja"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Tidak dapat mengakses apl peribadi"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Pentadbir IT anda tidak membenarkan anda melihat kandungan dalam apl peribadi"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Hidupkan profil kerja untuk berkongsi kandungan"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Hidupkan profil kerja untuk melihat kandungan"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Tiada rangkaian yang tersedia"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Hidupkan"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rakam atau mainkan audio dalam panggilan telefoni"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Apabila ditetapkan sebagai apl pendail lalai, membenarkan apl ini merakam atau memainkan audio dalam panggilan telefoni."</string>
</resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 95a41f2..efd4494 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ဤစက်ပစ္စည်းကို သင်၏ အဖွဲ့အစည်းက စီမံပြီး ကွန်ရက်အသွားအလာကို စောင့်ကြည့်နိုင်ပါသည်။ ထပ်မံလေ့လာရန် တို့ပါ။"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"သင့်စီမံခန့်ခွဲသူက တည်နေရာပြ ဆက်တင်များကို ပြောင်းထားသည်"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"သင့်တည်နေရာပြ ဆက်တင်များကို ကြည့်ရန် တို့ပါ။"</string>
+ <string name="country_detector" msgid="7023275114706088854">"နိုင်ငံ ရှာဖွေစနစ်"</string>
+ <string name="location_service" msgid="2439187616018455546">"တည်နေရာဝန်ဆောင်မှု"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS ဝန်ဆောင်မှု"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"အာရုံခံကိရိယာ အကြောင်းကြားချက် ဝန်ဆောင်မှု"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"နေဝင်ဆည်းဆာ ဝန်ဆောင်မှု"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"သင့်ကိရိယာအား ပယ်ဖျက်လိမ့်မည်"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"စီမံခန့်ခွဲမှု အက်ပ်ကို သုံး၍မရပါ။ သင်၏ စက်ပစ္စည်းအတွင်းရှိ အရာများကို ဖျက်လိုက်ပါမည်\n\nမေးစရာများရှိပါက သင့်အဖွဲ့အစည်း၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> က ပုံနှိပ်ထုတ်ယူခြင်းကို ပိတ်ထားသည်။"</string>
@@ -245,6 +250,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> စက္ကန့်အတွင်း ချွတ်ယွင်းချက် အစီရင်ခံရန်အတွက် မျက်နှာပြင်ဓာတ်ပုံ ရိုက်ပါမည်။</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> စက္ကန့်အတွင်း ချွတ်ယွင်းချက် အစီရင်ခံရန်အတွက် မျက်နှာပြင်ဓာတ်ပုံ ရိုက်ပါမည်။</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ချွတ်ယွင်းချက်အစီရင်ခံချက်နှင့်အတူ ဖန်သားပြင်ဓာတ်ပုံရိုက်ထားသည်"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ချွတ်ယွင်းချက်အစီရင်ခံချက်နှင့်အတူ ဖန်သားပြင်ဓာတ်ပုံရိုက်၍မရခဲ့ပါ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"အသံတိတ်စနစ်"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"အသံပိတ်ထားသည်"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"အသံဖွင့်ထားသည်"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"တည်နေရာပံ့ပိုးမှုညွှန်ကြားချက်အပိုအား ဝင်ရောက်ကြည့်ခြင်း"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"အက်ပ်အား တည်နေရာ စီမံပေးရေး ညွှန်ကြားချက် အပိုများကို ရယူခွင့်ပြုသည်။ သို့ဖြစ်၍ အက်ပ်သည် GPS သို့မဟုတ် အခြား တည်နေရာ ရင်းမြစ်ကို သုံးကြသူတို့၏ လုပ်ငန်းများကို ဝင်စွက်ခွင့် ပြုနိုင်သည်။"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"မျက်နှာစာတွင်သာ တည်နေရာအတိအကျ အသုံးပြုခြင်း"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"မျက်နှာစာတွင် ဖွင့်ထားမှသာ ဤအက်ပ်က သင်၏ တည်နေရာအတိအကျကို ရယူနိုင်ပါသည်။ သင်၏ စက်တွင် အက်ပ်ကအသုံးပြုရန်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားပြီးမှ အသုံးပြု၍ ရပါမည်။ ၎င်းက ဘက်ထရီ ပိုကုန်နိုင်ပါသည်။"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"အက်ပ်ကို အသုံးပြုနေစဉ် ဤအက်ပ်သည် တည်နေရာဝန်ဆောင်မှုများမှနေ၍ သင့်တည်နေရာအတိအကျကို ရယူနိုင်သည်။ အက်ပ်က တည်နေရာရရှိနိုင်ရန် သင့်စက်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားရပါမည်။ ၎င်းသည် ဘက်ထရီအသုံးပြုမှု ပိုများနိုင်သည်။"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"မျက်နှာစာတွင်သာ ခန့်မှန်းခြေ တည်နေရာ အသုံးပြုခြင်း"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"မျက်နှာစာတွင် ဖွင့်ထားမှသာ ဤအက်ပ်က သင်၏ အနီးစပ်ဆုံးတည်နေရာကို ရယူနိုင်ပါသည်။ အက်ပ်က ဤတည်နေရာဝန်ဆောင်မှုများကို အသုံးပြုရန်အတွက် သင်၏စက်တွင် ၎င်းတို့ရှိနေပြီး ဖွင့်ထားရပါမည်။"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"အက်ပ်ကို အသုံးပြုနေစဉ် ဤအက်ပ်သည် တည်နေရာဝန်ဆောင်မှုများမှနေ၍ သင့်တည်နေရာခန့်မှန်းခြေကို ရယူနိုင်သည်။ အက်ပ်က တည်နေရာရရှိနိုင်ရန် သင့်စက်အတွက် တည်နေရာဝန်ဆောင်မှုများကို ဖွင့်ထားရပါမည်။"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"နောက်ခံတွင် တည်နေရာကို အသုံးပြုရန်"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"နောက်ခံတွင် လုပ်ဆောင်နေစဉ် ဤအက်ပ်က တည်နေရာကို ရယူအသုံးပြုနိုင်သည်သာမက မျက်နှာစာတည်နေရာကိုပါ အသုံးပြုနိုင်မည်။"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"အက်ပ်ကို အသုံးပြုနေခြင်းမရှိသည့်အခါတွင်ပင် ဤအက်ပ်သည် သင့်တည်နေရာကို အချိန်မရွေး အသုံးပြုနိုင်သည်။"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"သင့်အသံအပြင်အဆင်အားပြောင်းခြင်း"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"အပလီကေးရှင်းအား အသံအတိုးအကျယ်နှင့် အထွက်ကို မည်သည့်စပီကာကို သုံးရန်စသည်ဖြင့် စက်တစ်ခုလုံးနှင့်ဆိုင်သော အသံဆိုင်ရာ ဆက်တင်များ ပြင်ဆင်ခွင့် ပြုရန်"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"အသံဖမ်းခြင်း"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ဤအက်ပ်သည် ကင်မရာကို အသုံးပြု၍ ဓာတ်ပုံနှင့် ဗီဒီယိုများကို အချိန်မရွေး ရိုက်ကူးနိုင်ပါသည်။"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ဓာတ်ပုံနှင့် ဗီဒီယိုများရိုက်ရန်အတွက် စနစ်ကင်မရာများကို အက်ပ် သို့မဟုတ် ဝန်ဆောင်မှုအား အသုံးပြုခွင့်ပေးခြင်း"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ခွင့်ပြုချက်ရှိသည့် | ဤစနစ်အက်ပ်သည် စနစ်ကင်မရာကို အသုံးပြု၍ ဓာတ်ပုံနှင့် ဗီဒီယိုများကို အချိန်မရွေး ရိုက်ကူးနိုင်သည်။ အက်ပ်ကလည်း android.permission.CAMERA ခွင့်ပြုချက် ရှိရပါမည်"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ကင်မရာစက်များ ပွင့်နေခြင်း သို့မဟုတ် ပိတ်နေခြင်းနှင့် ပတ်သက်ပြီး ပြန်လည်ခေါ်ဆိုမှုများ ရယူရန် အပလီကေးရှင်း သို့မဟုတ် ဝန်ဆောင်မှုကို ခွင့်ပြုခြင်း။"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"(မည်သည့် အပလီကေးရှင်းပက်ကေ့ဂျ်ကြောင့်) ကင်မရာစက်တစ်ခုခု ပွင့်နေသည့်အခါ သို့မဟုတ် ပိတ်နေသည့်အခါ ဤအထူးသီးသန့်အက်ပ်က ပြန်လည်ခေါ်ဆိုမှုများ ရယူနိုင်သည်။"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"တုန်ခုန်မှုအား ထိန်းချုပ်ခြင်း"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"အက်ပ်အား တုန်ခါစက်ကို ထိန်းချုပ်ခွင့် ပြုသည်။"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"အက်ပ်ကို တုန်ခါမှုအခြေအနေအား သုံးခွင့်ပေးပါ။"</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"ခေါ်ဆိုမှု အတွေ့အကြုံ ပိုမိုကောင်းမွန်လာစေရန်အတွက် အက်ပ်၏ ခေါ်ဆိုမှုအား စနစ်မှတစ်ဆင့် ဖြတ်သန်းရန် ခွင့်ပြုပါသည်။"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"စနစ်မှတစ်ဆင့် ခေါ်ဆိုမှုများကို ကြည့်ရှုထိန်းချုပ်ပါ။"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"စက်ပစ္စည်းပေါ်ရှိ လက်ရှိခေါ်ဆိုမှုများကို အက်ပ်အား ကြည့်ရှုထိန်းချုပ်ခွင့်ပြုသည်။ ၎င်းတွင် ခေါ်ဆိုမှုနံပါတ်များနှင့် ခေါ်ဆိုမှုအခြေအနေများကဲ့သို့သော အခြေအနေများ ပါဝင်သည်။"</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"အသံဖမ်းခွင့် ကန့်သတ်ချက်မှ ဖယ်ရှားပါ"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"အသံဖမ်းခွင့် ကန့်သတ်ချက်မှ အက်ပ်ကို ဖယ်ရှားပါ"</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"အခြားအက်ပ်မှ ဖုန်းခေါ်ဆိုမှုကို ဆက်လက်ပြုလုပ်ပါ"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"အခြားအက်ပ်တွင် စတင်ထားသည့် ဖုန်းခေါ်ဆိုမှုကို ဆက်လက်ပြုလုပ်ရန် ဤအက်ပ်ကို ခွင့်ပြုသည်။"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ဖုန်းနံပါတ်များကို ဖတ်ရန်"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"အက်ပ်ကို စက်ပစ္စည်း၏ ဖုန်းနံပါတ်များအား အသုံးပြုခွင့်ပေးပါ။"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ကားဖန်သားပြင်ကို ဖွင့်ထားပါ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"တက်ပလက်အား ပိတ်ခြင်းမှ ကာကွယ်ခြင်း"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"သင်၏ Android TV စက်ပစ္စည်း နားခြင်းမရှိစေရန် ပြုလုပ်ခြင်း"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ဖုန်းအနားယူခြင်းမပြုလုပ်စေရန်"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ကားဖန်သားပြင် ဖွင့်ထားနိုင်စေရန် အက်ပ်ကို ခွင့်ပြုပေးပါ။"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"အက်ပ်အား တက်ဘလက်ကို အနားမယူနိုင်အောင် ဟန့်တားခွင့် ပြုသည်။"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"သင့် Android TV စက်ပစ္စည်း နားခြင်း မရှိစေရန်အတွက် အက်ပ်အား လုပ်ဆောင်ခွင့်ပြုသည်။"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"အက်ပ်အား ဖုန်းကို အနားမယူနိုင်အောင် ဟန့်တားခွင့် ပြုသည်။"</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ပြန်ကြိုးစားပါ"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"မည်သည့် လက်ဗွေကိုမျှ ထည့်သွင်းမထားပါ။"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ဤစက်တွင် လက်ဗွေအာရုံခံကိရိယာ မရှိပါ။"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"အာရုံခံကိရိယာကို ယာယီပိတ်ထားသည်။"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"လက်ချောင်း <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"မျက်နှာကို အတည်ပြု၍ မရပါ။ ထပ်စမ်းကြည့်ပါ။"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို ထည့်သွင်းမထားပါ"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"ဤစက်ပစ္စည်းတွင် မျက်နှာမှတ် သော့ဖွင့်ခြင်းကို သုံး၍မရပါ။"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"အာရုံခံကိရိယာကို ယာယီပိတ်ထားသည်။"</string>
<string name="face_name_template" msgid="3877037340223318119">"မျက်နှာ <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1239,7 +1250,7 @@
<string name="volume_icon_description_notification" msgid="579091344110747279">"အကြောင်းကြားသံအတိုးအကျယ်"</string>
<string name="ringtone_default" msgid="9118299121288174597">"မူရင်းမြည်သံ"</string>
<string name="ringtone_default_with_actual" msgid="2709686194556159773">"မူရင်း (<xliff:g id="ACTUAL_RINGTONE">%1$s</xliff:g>)"</string>
- <string name="ringtone_silent" msgid="397111123930141876">"တစ်ခုမှမဟုတ်"</string>
+ <string name="ringtone_silent" msgid="397111123930141876">"တစ်ခုမျှမဟုတ်"</string>
<string name="ringtone_picker_title" msgid="667342618626068253">"မြည်သံများ"</string>
<string name="ringtone_picker_title_alarm" msgid="7438934548339024767">"နှိုးစက်သံ"</string>
<string name="ringtone_picker_title_notification" msgid="6387191794719608122">"အကြောင်းကြားချက်အသံ"</string>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"မိုဘိုင်းကွန်ရက်တွင် အင်တာနက်ချိတ်ဆက်မှု မရှိပါ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ကွန်ရက်တွင် အင်တာနက်အသုံးပြုခွင့် မရှိပါ"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"သီးသန့် ဒီအန်အက်စ် (DNS) ဆာဗာကို သုံး၍မရပါ။"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ချိတ်ဆက်ထားသည်"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> တွင် ချိတ်ဆက်မှုကို ကန့်သတ်ထားသည်"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"မည်သို့ပင်ဖြစ်စေ ချိတ်ဆက်ရန် တို့ပါ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> သို့ ပြောင်းလိုက်ပြီ"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB အမှားရှာပြင်စနစ် ချိတ်ဆက်ထားသည်"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB အမှားရှာပြင်ခြင်းကို ပိတ်ရန် တို့ပါ"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ဖြင့် အမှားရှာပြင်ခြင်းကို ပိတ်ရန် ရွေးပါ။"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ကြိုးမဲ့ အမှားရှာပြင်ခြင်းကို ချိတ်ဆက်ပြီးပြီ"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ကြိုးမဲ့ အမှားရှာပြင်ခြင်းကို ပိတ်ရန် တို့ပါ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ကြိုးမဲ့ အမှားရှာပြင်ခြင်းကို ပိတ်ရန် ရွေးပါ။"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"\'စမ်းသပ်ခြင်းစနစ်မုဒ်\' ဖွင့်ထားသည်"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"\'စမ်းသပ်ခြင်းစနစ် မုဒ်\' ကိုပိတ်ရန် စက်ရုံထုတ်အတိုင်း ပြင်ဆင်သတ်မှတ်ပါ။"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"အမှတ်စဉ် ကွန်ဆိုးလ်ကို ဖွင့်ထားသည်"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> တွင် မှ စတင်သည့် foreground ဝန်ဆောင်မှုသည် နောက်ထွက်ရှိမည့် R စုပေါင်းစပ်ပေါင်း ပရိုဂရမ်များတွင် အသုံးပြုစဉ်အတွင်း ခွင့်ပြုချက် ရရှိမည်မဟုတ်ပါ။ go/r-bg-fgs-ကန့်သတ်ချက်များကို ကြည့်ပြီး အမှားသတင်းပို့ချက်တစ်ခု တင်သွင်းပါ။"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"အသံကို အကြံပြုထားသည့် ပမာဏထက် မြှင့်ပေးရမလား?\n\nအသံကို မြင့်သည့် အဆင့်မှာ ကြာရှည်စွာ နားထောင်ခြင်းက သင်၏ နားကို ထိခိုက်စေနိုင်သည်။"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"အများသုံးစွဲနိုင်မှု ဖြတ်လမ်းလင့်ခ်ကို အသုံးပြုလိုပါသလား။"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ဖြတ်လမ်းလင့်ခ်ကို ဖွင့်ထားစဉ် အသံထိန်းခလုတ် နှစ်ခုစလုံးကို ၃ စက္ကန့်ခန့် ဖိထားခြင်းဖြင့် အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုကို ဖွင့်နိုင်သည်။"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> ကို သင့်စက်အား အပြည့်အဝထိန်းချုပ်ခွင့် ပေးလိုပါသလား။"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> ဖွင့်လိုက်ပါက သင်၏စက်သည် ဒေတာအသွင်ဝှက်ခြင်း ပိုကောင်းမွန်စေရန် သင့်ဖန်သားပြင်လော့ခ်ကို သုံးမည်မဟုတ်ပါ။"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"အများသုံးစွဲနိုင်မှု လိုအပ်ချက်များအတွက် အထောက်အကူပြုသည့် အက်ပ်များကို အပြည့်အဝထိန်းချုပ်ခြင်းသည် သင့်လျော်သော်လည်း အက်ပ်အများစုအတွက် မသင့်လျော်ပါ။"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"မျက်နှာပြင်ကို ကြည့်ရှုပြီး ထိန်းချုပ်ပါ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"၎င်းသည် မျက်နှာပြင်ပေါ်ရှိ အကြောင်းအရာများအားလုံးကို ဖတ်နိုင်ပြီး အခြားအက်ပ်များအပေါ်တွင် ထိုအကြောင်းအရာကို ဖော်ပြနိုင်သည်။"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"လုပ်ဆောင်ချက်များကို ကြည့်ရှုလုပ်ဆောင်ပါ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"၎င်းသည် အက်ပ်တစ်ခု သို့မဟုတ် အာရုံခံကိရိယာကို အသုံးပြု၍ သင့်ပြန်လှန်တုံ့ပြန်မှုများကို မှတ်သားနိုင်ပြီး သင့်ကိုယ်စား အက်ပ်များနှင့် ပြန်လှန်တုံ့ပြန်နိုင်သည်။"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ခွင့်ပြု"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ပယ်ရန်"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ဝန်ဆောင်မှုကို စတင်အသုံးပြုရန် တို့ပါ−"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"အများသုံးစွဲနိုင်မှု ခလုတ်ဖြင့် အသုံးပြုရန် အက်ပ်များကို ရွေးပါ"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"အသံခလုတ် ဖြတ်လမ်းလင့်ခ်ဖြင့် အသုံးပြုရန် အက်ပ်များကို ရွေးပါ"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ကို ပိတ်ထားသည်"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ဖြတ်လမ်းများကို တည်းဖြတ်ရန်"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"မလုပ်တော့"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ပြီးပြီ"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ဖြတ်လမ်းလင့်ခ်ကို ပိတ်ရန်"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ဖြတ်လမ်းလင့်ခ်ကို သုံးရန်"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"အရောင် ပြောင်းပြန်လှန်ခြင်း"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"အမျိုးအစားမခွဲရသေးပါ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ဤသတိပေးချက်များ၏ အရေးပါမှုကိုသတ်မှတ်ပြီးပါပြီ။"</string>
<string name="importance_from_person" msgid="4235804979664465383">"ပါဝင်သည့်လူများကြောင့် အရေးပါပါသည်။"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"စိတ်ကြိုက်အက်ပ် အကြောင်းကြားချက်"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> ဖြင့်အသုံးပြုသူအသစ်ကို <xliff:g id="APP">%1$s</xliff:g> အား ဖန်တီးခွင့်ပြုလိုပါသလား (ဤအကောင့်ဖြင့် အသုံးပြုသူ ရှိနှင့်ပြီးဖြစ်သည်) ။"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> ဖြင့်အသုံးပြုသူအသစ်ကို <xliff:g id="APP">%1$s</xliff:g> အား ဖန်တီးခွင့်ပြုလိုပါသလား ။"</string>
<string name="language_selection_title" msgid="52674936078683285">"ဘာသာစကားတစ်ခု ထည့်ပါ"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"အများသုံးစွဲနိုင်မှု မီနူး"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>၏ ခေါင်းစီး ဘား။"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ကို တားမြစ်ထားသော သိမ်းဆည်းမှုအတွင်းသို့ ထည့်ပြီးပါပြီ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ကိုယ်ပိုင်"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"အလုပ်"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ပုဂ္ဂိုလ်ရေးဆိုင်ရာ မြင်ကွင်း"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"အလုပ် မြင်ကွင်း"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"အလုပ်သုံးအက်ပ်များနှင့် မျှဝေ၍ မရပါ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ကိုယ်ပိုင်သုံးအက်ပ်များနှင့် မျှဝေ၍ မရပါ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"သင့် အိုင်တီစီမံခန့်ခွဲသူသည် ပုဂ္ဂိုလ်ရေးဆိုင်ရာနှင့် အလုပ် ပရိုဖိုင်များအကြား မျှဝေခြင်းကို ပိတ်ထားသည်"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"အလုပ်သုံးအက်ပ်များကို ဖွင့်၍မရပါ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"သင့် အိုင်တီစီမံခန့်ခွဲသူသည် အလုပ်သုံးအက်ပ်များတွင် ပုဂ္ဂိုလ်ရေးဆိုင်ရာ အကြောင်းအရာကို ကြည့်ခွင့်မပြုပါ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ပုဂ္ဂိုလ်ရေးဆိုင်ရာ အက်ပ်များကို သုံးခွင့်မရှိပါ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"သင့် အိုင်တီ စီမံခန့်ခွဲသူသည် ပုဂ္ဂိုလ်ရေးဆိုင်ရာအက်ပ်များတွင် အလုပ်သုံး အကြောင်းအရာကို ကြည့်ခွင့်မပြုပါ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"အကြောင်းအရာမျှဝေရန် အလုပ်ပရိုဖိုင်ကို ဖွင့်ပါ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"အကြောင်းအရာကို ကြည့်ရန် အလုပ်ပရိုဖိုင်ကို ဖွင့်ပါ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"မည်သည့်အက်ပ်မျှ မရှိပါ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ဖွင့်ရန်"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ဖုန်းခေါ်ဆိုမှုများအတွင်း အသံဖမ်းခြင်း သို့မဟုတ် ဖွင့်ခြင်း"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ဤအက်ပ်အား မူလ dialer အပလီကေးရှင်းအဖြစ် သတ်မှတ်ထားစဉ် ဖုန်းခေါ်ဆိုမှုများအတွင်း အသံဖမ်းခြင်း သို့မဟုတ် ဖွင့်ခြင်း ပြုလုပ်ရန် ခွင့်ပြုပါ။"</string>
</resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index 7145ef3..7d7bbded 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisasjonen din kontrollerer denne enheten og kan overvåke nettverkstrafikk. Trykk for å få mer informasjon."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Posisjonsinnstillingene er endret av administratoren din"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Trykk for å se posisjonsinnstillingene dine."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Landsoppdagelse"</string>
+ <string name="location_service" msgid="2439187616018455546">"Posisjonstjeneste"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-tjeneste"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheten blir slettet"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administratorappen kan ikke brukes. Enheten din blir nå tømt.\n\nTa kontakt med administratoren for organisasjonen din hvis du har spørsmål."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> har slått av utskrift."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
<item quantity="one">Tar skjermdump for feilrapporten om <xliff:g id="NUMBER_0">%d</xliff:g> sekund.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"En skjermdump er tatt med feilrapporten"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Kunne ikke ta skjermdump med feilrapporten"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Stillemodus"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Lyden er av"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Lyden er på"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"bruke ekstra posisjonskommandoer"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Appen gis tillatelse til å bruke ekstra kommandoer fra posisjonsleverandører. Dette kan gi appen tillatelse til å påvirke bruken av GPS eller andre posisjonskilder."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"bare tilgang til nøyaktig posisjon i forgrunnen"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Denne appen kan bare få den nøyaktige posisjonen din når den er på i forgrunnen. Posisjonstjenestene må være slått på og tilgjengelige på enheten din for at appen skal kunne bruke dem. Dette kan øke batteriforbruket."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Denne appen kan få den nøyaktige posisjonen din fra posisjonstjenestene når den er i bruk. Posisjonstjenestene for enheten må være slått på for at appen skal få posisjonen. Dette kan øke batteribruken."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"bare tilgang til omtrentlig posisjon i forgrunnen"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Denne appen kan bare få den omtrentlige posisjonen din når den er i forgrunnen. Posisjonstjenestene må være slått på og tilgjengelige på enheten din for at appen skal kunne bruke dem."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Denne appen kan få den omtrentlige posisjonen din fra posisjonstjenestene når den er i bruk. Posisjonstjenestene for enheten må være slått på for at appen skal få posisjonen."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"tilgang til posisjon i bakgrunnen"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Denne appen har tilgang til posisjon når den kjører i bakgrunnen, i tillegg til tilgang til posisjonen i forgrunnen."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Denne appen har tilgang til posisjonen til enhver tid, selv når appen ikke er i bruk."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"endre lydinnstillinger"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lar appen endre globale lydinnstillinger slik som volum og hvilken høyttaler som brukes for lydavspilling."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ta opp lyd"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Denne appen kan når som helst ta bilder og spille inn videoer ved hjelp av kameraet."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Gi en app eller tjeneste tilgang til systemkameraene for å ta bilder og spille inn videoer"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Denne privilegerte | systemappen kan når som helst ta bilder og spille inn videoer med et systemkamera. Dette krever at appen også har tillatelsen android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillat at en app eller tjeneste mottar tilbakekallinger om kameraenheter som åpnes eller lukkes."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Denne signaturappen kan motta tilbakekallinger når en kameraenhet blir åpnet (av hvilken app-pakke) eller lukket."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrollere vibreringen"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Lar appen kontrollere vibreringsfunksjonen."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Gir appen tilgang til vibreringstilstanden."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Lar appen sende anrop gjennom systemet for å forbedre anropsopplevelsen."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"se og kontrollere anrop i systemet."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Lar appen se og kontrollere anrop som pågår på enheten. Dette inkluderer informasjon som anropsnumre og tilstanden til anropene."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"fortsette et anrop fra en annen app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Lar appen fortsette et anrop som ble startet i en annen app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"les telefonnumre"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Gir appen tilgang til telefonnumrene til enheten."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"hold bilskjermen på"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"hindre nettbrettet fra å gå over til sovemodus"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"forhindre at Android TV-enheten din settes i hvilemodus"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"forhindre telefonen fra å sove"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Tillater at appen holder bilskjermen på."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Lar appen hindre nettbrettet fra å gå over i sovemodus."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Lar appen hindre Android TV-enheten fra å settes i hvilemodus."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Lar appen hindre telefonen fra å gå over i sovemodus."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Prøv igjen."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ingen fingeravtrykk er registrert."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Denne enheten har ikke fingeravtrykkssensor."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensoren er midlertidig slått av."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan ikke bekrefte ansiktet. Prøv igjen."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Du har ikke konfigurert Ansiktslås."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Ansiktslås støttes ikke på denne enheten"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensoren er midlertidig slått av."</string>
<string name="face_name_template" msgid="3877037340223318119">"Ansikt <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilnettverket har ingen internettilgang"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Nettverket har ingen internettilgang"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Den private DNS-tjeneren kan ikke nås"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Tilkoblet"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> har begrenset tilkobling"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Trykk for å koble til likevel"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Byttet til <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-feilsøking tilkoblet"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Trykk for å slå av USB-feilsøking"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Velg for å deaktivere USB-debugging."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Trådløs feilsøking er koblet til"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Trykk for å slå av trådløs feilsøking"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Velg for å slå av trådløs feilsøking."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Testrammeverk-modus er slått på"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Tilbakestill enheten til fabrikkstandard for å slå av Testrammeverk-modus."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsollen er aktivert"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Forgrunnstjenesten fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, som ble startet i bakgrunnen, kommer ikke til å ha tillatelser mens den er i bruk i fremtidige R-delversjoner. Les go/r-bg-fgs-restriction og send inn en feilrapport."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du øke volumet til over anbefalt nivå?\n\nHvis du hører på et høyt volum over lengre perioder, kan det skade hørselen din."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruke tilgjengelighetssnarveien?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Når snarveien er på, starter en tilgjengelighetsfunksjon når du trykker inn begge volumknappene i tre sekunder."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vil du gi <xliff:g id="SERVICE">%1$s</xliff:g> full kontroll over enheten din?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Hvis du slår på <xliff:g id="SERVICE">%1$s</xliff:g>, bruker ikke enheten skjermlåsen til å forbedre datakryptering."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Full kontroll er passende for apper som hjelper deg med tilgjengelighetsbehov, men ikke for de fleste apper."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Se og kontrollér skjermen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan lese alt innhold på skjermen og vise innhold over andre apper."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Se og utfør handlinger"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan spore kommunikasjonen din med en app eller maskinvaresensor og kommunisere med apper på dine vegne."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillat"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Avvis"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Trykk på en funksjon for å begynne å bruke den:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Velg appene du vil bruke med Tilgjengelighet-knappen"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Velg appene du vil bruke med volumtastsnarveien"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> er slått av"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Endre snarveier"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Avbryt"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Ferdig"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Slå av snarveien"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Bruk snarveien"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Fargeinvertering"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Uten kategori"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Du angir viktigheten for disse varslene."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Dette er viktig på grunn av folkene som er involvert."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Tilpasset appvarsel"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Vil du la <xliff:g id="APP">%1$s</xliff:g> opprette en ny bruker med <xliff:g id="ACCOUNT">%2$s</xliff:g> (en bruker med denne kontoen eksisterer allerede)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Vil du la <xliff:g id="APP">%1$s</xliff:g> opprette en ny bruker med <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Legg til et språk"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tilgjengelighet-meny"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstingsfelt i <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blitt plassert i TILGANGSBEGRENSET-toppmappen"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personlig"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Jobb"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personlig visning"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Jobbvisning"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Kan ikke dele med jobbapper"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Kan ikke dele med personlige apper"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT-administratoren din har blokkert deling mellom personlige profiler og jobbprofiler"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Får ikke tilgang til jobbapper"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT-administratoren din lar deg ikke se personlig innhold i jobbapper"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Får ikke tilgang til personlige apper"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT-administratoren din lar deg ikke se jobbinnhold i personlige apper"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Slå på jobbprofilen for å dele innhold"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Slå på jobbprofilen for å se innhold"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Ingen apper er tilgjengelige"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Slå på"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ta opp eller spill av lyd i telefonsamtaler"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillater at denne appen tar opp eller spiller av lyd i telefonsamtaler når den er angitt som standard ringeapp."</string>
</resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index 6a61636..ba83505 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"तपाईंको संगठनले यस यन्त्रको व्यवस्थापन गर्दछ र नेटवर्क ट्राफिकको अनुगमन गर्न सक्छ। विवरणहरूका लागि ट्याप गर्नुहोस्।"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"तपाईंका प्रशासकले परिवर्तन गरेका स्थानसम्बन्धी सेटिङहरू"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"आफ्नो स्थानका सेटिङहरू हेर्न ट्याप गर्नुहोस्।"</string>
+ <string name="country_detector" msgid="7023275114706088854">"देश पत्ता लगाउने सुविधा"</string>
+ <string name="location_service" msgid="2439187616018455546">"स्थानसम्बन्धी सेवा"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS सेवा"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"सेन्सरको सूचनासम्बन्धी सेवा"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ट्वाइलाइट सेवा"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"तपाईंको यन्त्र मेटिनेछ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"प्रशासकको अनुप्रयोग प्रयोग गर्न मिल्दैन। तपाईंको यन्त्रको डेटा अब मेटाइने छ।\n\nतपाईंसँग प्रश्नहरू भएका खण्डमा आफ्नो संगठनका प्रशासकसँग सम्पर्क गर्नुहोस्।"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ले छाप्ने कार्यलाई असक्षम पार्यो।"</string>
@@ -245,6 +250,8 @@
<item quantity="other"> बग रिपोर्टको लागि <xliff:g id="NUMBER_1">%d</xliff:g> सेकेन्डमा स्क्रिसट लिँदै।</item>
<item quantity="one"> बग रिपोर्टको लागि <xliff:g id="NUMBER_0">%d</xliff:g> सेकेन्डमा स्क्रिसट लिँदै।</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"बग रिपोर्टको स्क्रिनसट खिचियो"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"बग रिपोर्टको स्क्रिनसट खिच्न सकिएन"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"मौन मोड"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"आवाज बन्द छ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ध्वनि खुल्ला छ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"अधिक स्थान प्रदायक आदेशहरू पहुँच गर्नुहोस्"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"अनुप्रयोगलाई अतिरिक्त स्थान प्रदायक आदेशहरू पहुँच गर्न अनुमति दिन्छ। यो अनुप्रयोगलाई GPS वा अन्य स्थान स्रोतहरूको संचालन साथै हस्तक्षेप गर्न अनुमति दिन सक्छ।"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"अग्रभूमिमा मात्र सटीक स्थानमाथि पहुँच राख्नुहोस्"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"यो अनुप्रयोगले अग्रभागमा चलिरहेको अवस्थामा मात्र तपाईंलाई स्थानको सटिक जानकारी दिन सक्छ। स्थानसम्बन्धी सेवाहरू अनिवार्य रूपमा सक्रिय गरिएका हुनु पर्छ र अनुप्रयोगले यिनीहरूको प्रयोग गर्न सकोस् भन्नाका खातिर तपाईंको यन्त्रमै उपलब्ध हुनु पर्छ। यस कार्यले गर्दा ब्याट्री बढी खर्च हुन सक्छ।"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"यो अनुप्रयोग चलाएका बेला यसले स्थानसम्बन्धी सेवाहरूबाट तपाईंको स्थानको सटीक जानकारी प्राप्त गर्न सक्छ। तपाईंको यन्त्रमा स्थानसम्बन्धी सेवाहरू सक्रिय गरिएको छ भने मात्र यो अनुप्रयोगले स्थानको जानकारी प्राप्त गर्न सक्छ। यसले ब्याट्रीको उपयोग बढाउन सक्छ।"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"अग्रभागमा मात्र अनुमानित स्थानमाथि पहुँच राख्नुहोस्"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"यो अनुप्रयोगले अग्रभागमा चलिरहेको अवस्थामा मात्र तपाईंको स्थानको अनुमानित जानकारी दिन सक्छ। स्थानसम्बन्धी सेवाहरू अनिवार्य रूपमा सक्रिय गरिएका हुनु पर्छ र अनुप्रयोगले यिनीहरूको प्रयोग गर्न सकोस् भन्नाका खातिर तपाईंको यन्त्रमै उपलब्ध हुनु पर्छ।"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"यो अनुप्रयोग चलाएका बेला यसले स्थानसम्बन्धी सेवाहरूबाट तपाईंको स्थानको अनुमानित जानकारी प्राप्त गर्न सक्छ। तपाईंको यन्त्रमा स्थानसम्बन्धी सेवाहरू सक्रिय गरिएको छ भने मात्र यो अनुप्रयोगले स्थानको जानकारी प्राप्त गर्न सक्छ।"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"पृष्ठभूमिमा स्थानसम्बन्धी पहुँच"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"यो अनुप्रयोगले अग्रभागमा चल्दा स्थानसम्बन्धी पहुँच प्राप्त गर्नुका साथै पृष्ठभूमिमा चल्दा पनि स्थानसम्बन्धी पहुँच प्राप्त गर्न सक्छ।"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"यो अनुप्रयोगले जुनसुकै बेला (अनुप्रयोग नचलाएका बेलामा पनि) स्थानमाथि पहुँच राख्न सक्छ।"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"तपाईँका अडियो सेटिङहरू परिवर्तन गर्नुहोस्"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"अनुप्रयोगलाई ग्लोबल अडियो सेटिङहरू परिमार्जन गर्न अनुमति दिन्छ, जस्तै आवाजको मात्रा र आउटपुटको लागि कुन स्पिकर प्रयोग गर्ने।"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"अडियो रेकर्ड गर्नुहोस्"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"यस अनुप्रयोगले जुनसुकै समय क्यामेराको प्रयोग गरी तस्बिर खिच्न र भिडियो रेकर्ड गर्न सक्छ।"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"अनुप्रयोग वा सेवालाई तस्बिर र भिडियो खिच्न प्रणालीका क्यामेराहरूमाथि पहुँच राख्न दिनुहोस्"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"यस विशेषाधिकार प्राप्त अनुप्रयोगले जुनसुकै समय प्रणालीको क्यामेरा प्रयोग गरी तस्बिर खिच्न र भिडियो रेकर्ड गर्न सक्छ। अनुप्रयोगसँग पनि android.permission.CAMERA सम्बन्धी अनुमति हुनु पर्छ"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"कम्पन नियन्त्रण गर्नुहोस्"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"अनुप्रयोगलाई भाइब्रेटर नियन्त्रण गर्न अनुमति दिन्छ।"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"यो अनुप्रयोगलाई कम्पनको स्थितिमाथि पहुँच राख्न दिनुहोस्।"</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"कल गर्दाको अनुभवलाई सुधार्न यस अनुप्रयोगलाई प्रणाली मार्फत कलहरू गर्न अनुमति दिन्छ।"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"प्रणालीमार्फत कलहरू हेर्नुका साथै तिनीहरूलाई नियन्त्रण गर्नुहोस्।"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"अनुप्रयोगलाई यन्त्रमा जारी रहेका कलहरू हेर्नुका साथै तिनीहरूलाई गर्ने अनुमति दिनुहोस्। यसमा गरिएका कलहरूको सङ्ख्या र कलहरूको अवस्था जस्ता जानकारी समावेश हुन्छन्।"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"अर्को अनुप्रयोगमा सुरु गरिएको कल जारी राख्नुहोस्"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"यस अनुप्रयोगलाई अर्को अनुप्रयोगमा सुरु गरिएको कल जारी राख्ने अनुमति दिन्छ।"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"फोन नम्बरहरू पढ्ने"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"उक्त अनुप्रयोगलाई यस यन्त्रको फोन नम्बरहरूमाथि पहुँच राख्न दिनुहोस्।"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"कारको स्क्रिन सक्रिय राख्नुहोस्"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ट्याब्लेटलाई निन्द्रामा जानबाट रोक्नुहोस्"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"आफ्नो Android TV यन्त्रलाई शयन अवस्थामा जान नदिनुहोस्"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"फोनलाई निदाउनबाट रोक्नुहोस्"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"यो अनुमतिले यस अनुप्रयोगलाई कारको स्क्रिन सक्रिय राख्न दिन्छ।"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ट्याब्लेटलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"अनुप्रयोगलाई तपाईंको Android TV यन्त्रलाई शयन अवस्थामा जानबाट रोक्ने अनुमति दिन्छ।"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"फोनलाई निस्क्रिय हुनबाट रोक्नको लागि अनुप्रयोगलाई अनुमति दिन्छ।"</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"पुन: प्रयास गर्नुहोला।"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"कुनै पनि फिंगरप्रिन्ट दर्ता गरिएको छैन।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"यो यन्त्रमा कुनै पनि फिंगरप्रिन्ट सेन्सर छैन।"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"केही समयका लागि सेन्सर असक्षम पारियो।"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"औंला <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"अनुहार पुष्टि गर्न सकिएन। फेरि प्रयास गर्नुहोस्।"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"तपाईंले फेस अनलक सुविधा सेट अप गर्नुभएको छैन।"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"यस यन्त्रमा फेस अनलक सुविधा प्रयोग गर्न मिल्दैन।"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"केही समयका लागि सेन्सर असक्षम पारियो।"</string>
<string name="face_name_template" msgid="3877037340223318119">"अनुहार <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1259,7 +1274,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"मोबाइल नेटवर्कको इन्टरनेटमाथि पहुँच छैन"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"नेटवर्कको इन्टरनेटमाथि पहुँच छैन"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"निजी DNS सर्भरमाथि पहुँच प्राप्त गर्न सकिँदैन"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"जोडियो"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> को जडान सीमित छ"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"जसरी भए पनि जडान गर्न ट्याप गर्नुहोस्"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> मा बदल्नुहोस्"</string>
@@ -1324,6 +1338,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB डिबग गर्ने सुविधा सुचारू छ"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB डिबग प्रक्रिया निष्क्रिय पार्न ट्याप गर्नुहोस्"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB डिबगिङलाई असक्षम पार्न ट्याप गर्नुहोस्।"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"वायरलेस डिबग प्रक्रिया जडान गरियो"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"वायरलेस डिबग प्रक्रिया निष्क्रिय पार्न ट्याप गर्नुहोस्"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"वायरलेस डिबग प्रक्रिया असक्षम पार्ने विकल्प चयन गर्नुहोस्।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"परीक्षण प्याकेज मोड सक्षम पारियो"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"परीक्षण प्याकेज मोड असक्षम पार्न फ्याक्ट्री रिसेट गर्नुहोस्।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"क्रमसम्बन्धी कन्सोल सक्षम पारियो"</string>
@@ -1627,10 +1644,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> को पृष्ठभूमिबाट सुरु गरिने अग्रभूमि सेवाका भविष्यमा आउने R बिल्डहरूमा चलाउँदै गर्दा प्रयोग गर्ने अनुमतिको दिइने छैन। कृपया go/r-bg-fgs-restriction हेर्नुहोस् र कुनै बगसम्बन्धी रिपोर्ट फाइल गर्नुहोस्।"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"सिफारिस तहभन्दा आवाज ठुलो गर्नुहुन्छ?\n\nलामो समय सम्म उच्च आवाजमा सुन्दा तपाईँको सुन्ने शक्तिलाई हानी गर्न सक्छ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"पहुँच सम्बन्धी सर्टकट प्रयोग गर्ने हो?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"यो सर्टकट सक्रिय हुँदा, ३ सेकेन्डसम्म दुवै भोल्युम बटन थिच्नुले पहुँचसम्बन्धी कुनै सुविधा सुरु गर्ने छ।"</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"तपाईंलाई पहुँच राख्न आवश्यक पर्ने कुरामा सहयोग गर्ने अनुप्रयोगहरूमाथि पूर्ण नियन्त्रण गर्नु उपयुक्त हुन्छ तर अधिकांश अनुप्रयोगहरूका हकमा यस्तो नियन्त्रण उपयुक्त हुँदैन।"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"स्क्रिन हेर्नुहोस् र नियन्त्रण गर्नुहोस्"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"यसले स्क्रिनमा देखिने सबै सामग्री पढ्न सक्छ र अन्य अनुप्रयोगहरूमा उक्त सामग्री देखाउन सक्छ।"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"कारबाहीहरू हेर्नुहोस् र तिनमा कार्य गर्नुहोस्"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"यसले कुनै अनुप्रयोग वा हार्डवेयर सेन्सरसँग तपाईंले गर्ने अन्तर्क्रियाको ट्र्याक गर्न सक्छ र तपाईंका तर्फबाट अनुप्रयोगहरूसँग अन्तर्क्रिया गर्न सक्छ।"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"अनुमति दिनुहोस्"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"इन्कार गर्नु⋯"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"सर्टकटहरू सम्पादन गर्नुहोस्"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"रद्द गर्नुहोस्"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"सर्टकटलाई निष्क्रिय पार्नुहोस्"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"सर्टकट प्रयोग गर्नुहोस्"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"रङ्ग उल्टाउने सुविधा"</string>
@@ -1851,6 +1887,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"वर्गीकरण नगरिएको"</string>
<string name="importance_from_user" msgid="2782756722448800447">"तपाईंले यी सूचनाहरूको महत्त्व सेट गर्नुहोस् ।"</string>
<string name="importance_from_person" msgid="4235804979664465383">"यसमा सङ्लग्न भएका मानिसहरूको कारणले गर्दा यो महत्वपूर्ण छ।"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"अनुप्रयोगसम्बन्धी आफ्नो रोजाइअनुसारको सूचना"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> (यस खाताको प्रयोगकर्ता पहिले नै अवस्थित छ) मा नयाँ प्रयोगकर्ता सिर्जना गर्न <xliff:g id="APP">%1$s</xliff:g> लाई अनुमति दिने हो?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> मा नयाँ प्रयोगकर्ता सिर्जना गर्न <xliff:g id="APP">%1$s</xliff:g> लाई अनुमति दिने हो?"</string>
<string name="language_selection_title" msgid="52674936078683285">"भाषा थप्नुहोस्"</string>
@@ -2022,22 +2059,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"पहुँचसम्बन्धी मेनु"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> को क्याप्सन बार।"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> लाई प्रतिबन्धित बाल्टीमा राखियो"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"व्यक्तिगत"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"काम"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"व्यक्तिगत दृश्य"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"कार्य दृश्य"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"कामसम्बन्धी अनुप्रयोगहरूसँग आदान प्रदान गर्न सकिँदैन"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"व्यक्तिगत अनुप्रयोगहरूसँग आदान प्रदान गर्न सकिँदैन"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"तपाईंका IT प्रशासकले व्यक्तिगत र कामसम्बन्धी कार्य प्रोफाइलहरूबिच आदान प्रदान गर्ने सुविधामाथि रोक लगाउनुभयो"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"कामसम्बन्धी अनुप्रयोगहरूमाथि पहुँच राख्न सकिएन"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"तपाईंका IT प्रशासकले तपाईंलाई कामसम्बन्धी अनुप्रयोगहरूमा व्यक्तिगत सामग्री हेर्ने अनुमति दिनुभएको छैन"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"व्यक्तिगत अनुप्रयोगहरूमाथि पहुँच राख्न सकिएन"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"तपाईंका IT प्रशासकले तपाईंलाई व्यक्तिगत अनुप्रयोगहरूमा कामसम्बन्धी सामग्री हेर्ने अनुमति दिनुभएको छैन"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"सामग्री आदान प्रदान गर्न कार्य प्रोफाइल सक्रिय गर्नुहोस्"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"सामग्री हेर्न कार्य प्रोफाइल सक्रिय गर्नुहोस्"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"कुनै पनि अनुप्रयोग उपलब्ध छैन"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"सक्रिय गर्नुहोस्"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"टेलिफोन कल गर्दै गर्दा अडियो रेकर्ड गर्नुहोस् वा प्ले गर्नुहोस्"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"यस अनुप्रयोगलाई पूर्वनिर्धारित डायलर अनुप्रयोग निर्धारण गर्दा टेलिफोन कलको अडियो रेकर्ड गर्ने र प्ले गर्ने अनुमति दिन्छ।"</string>
</resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index e959a07..f5897d3 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Dit apparaat wordt beheerd door je organisatie. Het netwerkverkeer kan worden bijgehouden. Tik voor meer informatie."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Locatie-instellingen gewijzigd door je beheerder"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tik om je locatie-instellingen te bekijken."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Landdetectie"</string>
+ <string name="location_service" msgid="2439187616018455546">"Locatieservice"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-service"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Service voor sensormeldingen"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Service voor schemering"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Je apparaat wordt gewist"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"De beheer-app kan niet worden gebruikt. Je apparaat wordt nu gewist.\n\nNeem contact op met de beheerder van je organisatie als je vragen hebt."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Afdrukken uitgeschakeld door <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Er wordt over <xliff:g id="NUMBER_1">%d</xliff:g> seconden een screenshot gemaakt voor het bugrapport.</item>
<item quantity="one">Er wordt over <xliff:g id="NUMBER_0">%d</xliff:g> seconde een screenshot gemaakt voor het bugrapport.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Screenshot gemaakt voor bugrapport"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Kan geen screenshot maken voor bugrapport"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Stille modus"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Geluid is UIT"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Geluid is AAN"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"toegang tot extra opdrachten van locatieaanbieder"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Hiermee kan de app toegang krijgen tot extra opdrachten voor de locatieprovider. De app kan hiermee de werking van gps of andere locatiebronnen te verstoren."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"alleen toegang tot precieze locatie op de voorgrond"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Deze app kan je exacte locatie ophalen als de app op de voorgrond wordt uitgevoerd. De app kan alleen gebruikmaken van de locatieservices als die zijn ingeschakeld en beschikbaar zijn op je apparaat. Hierdoor kan het batterijverbruik toenemen."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Deze app kan je precieze locatie opvragen bij de locatieservices terwijl de app wordt gebruikt. De app kan de locatie alleen opvragen als de locatieservices voor je apparaat zijn ingeschakeld. Hierdoor kan het batterijgebruik toenemen."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"alleen toegang tot geschatte locatie op de voorgrond"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Deze app kan je geschatte locatie alleen opvragen als de app op de voorgrond wordt gebruikt. De app kan de locatieservices alleen gebruiken als ze zijn ingeschakeld en beschikbaar zijn op je apparaat."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Deze app kan je geschatte locatie opvragen bij de locatieservices terwijl de app wordt gebruikt. De app kan de locatie alleen opvragen als de locatieservices voor je apparaat zijn ingeschakeld."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"toegang tot locatie op de achtergrond"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Deze app heeft niet alleen op de voorgrond toegang tot je locatie, maar ook als deze actief is op de achtergrond."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Deze app heeft altijd toegang tot de locatie, ook als de app niet wordt gebruikt."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"je audio-instellingen wijzigen"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Hiermee kan de app algemene audio-instellingen wijzigen zoals het volume en welke luidspreker wordt gebruikt voor de uitvoer."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"audio opnemen"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Deze app kan op elk moment foto\'s maken en video\'s opnemen met de camera."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Een app of service toegang tot systeemcamera\'s geven om foto\'s en video\'s te maken"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Deze gemachtigde app/systeem-app kan op elk gewenst moment foto\'s maken en video\'s opnemen met een systeemcamera. De app moet ook het recht android.permission.CAMERA hebben."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Een app of service toestaan callbacks te ontvangen over camera-apparaten die worden geopend of gesloten."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Deze ondertekeningsapp kan callback ontvangen als een camera-apparaat wordt geopend (en door welk app-pakket) of gesloten."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"trilling beheren"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Hiermee kan de app de trilstand beheren."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Hiermee heeft de app toegang tot de status van de trilstand."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Hiermee kan de app de bijbehorende gesprekken doorschakelen via het systeem om de belfunctionaliteit te verbeteren."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"gesprekken via het systeem bekijken en beheren"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Hiermee kan de app actieve gesprekken op het apparaat bekijken en beheren. Dit omvat informatie zoals nummers voor gesprekken en de status van de gesprekken."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"een gesprek voortzetten vanuit een andere app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Hiermee kan de app een gesprek voortzetten dat is gestart in een andere app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"telefoonnummers lezen"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Hiermee kan de app toegang krijgen tot de telefoonnummers van het apparaat."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"autoscherm ingeschakeld houden"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"voorkomen dat tablet overschakelt naar slaapmodus"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"voorkomen dat je Android TV overschakelt naar slaapstand"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"voorkomen dat telefoon overschakelt naar slaapmodus"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Hiermee kan de app het autoscherm ingeschakeld houden."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Hiermee kan de app voorkomen dat de tablet overschakelt naar de slaapmodus."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Hiermee kan de app voorkomen dat het Android TV-apparaat overschakelt naar de slaapstand."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Hiermee kan de app voorkomen dat de telefoon overschakelt naar de slaapmodus."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Probeer het opnieuw."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Geen vingerafdrukken geregistreerd."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dit apparaat heeft geen vingerafdruksensor."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor tijdelijk uitgeschakeld."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Vinger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Kan gezicht niet verifiëren. Probeer het nog eens."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Je hebt ontgrendelen via gezichtsherkenning niet ingesteld."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Ontgrendelen via gezichtsherkenning wordt niet ondersteund op dit apparaat."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor tijdelijk uitgeschakeld."</string>
<string name="face_name_template" msgid="3877037340223318119">"Gezicht <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobiel netwerk heeft geen internettoegang"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Netwerk heeft geen internettoegang"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Geen toegang tot privé-DNS-server"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Verbonden"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> heeft beperkte connectiviteit"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tik om toch verbinding te maken"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Overgeschakeld naar <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-foutopsporing verbonden"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tik om USB-foutopsporing uit te schakelen"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecteer deze optie om USB-foutopsporing uit te schakelen."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Draadloze foutopsporing verbonden"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tik om draadloze foutopsporing uit te schakelen"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecteer deze optie om draadloze foutopsporing uit te schakelen."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test harness-modus is ingeschakeld"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Reset de fabrieksinstellingen om de test harness-modus uit te schakelen."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriële console ingeschakeld"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"De op de achtergrond gestarte voorgrondservice van <xliff:g id="PACKAGENAME">%1$s</xliff:g> heeft geen rechten tijdens gebruik in toekomstige R-builds. Ga naar go/r-bg-fgs-restriction en dien een bugrapport in."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Volume verhogen tot boven het aanbevolen niveau?\n\nAls je langere tijd op hoog volume naar muziek luistert, raakt je gehoor mogelijk beschadigd."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Snelkoppeling toegankelijkheid gebruiken?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Als de snelkoppeling is ingeschakeld, kun je drie seconden op beide volumeknoppen drukken om een toegankelijkheidsfunctie te starten."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Toestaan dat <xliff:g id="SERVICE">%1$s</xliff:g> volledige controle over je apparaat heeft?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Als je <xliff:g id="SERVICE">%1$s</xliff:g> inschakelt, maakt je apparaat geen gebruik van schermvergrendeling om de gegevensversleuteling te verbeteren."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Volledige controle is gepast voor apps die je helpen met toegankelijkheid, maar voor de meeste apps is het ongepast."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Scherm bekijken en bedienen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"De functie kan alle content op het scherm lezen en content via andere apps weergeven."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Acties bekijken en uitvoeren"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"De functie kan je interacties met een app of een hardwaresensor bijhouden en namens jou met apps communiceren."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Toestaan"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Weigeren"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tik op een functie om deze te gebruiken:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Apps kiezen voor gebruik met de knop Toegankelijkheid"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Apps kiezen voor gebruik met de sneltoets via de volumeknop"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> is uitgeschakeld"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Snelkoppelingen bewerken"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Annuleren"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gereed"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Sneltoets uitschakelen"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sneltoets gebruiken"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Kleurinversie"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Geen categorie"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Je stelt het belang van deze meldingen in."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Dit is belangrijk vanwege de betrokken mensen."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Aangepaste app-melding"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Toestaan dat <xliff:g id="APP">%1$s</xliff:g> een nieuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> maakt (er is al een gebruiker met dit account)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Toestaan dat <xliff:g id="APP">%1$s</xliff:g> een nieuwe gebruiker met <xliff:g id="ACCOUNT">%2$s</xliff:g> maakt?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Een taal toevoegen"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toegankelijkheidsmenu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ondertitelingsbalk van <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in de bucket RESTRICTED geplaatst"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Persoonlijk"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Werk"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Persoonlijke weergave"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Werkweergave"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Kan niet delen met werk-apps"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Kan niet delen met persoonlijke apps"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Je IT-beheerder heeft delen tussen persoonlijke en werkprofielen geblokkeerd"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Geen toegang tot werk-apps"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Je IT-beheerder staat niet toe dat je persoonlijke content bekijkt in werk-apps"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Geen toegang tot persoonlijke apps"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Je IT-beheerder staat niet toe dat je werkcontent bekijkt in persoonlijke apps"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Schakel het werkprofiel in om content te delen"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Schakel het werkprofiel in om content te bekijken"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Geen apps beschikbaar"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Inschakelen"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Audio opnemen of afspelen in telefoongesprekken"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Hiermee mag deze app (indien toegewezen als standaard dialer-app) audio opnemen of afspelen in telefoongesprekken."</string>
</resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 53b231c..3feea93 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ଆପଣଙ୍କ ସଂସ୍ଥା ଏହି ଡିଭାଇସକୁ ପରିଚାଳନା କରନ୍ତି ଏବଂ ନେଟୱର୍କ ଟ୍ରାଫିକ୍ ନୀରିକ୍ଷଣ କରନ୍ତି। ବିବରଣୀ ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ଲୋକେସନ୍ ସେଟିଂସ୍ ଆପଣଙ୍କର ଆଡମିନଙ୍କ ଦ୍ୱରା ବଦଳାଯାଇଛି"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ଆପଣଙ୍କର ଲୋକେସନ୍ ସେଟିଂସ୍ ଦେଖିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ।"</string>
+ <string name="country_detector" msgid="7023275114706088854">"କଣ୍ଟ୍ରି ଡିଟେକ୍ଟର୍"</string>
+ <string name="location_service" msgid="2439187616018455546">"ଲୋକେସନ୍ ସର୍ଭିସ୍"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS ସର୍ଭିସ୍"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"ସେନ୍ସର୍ ନୋଟିଫିକେସନ୍ ସର୍ଭିସ୍"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ଟ୍ୱିଲାଇଟ୍ ସର୍ଭିସ୍"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ଆପଣଙ୍କ ଡିଭାଇସ୍ ବର୍ତ୍ତମାନ ଲିଭାଯିବ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ଆଡମିନ୍ ଆପ୍ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ। ଆପଣଙ୍କ ଡିଭାଇସ୍ର ସମସ୍ତ ଡାଟାକୁ ବର୍ତ୍ତମାନ ଲିଭାଇଦିଆଯିବ। \n\nଯଦି ଆପଣଙ୍କର କୌଣସି ପ୍ରଶ୍ନ ରହିଥାଏ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନ୍ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ଦ୍ଵାରା ପ୍ରିଣ୍ଟିଙ୍ଗ ଅକ୍ଷମ କରାଯାଇଛି"</string>
@@ -245,6 +250,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> ସେକେଣ୍ଡରେ ବଗ୍ ରିପୋର୍ଟ ପାଇଁ ସ୍କ୍ରୀନଶଟ୍ ନେଉଛି।</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> ସେକେଣ୍ଡରେ ବଗ୍ ରିପୋର୍ଟ ପାଇଁ ସ୍କ୍ରୀନଶଟ୍ ନେଉଛି।</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ବଗ୍ ରିପୋର୍ଟ ସହ ସ୍କ୍ରିନସଟ୍ ନିଆଯାଇଛି"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ବଗ୍ ରିପୋର୍ଟ ସହ ସ୍କ୍ରିନସଟ୍ ନେବାରେ ବିଫଳ ହୋଇଛି"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ସାଇଲେଣ୍ଟ ମୋଡ୍"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ସାଉଣ୍ଡ ଅଫ୍ ଅଛି"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ସାଉଣ୍ଡ ଅନ୍ ଅଛି"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡକୁ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ଅତିରିକ୍ତ ଲୋକେସନ୍ ପ୍ରଦାନକାରୀ କମାଣ୍ଡ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଏ। GPS କିମ୍ବା ଅନ୍ୟ ଲୋକେସନ୍ ସୋର୍ସଗୁଡିକରେ ଆପ୍ଟି ପ୍ରଭାବ ପକାଇପାରେ।"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"କେବଳ ସମ୍ମୁଖଭାଗରେ ସଠିକ୍ ଲୋକେଶନ୍ର ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ଏହି ଆପ୍ କେବଳ ସମ୍ମୁଖ ପଟରେ ଥିବାବେଳେ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେସନ୍ ପ୍ରାପ୍ତ କରିପାରିବ। ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ଲୋକେସନ୍ ସେବା ଚାଲୁ ଏବଂ ଉପଲବ୍ଧ ହେବା ଦରକାର ଯେପରି ଆପ୍ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ସକ୍ଷମ ହେବ। ଏହା ବ୍ୟାଟେରୀ ଅଧିକା ଖର୍ଚ୍ଚ କରିପାରେ।"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ସମୟରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ସଠିକ୍ ଲୋକେସନ୍ ପାଇପାରିବ। ଆପକୁ ଲୋକେସନ୍ ମିଳିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତ ଭାବରେ ଚାଲୁ କରାଯିବା ଆବଶ୍ୟକ। ଏହା ବ୍ୟାଟେରୀର ବ୍ୟବହାରକୁ ବଢ଼ାଇପାରେ।"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"କେବଳ ସମ୍ମୁଖପଟରେ ହାରାହାରି ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ଏହି ଆପ୍ କେବଳ ସେତେବେଳେ ଆପଣଙ୍କର ଆନୁମାନିକ ଲୋକେସନ୍ ପାଇପାରିବ, ଯେତେବେଳେ ଏହା ସମ୍ମୁଖପଟରେ ଥିବ। ଆପଣଙ୍କ ଡିଭାଇସ୍ରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ଚାଲୁ ଏବଂ ଉପଲବ୍ଧ ହେବା ଦରକାର ଯେପରି ଆପ୍ ସେଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାକୁ ସକ୍ଷମ ହେବ।"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ସମୟରେ ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକରୁ ଆପଣଙ୍କର ଆନୁମାନିକ ଲୋକେସନ୍ ପାଇପାରିବ। ଆପକୁ ଲୋକେସନ୍ ମିଳିବା ପାଇଁ ଆପଣଙ୍କ ଡିଭାଇସର ଲୋକେସନ୍ ସେବାଗୁଡ଼ିକ ନିଶ୍ଚିତ ଭାବରେ ଚାଲୁ କରାଯିବା ଆବଶ୍ୟକ।"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ବ୍ୟାକ୍ଗ୍ରାଉଣ୍ଡ୍ରେ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରନ୍ତୁ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ଏହି ଆପ୍ ସମ୍ମୁଖପଟ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିବା ସହ ପୃଷ୍ଠପଟରେ ଚାଲିବା ସମୟରେ ଲୋକେସନ୍ ଆକ୍ସେସ୍ କରିପାରିବ।"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ଏହି ଆପ୍ ବ୍ୟବହାରରେ ଥିବା ବେଳେ ମଧ୍ୟ, ଯେ କୌଣସି ସମୟରେ ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ।"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ଆପଣଙ୍କ ଅଡିଓ ସେଟିଙ୍ଗକୁ ପରିବର୍ତ୍ତନ କରନ୍ତୁ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ଆପ୍କୁ ଗ୍ଲୋବାଲ୍ ଅଡିଓ ସେଟିଙ୍ଗ, ଯେପରିକି ଭଲ୍ୟୁମ୍କୁ ସଂଶୋଧିତ କରିବାକୁ ଏବଂ ଆଉଟପୁଟ୍ ପାଇଁ ସ୍ପିକର୍ ବ୍ୟବହାର କରିବାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ଅଡିଓ ରେକର୍ଡ କରନ୍ତୁ"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ଏହି ଆପ୍ ଯେକୌଣସି ସମୟରେ କ୍ୟାମେରା ବ୍ୟବହାର କରି ଫଟୋ ଉଠାଇପାରେ ଏବଂ ଭିଡିଓ ରେକର୍ଡ କରିପାରେ।"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ଛବି ଏବଂ ଭିଡିଓଗୁଡ଼ିକୁ ନେବା ପାଇଁ ସିଷ୍ଟମ୍ କ୍ୟାମେରାଗୁଡ଼ିକୁ କୌଣସି ଆପ୍ଲିକେସନ୍ କିମ୍ବା ସେବା ଆକ୍ସେସ୍ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ଏହି ପ୍ରମୁଖ | ସିଷ୍ଟମ୍ ଆପ୍ ଯେକୌଣସି ସମୟରେ ଏକ ସିଷ୍ଟମ୍ କ୍ୟାମେରା ବ୍ୟବହାର କରି ଛବିଗୁଡ଼ିକ ନେଇପାରେ ଏବଂ ଭିଡିଓଗୁଡ଼ିକ ରେକର୍ଡ କରିପାରେ। ଆପ୍ ମଧ୍ୟ android.permission.CAMERA ଅନୁମତି ଆବଶ୍ୟକ କରେ"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"କମ୍ପନ ନିୟନ୍ତ୍ରଣ କରନ୍ତୁ"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ଆପ୍କୁ, ଭାଇବ୍ରେଟର୍ ନିୟନ୍ତ୍ରଣ କରିବାକୁ ଦେଇଥାଏ।"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ଭାଇବ୍ରେଟର୍ ସ୍ଥିତି ଆକ୍ସେସ୍ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"କଲ୍ କରିବାର ଅନୁଭୂତି ବଢ଼ାଇବାକୁ ସିଷ୍ଟମ୍ ଜରିଆରେ ଆପର କଲ୍ଗୁଡ଼ିକୁ ରୁଟ୍ କରିବାକୁ ଏହାକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ସିଷ୍ଟମ୍ ମାଧ୍ୟମରେ କଲ୍ଗୁଡ଼ିକୁ ଦେଖିଥାଏ ଏବଂ ନିୟନ୍ତ୍ରଣ କରିଥାଏ।"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ଆପ୍କୁ ଡିଭାଇସ୍ରେ ଚାଲୁଥିବା କଲ୍ଗୁଡ଼ିକୁ ଦେଖିବାକୁ ଏବଂ ନିୟନ୍ତ୍ରଣ କରିବାକୁ ଅନୁମତି ଦେଇଥାଏ। ଏଥିରେ କଲ୍ଗୁଡ଼ିକ ପାଇଁ କଲ୍ ନମ୍ବର୍ ଏବଂ କଲ୍ଗୁଡ଼ିକର ସ୍ଥିତି ପରି ସୂଚନା ଅନ୍ତର୍ଭୁକ୍ତ ଅଛି।"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ଅନ୍ୟ ଏକ ଆପ୍ରୁ କଲ୍କୁ ଜାରି ରଖନ୍ତୁ"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ଅନ୍ୟ ଆପ୍ରେ ଆରମ୍ଭ ହୋଇଥିବା ଗୋଟିଏ କଲ୍କୁ ଜାରି ରଖିବା ପାଇଁ ଆପ୍କୁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ଫୋନ୍ ନମ୍ବର ପଢ଼େ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ଏହି ଡିଭାଇସର ଫୋନ୍ ନମ୍ବର ଆକ୍ସେସ୍ କରିବାକୁ ଆପକୁ ଅନୁମତି ଦିଏ।"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"କାର ସ୍କ୍ରିନକୁ ଚାଲୁ ରଖନ୍ତୁ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ଟାବଲେଟ୍କୁ ସ୍ଲୀପିଙ୍ଗ ମୋଡ୍କୁ ଯିବାକୁ ରୋକନ୍ତୁ"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ସ୍ଲିପିଂରୁ ଆପଣଙ୍କର Android ଟିଭି ଡିଭାଇସ୍କୁ ପ୍ରତିରୋଧ କରନ୍ତୁ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ଫୋନକୁ ସ୍ଲୀପିଙ୍ଗ ମୋଡ୍କୁ ଯିବାକୁ ରୋକନ୍ତୁ"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"କାର ସ୍କ୍ରିନକୁ ଚାଲୁ ରଖିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ଆପ୍କୁ, ଟାବଲେଟ୍ଟିକୁ ସ୍ଲୀପ୍ ମୋଡ୍କୁ ଯିବାରେ ପ୍ରତିରୋଧ କରିବାକୁ ଦେଇଥାଏ।"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ଏହି ଆପ୍ ଆପଣଙ୍କର Android ଟିଭି ଡିଭାଇସ୍କୁ ସ୍ଲିପ୍ ମୋଡ୍କୁ ଯିବାରେ ପ୍ରତିରୋଧ କରିବା ପାଇଁ ଅନୁମତି ଦେଇଥାଏ।"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ଆପ୍କୁ, ଫୋନ୍ଟିକୁ ସ୍ଲୀପ୍ ମୋଡ୍କୁ ଯିବାରେ ପ୍ରତିରୋଧ କରିବାକୁ ଦେଇଥାଏ।"</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"କୌଣସି ଆଙ୍ଗୁଠି ଚିହ୍ନ ପଞ୍ଜୀକୃତ ହୋଇନାହିଁ।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ଏହି ଡିଭାଇସ୍ରେ ଟିପଚିହ୍ନ ସେନ୍ସର୍ ନାହିଁ।"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ସେନ୍ସରକୁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ଆଙ୍ଗୁଠି <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ମୁହଁ ଚିହ୍ନଟ କରିପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"ଆପଣ ଫେସ୍ ଅନ୍ଲକ୍ ସେଟ୍ ଅପ୍ କରିନାହାଁନ୍ତି"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"ଏହି ଡିଭାଇସ୍ରେ ଫେସ୍ ଅନ୍ଲକ୍ ସମର୍ଥିତ ନୁହେଁ।"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ସେନ୍ସରକୁ ଅସ୍ଥାୟୀ ଭାବେ ଅକ୍ଷମ କରାଯାଇଛି।"</string>
<string name="face_name_template" msgid="3877037340223318119">"<xliff:g id="FACEID">%d</xliff:g>ଙ୍କ ଫେସ୍"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ମୋବାଇଲ୍ ନେଟ୍ୱାର୍କରେ ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ନାହିଁ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ନେଟ୍ୱାର୍କରେ ଇଣ୍ଟର୍ନେଟ୍ ଆକ୍ସେସ୍ ନାହିଁ"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ବ୍ୟକ୍ତିଗତ DNS ସର୍ଭର୍ ଆକ୍ସେସ୍ କରିହେବ ନାହିଁ"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ସଂଯୁକ୍ତ ହୋଇଛି"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>ର ସୀମିତ ସଂଯୋଗ ଅଛି"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ତଥାପି ଯୋଗାଯୋଗ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>କୁ ବଦଳାଗଲା"</string>
@@ -1318,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ଡିବଗିଙ୍ଗ ସଂଯୁକ୍ତ ହୋଇଛି"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USBର ଡିବଗିଙ୍ଗ ସୁବିଧାକୁ ବନ୍ଦ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ଡିବଗିଙ୍ଗକୁ ଅକ୍ଷମ କରିବା ପାଇଁ ଚୟନ କରନ୍ତୁ।"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ୱେୟାରଲେସ୍ ଡିବଗିଂ ସଂଯୋଗ କରାଯାଇଛି"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ୱାୟାରଲେସର ଡିବଗିଂକୁ ବନ୍ଦ କରିବା ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ୱାୟାରଲେସ୍ ଡିବଗିଂକୁ ଅକ୍ଷମ କରିବା ପାଇଁ ଚୟନ କରନ୍ତୁ।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ଟେଷ୍ଟ ହାର୍ନେସ୍ ମୋଡ୍ ସକ୍ଷମ ଅଛି"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ଟେଷ୍ଟ ହାର୍ନେସ୍ ମୋଡ୍ ଅକ୍ଷମ କରିବାକୁ ଏକ ଫ୍ୟାକ୍ଟରୀ ରିସେଟ୍ କରନ୍ତୁ।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"କ୍ରମିକ କନ୍ସୋଲ୍କୁ ସକ୍ଷମ କରାଯାଇଛି"</string>
@@ -1621,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"ପୃଷ୍ଠଭୂମିରେ <xliff:g id="PACKAGENAME">%1$s</xliff:g>ରୁ ଆରମ୍ଭ ହୋଇଥିବା ସମ୍ମୁଖଭାଗ ସେବା ପାଇଁ ଭବିଷ୍ୟତର R ବିଲ୍ଡଗୁଡ଼ିକରେ ବ୍ୟବହାର କରାଯିବା ସମୟରେ ଅନୁମତି ସୁବିଧା ରହିବ ନାହିଁ। ଦୟାକରି go/r-bg-fgs-restriction ଦେଖନ୍ତୁ ଏବଂ ଏକ ବଗରିପୋର୍ଟ ଫାଇଲ୍ କରନ୍ତୁ।"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିଶ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ଆକ୍ସେସବିଲିଟି ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରିବେ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ସର୍ଟକଟ୍ ଚାଲୁ ଥିବା ବେଳେ, ଉଭୟ ଭଲ୍ୟୁମ୍ ବଟନ୍ 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇବା ଦ୍ୱାରା ଏକ ଆକ୍ସେସବିଲିଟି ଫିଚର୍ ଆରମ୍ଭ ହେବ।"</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ଯେଉଁ ଆପ୍ସ ଆପଣଙ୍କୁ ଆକ୍ସେସିବିଲିଟୀ ଆବଶ୍ୟକତାରେ ସହାୟତା କରେ, ସେହି ଆପ୍ସ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ନିୟନ୍ତ୍ରଣ ଉପଯୁକ୍ତ ଅଟେ, କିନ୍ତୁ ଅଧିକାଂଶ ଆପ୍ସ ପାଇଁ ଉପଯୁକ୍ତ ନୁହେଁ।"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ଭ୍ୟୁ ଏବଂ ସ୍କ୍ରିନ୍ ନିୟନ୍ତ୍ରଣ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ଏହା ସ୍କ୍ରିନ୍ର ସମସ୍ତ ବିଷୟବସ୍ତୁ ପଢ଼ିପାରେ ଏବଂ ଅନ୍ୟ ଆପ୍ସରେ ବିଷୟବସ୍ତୁ ପ୍ରଦର୍ଶନ କରିପାରେ।"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ଦେଖନ୍ତୁ ଏବଂ କାର୍ଯ୍ୟ ସମ୍ପାଦନ କରନ୍ତୁ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ଏହା କୌଣସି ଆପ୍ କିମ୍ବା ହାର୍ଡୱେର୍ ସେନ୍ସର୍ ସହ ଆପଣଙ୍କର ପାରସ୍ପରିକ ଆଦାନପ୍ରଦାନକୁ ଟ୍ରାକ୍ କରିପାରେ ଏବଂ ଆପଣଙ୍କ ତରଫରୁ ଆପ୍ସ ସହ ପରିଚିତ ହୋଇପାରେ।"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ଅନୁମତି"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ପ୍ରତ୍ୟାଖ୍ୟାନ"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ସର୍ଟକଟଗୁଡ଼ିକୁ ସମ୍ପାଦନ କରନ୍ତୁ"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ବାତିଲ୍ କରନ୍ତୁ"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ଶର୍ଟକଟ୍ ବନ୍ଦ କରନ୍ତୁ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ଶର୍ଟକଟ୍ ବ୍ୟବହାର କରନ୍ତୁ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ରଙ୍ଗ ବଦଳାଇବାର ସୁବିଧା"</string>
@@ -1845,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ଅବର୍ଗୀକୃତ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ପ୍ରମୁଖତା ଆପଣ ସେଟ୍ କରନ୍ତି।"</string>
<string name="importance_from_person" msgid="4235804979664465383">"ସମ୍ପୃକ୍ତ ଲୋକଙ୍କ କାରଣରୁ ଏହା ଗୁରୁତ୍ୱପୂର୍ଣ୍ଣ ଅଟେ।"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"କଷ୍ଟମ୍ ଆପ୍ ବିଜ୍ଞପ୍ତି"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g>ରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ <xliff:g id="ACCOUNT">%2$s</xliff:g>କୁ (ପୂର୍ବରୁ ଏହି ଆକାଉଣ୍ଟ ଉପଯୋଗକର୍ତ୍ତାଙ୍କ ନାମରେ ଅଛି) ଅନୁମତି ଦେବେ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g>ରେ ଏକ ନୂଆ ଉପଯୋଗକର୍ତ୍ତା ତିଆରି କରିବା ପାଇଁ <xliff:g id="ACCOUNT">%2$s</xliff:g>କୁ ଅନୁମତି ଦେବେ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ଏକ ଭାଷା ଯୋଡ଼ନ୍ତୁ"</string>
@@ -2016,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ଆକ୍ସେସିବିଲିଟୀ ମେନୁ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ର କ୍ୟାପ୍ସନ୍ ବାର୍।"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>କୁ ପ୍ରତିବନ୍ଧିତ ବକେଟରେ ରଖାଯାଇଛି"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ବ୍ୟକ୍ତିଗତ"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"କାର୍ଯ୍ୟ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ବ୍ୟକ୍ତିଗତ ଭ୍ୟୁ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"କାର୍ଯ୍ୟସ୍ଥଳୀ ସମ୍ବନ୍ଧିତ ଭ୍ୟୁ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"କାର୍ଯ୍ୟସ୍ଥଳୀ ଆପଗୁଡ଼ିକ ସହ ସେୟାର୍ କରିପାରିବ ନାହିଁ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକ ସହ ସେୟାର୍ କରିପାରିବ ନାହିଁ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ବ୍ୟକ୍ତିଗତ ଏବଂ ୱାର୍କ ପ୍ରୋଫାଇଲଗୁଡ଼ିକ ମଧ୍ୟରେ ସେୟାରିଂ ବ୍ଲକ୍ କରିଛନ୍ତି"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"କାର୍ଯ୍ୟସ୍ଥଳୀ ସମ୍ବନ୍ଧିତ ଆପଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରିବେ ନାହିଁ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ କାର୍ଯ୍ୟସ୍ଥଳୀ ସମ୍ବନ୍ଧିତ ଆପଗୁଡ଼ିକରେ ବ୍ୟକ୍ତିଗତ ବିଷୟବସ୍ତୁ ଦେଖିବାକୁ ଦିଅନ୍ତି ନାହିଁ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକୁ ଆକ୍ସେସ୍ କରିପାରିବେ ନାହିଁ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ଆପଣଙ୍କ IT ଆଡମିନ୍ ଆପଣଙ୍କୁ ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକରେ କାର୍ଯ୍ୟସ୍ଥଳୀ ସମ୍ବନ୍ଧିତ ବିଷୟବସ୍ତୁ ଦେଖିବାକୁ ଦିଅନ୍ତି ନାହିଁ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ବିଷୟବସ୍ତୁ ସେୟାର୍ କରିବାକୁ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଚାଲୁ କରନ୍ତୁ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ବିଷୟବସ୍ତୁ ଦେଖିବାକୁ ୱାର୍କ ପ୍ରୋଫାଇଲ୍ ଚାଲୁ କରନ୍ତୁ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"କୌଣସି ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ଚାଲୁ କରନ୍ତୁ"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ଟେଲିଫୋନି କଲଗୁଡ଼ିକରେ ଅଡିଓ ରେକର୍ଡ କରନ୍ତୁ ବା ଚଲାନ୍ତୁ"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ଏହି ଆପ୍ ଡିଫଲ୍ଟ ଡାଏଲର୍ ଆପ୍ଲିକେସନ୍ ଭାବରେ ଆସାଇନ୍ ହୋଇଥିଲେ ଟେଲିଫୋନି କଲଗୁଡ଼ିକରେ ଅଡିଓ ରେକର୍ଡ କରିବା ବା ଚଲାଇବା ପାଇଁ ଅନୁମତି ଦିଅନ୍ତୁ।"</string>
</resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index b5194eb7..4097198 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ਤੁਹਾਡਾ ਸੰਗਠਨ ਇਸ ਡੀਵਾਈਸ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ ਅਤੇ ਨੈੱਟਵਰਕ ਟਰੈਫਿਕ ਦੀ ਨਿਗਰਾਨੀ ਕਰ ਸਕਦਾ ਹੈ। ਵੇਰਵਿਆਂ ਲਈ ਟੈਪ ਕਰੋ।"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਨੂੰ ਬਦਲ ਦਿੱਤਾ ਹੈ"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ਆਪਣੀਆਂ ਟਿਕਾਣਾ ਸੈਟਿੰਗਾਂ ਨੂੰ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ।"</string>
+ <string name="country_detector" msgid="7023275114706088854">"ਦੇਸ਼ ਦਾ ਪਤਾ ਲਗਾਉਣ ਦੀ ਸੁਵਿਧਾ"</string>
+ <string name="location_service" msgid="2439187616018455546">"ਟਿਕਾਣਾ ਸੇਵਾ"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS ਸੇਵਾ"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"ਸੈਂਸਰ ਸੂਚਨਾ ਸੇਵਾ"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ਟਵੀਲਾਈਟ ਸੇਵਾ"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਮਿਟਾਇਆ ਜਾਏਗਾ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਹੁਣ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਡਾਟਾ ਮਿਟਾਇਆ ਜਾਵੇਗਾ।\n\nਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਸਵਾਲ ਹਨ, ਤਾਂ ਆਪਣੀ ਸੰਸਥਾ ਦੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ਵੱਲੋਂ ਪ੍ਰਿੰਟ ਕਰਨਾ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
@@ -245,6 +250,8 @@
<item quantity="one">ਬੱਗ ਰਿਪੋਰਟ ਲਈ <xliff:g id="NUMBER_1">%d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ।</item>
<item quantity="other">ਬੱਗ ਰਿਪੋਰਟ ਲਈ <xliff:g id="NUMBER_1">%d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਜਾ ਰਿਹਾ ਹੈ।</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ਬੱਗ ਰਿਪੋਰਟ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਿਆ ਗਿਆ"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ਬੱਗ ਰਿਪੋਰਟ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲੈਣਾ ਅਸਫਲ ਰਿਹਾ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"ਸਾਈਲੈਂਟ ਮੋਡ"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ਅਵਾਜ਼ ਬੰਦ ਹੈ"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ਅਵਾਜ਼ ਚਾਲੂ ਹੈ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ਵਾਧੂ ਟਿਕਾਣਾ ਪ੍ਰਦਾਤਾ ਕਮਾਂਡਾਂ ਤੱਕ ਪਹੁੰਚ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ਐਪ ਨੂੰ ਵਾਧੂ ਟਿਕਾਣਾ ਪ੍ਰਦਾਤਾ ਕਮਾਂਡਾਂ ਤੱਕ ਪਹੁੰਚ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ। ਇਹ ਐਪ ਨੂੰ GPS ਜਾਂ ਹੋਰ ਟਿਕਾਣਾ ਸਰੋਤਾਂ ਦੇ ਓਪਰੇਸ਼ਨ ਵਿੱਚ ਵਿਘਨ ਪਾਉਣ ਦੀ ਆਗਿਆ ਦੇ ਸਕਦਾ ਹੈ।"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"ਸਿਰਫ਼ ਫੋਰਗ੍ਰਾਊਂਡ ਵਿੱਚ ਸਟੀਕ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ਇਹ ਐਪ ਸਿਰਫ਼ ਉਦੋਂ ਤੁਹਾਡਾ ਸਟੀਕ ਟਿਕਾਣਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ, ਜਦੋਂ ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਵੇ। ਐਪ ਦੇ ਵਰਤਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ। ਇਸ ਨਾਲ ਬੈਟਰੀ ਦੀ ਖਪਤ ਵਧ ਸਕਦੀ ਹੈ।"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"ਇਹ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਤੋਂ ਤੁਹਾਡੇ ਸਟੀਕ ਟਿਕਾਣੇ ਦਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ ਤਾਂ ਜੋ ਐਪ ਟਿਕਾਣਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੇ। ਇਸ ਨਾਲ ਬੈਟਰੀ ਵਰਤੋਂ ਵਧ ਸਕਦੀ ਹੈ।"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"ਸਿਰਫ਼ ਸਕ੍ਰੀਨ \'ਤੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰੋ"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ਇਹ ਐਪ ਸਿਰਫ਼ ਉਦੋਂ ਤੁਹਾਡਾ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ, ਜਦੋਂ ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਹੋਵੇ। ਐਪ ਦੇ ਵਰਤਣ ਲਈ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਅਤੇ ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਉਪਲਬਧ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ।"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"ਇਹ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ ਵੇਲੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਤੋਂ ਤੁਹਾਡੇ ਅੰਦਾਜ਼ਨ ਟਿਕਾਣੇ ਦਾ ਪਤਾ ਕਰ ਸਕਦੀ ਹੈ। ਤੁਹਾਡੇ ਡੀਵਾਈਸ \'ਤੇ ਟਿਕਾਣਾ ਸੇਵਾਵਾਂ ਦਾ ਚਾਲੂ ਹੋਣਾ ਲਾਜ਼ਮੀ ਹੈ ਤਾਂ ਜੋ ਐਪ ਟਿਕਾਣਾ ਪ੍ਰਾਪਤ ਕਰ ਸਕੇ।"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"ਸਕ੍ਰੀਨ \'ਤੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਤੋਂ ਇਲਾਵਾ, ਇਹ ਐਪ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਚੱਲਣ ਵੇਲੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"ਇਹ ਐਪ ਕਿਸੇ ਵੀ ਸਮੇਂ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਕਰ ਸਕਦੀ ਹੈ, ਭਾਵੇਂ ਐਪ ਵਰਤੋਂ ਵਿੱਚ ਨਾ ਹੋਵੇ।"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ਆਪਣੀਆਂ ਆਡੀਓ ਸੈਟਿੰਗਾਂ ਬਦਲੋ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ਐਪ ਨੂੰ ਗਲੋਬਲ ਆਡੀਓ ਸੈਟਿੰਗਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਜਿਵੇਂ ਅਵਾਜ਼ ਅਤੇ ਆਊਟਪੁਟ ਲਈ ਕਿਹੜਾ ਸਪੀਕਰ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">" ਆਡੀਓ ਰਿਕਾਰਡ ਕਰਨ"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ਇਹ ਐਪ ਕਿਸੇ ਵੀ ਸਮੇਂ ਕੈਮਰੇ ਨੂੰ ਵਰਤ ਕੇ ਤਸਵੀਰਾਂ ਖਿੱਚ ਸਕਦੀ ਹੈ ਅਤੇ ਵੀਡੀਓ ਫ਼ਾਈਲਾਂ ਰਿਕਾਰਡ ਕਰ ਸਕਦੀ ਹੈ।"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ਸਿਸਟਮ ਕੈਮਰੇ ਨੂੰ ਤਸਵੀਰਾਂ ਅਤੇ ਵੀਡੀਓ ਬਣਾਉਣ ਲਈ ਐਪਲੀਕੇਸ਼ਨ ਜਾਂ ਸੇਵਾ ਤੱਕ ਪਹੁੰਚ ਦਿਓ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ਇਹ ਵਿਸ਼ੇਸ਼ ਅਧਿਕਾਰ ਸਿਸਟਮ ਐਪ ਕਿਸੇ ਵੇਲੇ ਵੀ ਸਿਸਟਮ ਕੈਮਰੇ ਨੂੰ ਵਰਤ ਕੇ ਤਸਵੀਰਾਂ ਖਿੱਚ ਸਕਦੀ ਹੈ ਅਤੇ ਵੀਡੀਓ ਫ਼ਾਈਲਾਂ ਰਿਕਾਰਡ ਕਰ ਸਕਦੀ ਹੈ। ਐਪ ਨੂੰ ਵੀ android.permission.CAMERA ਇਜਾਜ਼ਤ ਦੀ ਲੋੜ ਹੈ।"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"ਐਪਲੀਕੇਸ਼ਨ ਜਾਂ ਸੇਵਾ ਨੂੰ ਕੈਮਰਾ ਡੀਵਾਈਸਾਂ ਦੇ ਚਾਲੂ ਜਾਂ ਬੰਦ ਕੀਤੇ ਜਾਣ ਬਾਰੇ ਕਾਲਬੈਕ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿਓ।"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"ਇਹ ਸਿਗਨੇਚਰ ਐਪ ਕੋਈ ਵੀ ਕੈਮਰਾ ਡੀਵਾਈਸ ਚਾਲੂ ਹੋਣ (ਕਿਸ ਐਪਲੀਕੇਸ਼ਨ ਪੈਕੇਜ ਰਾਹੀਂ) ਜਾਂ ਬੰਦ ਹੋਣ \'ਤੇ ਕਾਲਬੈਕ ਪ੍ਰਾਪਤ ਕਰ ਸਕਦੀ ਹੈ।"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ਵਾਈਬ੍ਰੇਸ਼ਨ ਤੇ ਨਿਯੰਤਰਣ ਪਾਓ"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ਐਪ ਨੂੰ ਵਾਈਬ੍ਰੇਟਰ ਤੇ ਨਿਯੰਤਰਣ ਪਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ਐਪ ਨੂੰ ਥਰਥਰਾਹਟ ਸਥਿਤੀ ਤੱਕ ਪਹੁੰਚ ਕਰਨ ਦਿੰਦਾ ਹੈ।"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"ਕਾਲ ਕਰਨ ਦੇ ਅਨੁਭਵ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਣ ਲਈ ਐਪ ਨੂੰ ਇਸਦੀਆਂ ਕਾਲਾਂ ਨੂੰ ਸਿਸਟਮ ਰਾਹੀਂ ਰੂਟ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ।"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ਸਿਸਟਮ ਰਾਹੀਂ ਕਾਲਾਂ ਦੇਖੋ ਅਤੇ ਕੰਟਰੋਲ ਕਰੋ।"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ਐਪ ਨੂੰ ਡੀਵਾਈਸ \'ਤੇ ਜਾਰੀ ਕਾਲਾਂ ਦੇਖਣ ਅਤੇ ਕੰਟਰੋਲ ਕਰਨ ਦਿਓ। ਇਸ ਵਿੱਚ ਕਾਲਾਂ ਦੇ ਨੰਬਰਾਂ ਅਤੇ ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ ਬਾਰੇ ਜਾਣਕਾਰੀ ਸ਼ਾਮਲ ਹੈ।"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ਕਿਸੇ ਹੋਰ ਐਪ ਤੋਂ ਕਾਲ ਜਾਰੀ ਰੱਖੋ"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ਐਪ ਨੂੰ ਉਹ ਕਾਲ ਜਾਰੀ ਰੱਖਣ ਦਿਓ ਜਿਸਨੂੰ ਹੋਰ ਐਪ ਤੋਂ ਚਾਲੂ ਕੀਤਾ ਗਿਆ ਸੀ।"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ਫ਼ੋਨ ਨੰਬਰ ਪੜ੍ਹੋ"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ਐਪ ਨੂੰ ਡੀਵਾਈਸ ਦੇ ਫ਼ੋਨ ਨੰਬਰਾਂ \'ਤੇ ਪਹੁੰਚ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ।"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"ਕਾਰ ਦੀ ਸਕ੍ਰੀਨ ਚਾਲੂ ਰੱਖੋ"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ਟੈਬਲੈੱਟ ਨੂੰ ਸਲੀਪ ਤੇ ਜਾਣ ਤੋਂ ਰੋਕੋ"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ਆਪਣੇ Android TV ਡੀਵਾਈਸ ਨੂੰ ਸਲੀਪ ਮੋਡ ਵਿੱਚ ਜਾਣ ਤੋਂ ਰੋਕੋੇ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ਫ਼ੋਨ ਨੂੰ ਸਲੀਪਿੰਗ ਤੋਂ ਰੋਕੋ"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ਐਪ ਨੂੰ ਕਾਰ ਦੀ ਸਕ੍ਰੀਨ ਹਰ ਵੇਲੇ ਚਾਲੂ ਰੱਖਣ ਦਿੰਦਾ ਹੈ।"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ਐਪ ਨੂੰ ਟੈਬਲੈੱਟ ਨੂੰ ਸਲੀਪ ਤੇ ਜਾਣ ਤੋਂ ਰੋਕਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ਐਪ ਨੂੰ ਤੁਹਾਡੇ Android TV ਡੀਵਾਈਸ ਨੂੰ ਸਲੀਪ ਮੋਡ \'ਤੇ ਜਾਣ ਤੋਂ ਰੋਕਣ ਦਿੰਦੀ ਹੈ।"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ਐਪ ਨੂੰ ਫ਼ੋਨ ਨੂੰ ਸਲੀਪ ਤੇ ਜਾਣ ਤੋਂ ਰੋਕਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ਕੋਈ ਫਿੰਗਰਪ੍ਰਿੰਟ ਦਰਜ ਨਹੀਂ ਕੀਤੇ ਗਏ।"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ ਨਹੀਂ ਹੈ।"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ਸੈਂਸਰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ਉਂਗਲ <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ਚਿਹਰੇ ਦੀ ਪੁਸ਼ਟੀ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"ਤੁਸੀਂ ਚਿਹਰਾ ਅਣਲਾਕ ਸੈੱਟਅੱਪ ਨਹੀਂ ਕੀਤਾ ਹੈ।"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"ਇਸ ਡੀਵਾਈਸ ਵਿੱਚ ਚਿਹਰਾ ਅਣਲਾਕ ਦੀ ਸੁਵਿਧਾ ਨਹੀਂ ਹੈ।"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ਸੈਂਸਰ ਅਸਥਾਈ ਤੌਰ \'ਤੇ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
<string name="face_name_template" msgid="3877037340223318119">"ਚਿਹਰਾ <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ਮੋਬਾਈਲ ਨੈੱਟਵਰਕ ਕੋਲ ਇੰਟਰਨੈੱਟ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ਨੈੱਟਵਰਕ ਕੋਲ ਇੰਟਰਨੈੱਟ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਹੈ"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ਨਿੱਜੀ ਡੋਮੇਨ ਨਾਮ ਪ੍ਰਣਾਲੀ (DNS) ਸਰਵਰ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"ਕਨੈਕਟ ਹੋਏ"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ਕੋਲ ਸੀਮਤ ਕਨੈਕਟੀਵਿਟੀ ਹੈ"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ਫਿਰ ਵੀ ਕਨੈਕਟ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"ਬਦਲਕੇ <xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ਲਿਆਂਦਾ ਗਿਆ"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ਡੀਬਗਿੰਗ ਕਨੈਕਟ ਕੀਤੀ"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB ਡੀਬੱਗਿੰਗ ਬੰਦ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ਡੀਬੱਗਿੰਗ ਅਯੋਗ ਬਣਾਉਣ ਲਈ ਚੁਣੋ।"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਨੂੰ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਨੂੰ ਬੰਦ ਕਰਨ ਲਈ ਚੁਣੋ।"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ਟੈਸਟ ਹਾਰਨੈੱਸ ਮੋਡ ਚਾਲੂ ਹੈ"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ਟੈਸਟ ਹਾਰਨੈੱਸ ਮੋਡ ਬੰਦ ਕਰਨ ਲਈ ਫੈਕਟਰੀ ਰੀਸੈੱਟ ਕਰੋ।"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"ਸੀਰੀਅਲ ਕੰਸੋਲ ਚਾਲੂ ਕੀਤਾ ਗਿਆ"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ਤੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਸ਼ੁਰੂ ਕੀਤੀ ਗਈ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾ ਲਈ ਭਵਿੱਖੀ R ਬਿਲਡ ਵਿੱਚ \'ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ \'ਤੇ ਇਜਾਜ਼ਤ\' ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੋਵੇਗੀ। ਕਿਰਪਾ ਕਰਕੇ go/r-bg-fgs-restriction ਦੇਖੋ ਅਤੇ ਬੱਗ ਰਿਪੋਰਟ ਫ਼ਾਈਲ ਕਰੋ।"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ਕੀ ਵੌਲਿਊਮ ਸਿਫ਼ਾਰਸ਼ ਕੀਤੇ ਪੱਧਰ ਤੋਂ ਵਧਾਉਣੀ ਹੈ?\n\nਲੰਮੇ ਸਮੇਂ ਤੱਕ ਉੱਚ ਵੌਲਿਊਮ ਤੇ ਸੁਣਨ ਨਾਲ ਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚ ਸਕਦਾ ਹੈ।"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ਕੀ ਪਹੁੰਚਯੋਗਤਾ ਸ਼ਾਰਟਕੱਟ ਵਰਤਣਾ ਹੈ?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ਸ਼ਾਰਟਕੱਟ ਚਾਲੂ ਹੋਣ \'ਤੇ, ਕਿਸੇ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਦੋਵੇਂ ਅਵਾਜ਼ ਬਟਨਾਂ ਨੂੰ 3 ਸਕਿੰਟ ਲਈ ਦਬਾ ਕੇ ਰੱਖੋ।"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"ਕੀ <xliff:g id="SERVICE">%1$s</xliff:g> ਨੂੰ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਪੂਰਾ ਕੰਟਰੋਲ ਦੇਣਾ ਹੈ?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ਜੇਕਰ ਤੁਸੀਂ <xliff:g id="SERVICE">%1$s</xliff:g> ਚਾਲੂ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਇਨਕ੍ਰਿਪਸ਼ਨ ਦਾ ਵਿਸਤਾਰ ਕਰਨ ਲਈ ਤੁਹਾਡੇ ਸਕ੍ਰੀਨ ਲਾਕ ਦੀ ਵਰਤੋਂ ਨਹੀਂ ਕਰੇਗਾ।"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"ਪੂਰਾ ਕੰਟਰੋਲ ਉਹਨਾਂ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਹੈ ਜੋ ਪਹੁੰਚਯੋਗਤਾ ਸੰਬੰਧੀ ਲੋੜਾਂ ਵਿੱਚ ਤੁਹਾਡੀ ਮਦਦ ਕਰਦੀਆਂ ਹਨ, ਪਰ ਜ਼ਿਆਦਾਤਰ ਐਪਾਂ ਲਈ ਢੁਕਵਾਂ ਨਹੀਂ ਹੁੰਦਾ।"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ਸਕ੍ਰੀਨ ਨੂੰ ਦੇਖੋ ਅਤੇ ਕੰਟਰੋਲ ਕਰੋ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"ਇਹ ਸਕ੍ਰੀਨ \'ਤੇ ਸਾਰੀ ਸਮੱਗਰੀ ਪੜ੍ਹ ਸਕਦੀ ਹੈ ਅਤੇ ਸਮੱਗਰੀ ਨੂੰ ਦੂਜੀਆਂ ਐਪਾਂ ਦੇ ਉੱਪਰ ਪ੍ਰਦਰਸ਼ਿਤ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ਕਾਰਵਾਈਆਂ ਦੇਖੋ ਅਤੇ ਕਰੋ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ਇਹ ਕਿਸੇ ਐਪ ਜਾਂ ਹਾਰਡਵੇਅਰ ਸੈਂਸਰ ਦੇ ਨਾਲ ਤੁਹਾਡੀਆਂ ਅੰਤਰਕਿਰਿਆਵਾਂ ਨੂੰ ਟਰੈਕ ਕਰ ਸਕਦੀ ਹੈ, ਅਤੇ ਤੁਹਾਡੀ ਤਰਫ਼ੋਂ ਐਪਾਂ ਦੇ ਨਾਲ ਅੰਤਰਕਿਰਿਆ ਕਰ ਸਕਦੀ ਹੈ।"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ਕਰਨ ਦਿਓ"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ਮਨ੍ਹਾਂ ਕਰੋ"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ਕਿਸੇ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣਾ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਉਸ \'ਤੇ ਟੈਪ ਕਰੋ:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"ਪਹੁੰਚਯੋਗਤਾ ਬਟਨ ਨਾਲ ਵਰਤਣ ਲਈ ਐਪਾਂ ਚੁਣੋ"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"ਅਵਾਜ਼ ਕੁੰਜੀ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਵਰਤਣ ਲਈ ਐਪਾਂ ਚੁਣੋ"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ਨੂੰ ਬੰਦ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ਸ਼ਾਰਟਕੱਟਾਂ ਦਾ ਸੰਪਾਦਨ ਕਰੋ"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ਰੱਦ ਕਰੋ"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"ਹੋ ਗਿਆ"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ਸ਼ਾਰਟਕੱਟ ਬੰਦ ਕਰੋ"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ਸ਼ਾਰਟਕੱਟ ਦੀ ਵਰਤੋਂ ਕਰੋ"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"ਰੰਗ ਦੀ ਉਲਟੀ ਤਰਤੀਬ"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ਗੈਰ-ਸ਼੍ਰੇਣੀਕਿਰਤ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ਤੁਸੀਂ ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਦੀ ਮਹੱਤਤਾ ਸੈੱਟ ਕੀਤੀ।"</string>
<string name="importance_from_person" msgid="4235804979664465383">"ਇਹ ਸ਼ਾਮਲ ਲੋਕਾਂ ਦੇ ਕਾਰਨ ਮਹੱਤਵਪੂਰਨ ਹੈ।"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"ਵਿਉਂਤੀ ਐਪ ਸੂਚਨਾ"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਨੂੰ <xliff:g id="ACCOUNT">%2$s</xliff:g> ਨਾਲ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ (ਇਸ ਖਾਤੇ ਨਾਲ ਇੱਕ ਵਰਤੋਂਕਾਰ ਪਹਿਲਾਂ ਤੋਂ ਹੀ ਮੌਜੂਦ ਹੈ)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"ਕੀ <xliff:g id="APP">%1$s</xliff:g> ਨੂੰ <xliff:g id="ACCOUNT">%2$s</xliff:g> ਨਾਲ ਨਵਾਂ ਵਰਤੋਂਕਾਰ ਬਣਾਉਣ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"ਇੱਕ ਭਾਸ਼ਾ ਸ਼ਾਮਲ ਕਰੋ"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ਪਹੁੰਚਯੋਗਤਾ ਮੀਨੂ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਦੀ ਸੁਰਖੀ ਪੱਟੀ।"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ਨੂੰ ਪ੍ਰਤਿਬੰਧਿਤ ਖਾਨੇ ਵਿੱਚ ਪਾਇਆ ਗਿਆ ਹੈ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ਨਿੱਜੀ"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"ਕੰਮ"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ਵਿਅਕਤੀਗਤ ਦ੍ਰਿਸ਼"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ਕਾਰਜ ਦ੍ਰਿਸ਼"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ਨਿੱਜੀ ਐਪਾਂ ਨਾਲ ਸਾਂਝਾ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੇ ਵਿਅਕਤੀਗਤ ਅਤੇ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿਚਕਾਰ ਸਾਂਝਾਕਰਨ ਨੂੰ ਬਲਾਕ ਕੀਤਾ ਹੈ"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਵਿੱਚ ਵਿਅਕਤੀਗਤ ਸਮੱਗਰੀ ਨੂੰ ਨਹੀਂ ਦੇਖਣ ਦਿੰਦਾ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ਵਿਅਕਤੀਗਤ ਐਪਾਂ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕਦੀ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ਤੁਹਾਡਾ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਤੁਹਾਨੂੰ ਵਿਅਕਤੀਗਤ ਐਪਾਂ ਵਿੱਚ ਕਾਰਜ ਸਮੱਗਰੀ ਨੂੰ ਨਹੀਂ ਦੇਖਣ ਦਿੰਦਾ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"ਸਮੱਗਰੀ ਨੂੰ ਸਾਂਝਾ ਕਰਨ ਲਈ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"ਸਮੱਗਰੀ ਨੂੰ ਦੇਖਣ ਲਈ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ਕੋਈ ਐਪ ਉਪਲਬਧ ਨਹੀਂ"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ਚਾਲੂ ਕਰੋ"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ਟੈਲੀਫ਼ੋਨੀ ਕਾਲਾਂ ਵਿੱਚ ਰਿਕਾਰਡ ਕਰੋ ਜਾਂ ਆਡੀਓ ਚਲਾਓ"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"ਇਹ ਇਸ ਐਪ ਨੂੰ, ਪੂਰਵ-ਨਿਰਧਾਰਤ ਡਾਇਲਰ ਐਪਲੀਕੇਸ਼ਨ ਵਜੋਂ ਜਿੰਮੇ ਲਾਏ ਜਾਣ \'ਤੇ, ਟੈਲੀਫ਼ੋਨੀ ਕਾਲਾਂ ਵਿੱਚ ਰਿਕਾਰਡ ਕਰਨ ਜਾਂ ਆਡੀਓ ਚਲਾਉਣ ਦਿੰਦਾ ਹੈ।"</string>
</resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 50e6974..d700709 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Twoja organizacja zarządza tym urządzeniem i może monitorować ruch w sieci. Kliknij, by dowiedzieć się więcej."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Ustawienia lokalizacji zmienione przez administratora"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Kliknij, aby zobaczyć ustawienia lokalizacji."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Wykrywanie kraju"</string>
+ <string name="location_service" msgid="2439187616018455546">"Usługa lokalizacyjna"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Usługa GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Usługa powiadomień czujnika"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Usługa Zmierzch"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Twoje urządzenie zostanie wyczyszczone"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Nie można użyć aplikacji administratora. Dane z urządzenia zostaną wykasowane.\n\nJeśli masz pytania, skontaktuj się z administratorem organizacji."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Drukowanie wyłączone przez: <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -251,6 +256,8 @@
<item quantity="other">Zrzut ekranu do raportu o błędzie zostanie zrobiony za <xliff:g id="NUMBER_1">%d</xliff:g> sekundy.</item>
<item quantity="one">Zrzut ekranu do raportu o błędzie zostanie zrobiony za <xliff:g id="NUMBER_0">%d</xliff:g> sekundę.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Zrobiono zrzut ekranu z raportem o błędzie"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nie udało się zrobić zrzutu ekranu z raportem o błędzie"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tryb cichy"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Dźwięk jest wyłączony"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Dźwięk jest włączony"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"dostęp do dodatkowych poleceń dostawcy informacji o lokalizacji"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Pozwala aplikacji na dostęp do dodatkowych poleceń dostawcy informacji o lokalizacji. Aplikacje z tym uprawnieniem mogą wpływać na działanie GPS-a lub innych źródeł lokalizacji."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"dostęp do dokładnej lokalizacji tylko na pierwszym planie"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ta aplikacja może określić Twoją dokładną lokalizację tylko wtedy, gdy działa na pierwszym planie. Usługi lokalizacyjne muszą być włączone i dostępne na urządzeniu, by aplikacja mogła z nich korzystać. Może to zwiększyć zużycie baterii."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplikacja ma dostęp do dokładnej lokalizacji z usług lokalizacyjnych, kiedy jest używana. Aby aplikacja mogła używać lokalizacji, musisz mieć na urządzeniu włączone usługi lokalizacyjne. Może to zwiększyć wykorzystanie baterii."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"dostęp do przybliżonej lokalizacji tylko na pierwszym planie"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ta aplikacja może określić Twoją przybliżoną lokalizację tylko wtedy, gdy działa na pierwszym planie. Usługi lokalizacyjne muszą być włączone i dostępne na urządzeniu, by aplikacja mogła z nich korzystać."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplikacja ma dostęp do przybliżonej lokalizacji z usług lokalizacyjnych, kiedy jest używana. Aby aplikacja mogła używać lokalizacji, musisz mieć na urządzeniu włączone usługi lokalizacyjne."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"dostęp do lokalizacji w tle"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacja może korzystać z lokalizacji, gdy działa w tle, niezależnie od dostępu do lokalizacji na pierwszym planie."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplikacja ma dostęp do lokalizacji w dowolnym momencie, nawet kiedy nie jest używana."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"zmienianie ustawień audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Pozwala aplikacji na modyfikowanie globalnych ustawień dźwięku, takich jak głośność oraz urządzenie wyjściowe."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"nagrywanie dźwięku"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ta aplikacja może w dowolnym momencie robić zdjęcia i nagrywać filmy przy użyciu aparatu."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Zezwól na dostęp aplikacji lub usługi do aparatów systemu i robienie zdjęć oraz nagrywanie filmów"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ta aplikacja systemowa | o podwyższonych uprawnieniach może w dowolnym momencie robić zdjęcia i nagrywać filmy przy użyciu aparatu systemu. Wymaga przyznania uprawnień android.permission.CAMERA również aplikacji"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Zezwól na dostęp aplikacji lub usługi na otrzymywanie wywoływania zwrotnego o urządzeniach z aparatem, kiedy są one uruchamiane lub zamykane."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Aplikacja z podpisami może korzystać z wywoływania zwrotnego, kiedy urządzenie z aparatem jest uruchamiane (przez jaki pakiet aplikacji) albo zamykane."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"sterowanie wibracjami"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Pozwala aplikacji na sterowanie wibracjami."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Zezwala aplikacji na dostęp do stanu wibracji"</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Zezwala aplikacji na przekazywanie połączeń przez system, by poprawić ich jakość."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"przeglądanie i kontrolowanie połączeń w systemie."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Zezwala aplikacji na przeglądanie i kontrolowanie trwających połączeń na urządzeniu. Dotyczy to informacji takich jak numery, z którymi nawiązane jest połączenie, oraz stan połączeń."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"kontynuuj połączenie w innej aplikacji"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Zezwala na kontynuowanie przez aplikację połączenia rozpoczętego w innej aplikacji."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"odczytywanie numerów telefonów"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Zezwala aplikacji na dostęp do numerów telefonów na urządzeniu."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"utrzymuj włączony ekran samochodu"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"zapobieganie przechodzeniu tabletu do trybu uśpienia"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"zapobieganie uśpieniu urządzenia z Androidem TV"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"zapobieganie przejściu telefonu w stan uśpienia"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Zezwala aplikacji na utrzymywanie włączonego ekranu samochodu"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Pozwala aplikacji na zapobieganie przechodzeniu tabletu do trybu uśpienia."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Pozwala aplikacji zapobiegać przechodzeniu urządzenia z Androidem TV w tryb uśpienia."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Pozwala aplikacji na zapobieganie przechodzeniu telefonu w tryb uśpienia."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Spróbuj ponownie."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nie zarejestrowano odcisków palców."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"To urządzenie nie jest wyposażone w czytnik linii papilarnych."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Czujnik jest tymczasowo wyłączony."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Odcisk palca <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nie można zweryfikować twarzy. Spróbuj ponownie."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Rozpoznawanie twarzy nie jest skonfigurowane."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"To urządzenie nie obsługuje rozpoznawania twarzy."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Czujnik jest tymczasowo wyłączony."</string>
<string name="face_name_template" msgid="3877037340223318119">"Twarz <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Sieć komórkowa nie ma dostępu do internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Sieć nie ma dostępu do internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Brak dostępu do prywatnego serwera DNS"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Połączono"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ma ograniczoną łączność"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Kliknij, by mimo to nawiązać połączenie"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Zmieniono na połączenie typu <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Podłączono moduł debugowania USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Kliknij, by wyłączyć debugowanie USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Wybierz, aby wyłączyć debugowanie USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Podłączono debugowanie bezprzewodowe"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Kliknij, by wyłączyć debugowanie bezprzewodowe"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Wybierz, by wyłączyć debugowanie bezprzewodowe."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Tryb jarzma testowego został włączony"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Przywróć ustawienia fabryczne, by wyłączyć tryb jarzma testowego."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Konsola szeregowa włączona"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Uruchomiona w tle usługa działająca w pierwszym planie z pakietu <xliff:g id="PACKAGENAME">%1$s</xliff:g> nie będzie miała uprawnień obowiązujących podczas używania w przyszłych kompilacjach R. Zapoznaj się z ograniczeniem go/r-bg-fgs-restriction i zgłoś błąd."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zwiększyć głośność ponad zalecany poziom?\n\nSłuchanie głośno przez długi czas może uszkodzić Twój słuch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Użyć skrótu do ułatwień dostępu?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Gdy skrót jest włączony, jednoczesne naciskanie przez trzy sekundy obu przycisków głośności uruchamia funkcję ułatwień dostępu."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pozwolić usłudze <xliff:g id="SERVICE">%1$s</xliff:g> na pełną kontrolę nad urządzeniem?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Jeśli włączysz usługę <xliff:g id="SERVICE">%1$s</xliff:g>, Twoje urządzenie nie będzie korzystać z blokady ekranu, by usprawnić szyfrowanie danych."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Pełna kontrola jest odpowiednia dla aplikacji, które pomagają Ci radzić sobie z niepełnosprawnością, ale nie należy jej przyznawać wszystkim aplikacjom."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Wyświetlaj i steruj ekranem"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Może odczytywać całą zawartość ekranu i wyświetlać treść nad innymi aplikacjami."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Wyświetlaj i wykonuj działania"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Może śledzić Twoje interakcje z aplikacjami lub czujnikiem sprzętowym, a także obsługiwać aplikacje za Ciebie."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Zezwól"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Odmów"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Wybierz funkcję, aby zacząć z niej korzystać:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Wybierz aplikacje, których chcesz używać w połączeniu z przyciskiem ułatwień dostępu"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Wybierz aplikacje, których chcesz używać ze skrótem z klawiszami głośności"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Usługa <xliff:g id="SERVICE_NAME">%s</xliff:g> została wyłączona"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Edytuj skróty"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Anuluj"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Wyłącz skrót"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Użyj skrótu"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Odwrócenie kolorów"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Bez kategorii"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ustawiłeś ważność tych powiadomień."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ta wiadomość jest ważna ze względu na osoby uczestniczące w wątku."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Niestandardowe powiadomienie z aplikacji"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Zezwolić aplikacji <xliff:g id="APP">%1$s</xliff:g> na utworzenie nowego użytkownika dla konta <xliff:g id="ACCOUNT">%2$s</xliff:g> (użytkownik dla tego konta już istnieje)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Zezwolić aplikacji <xliff:g id="APP">%1$s</xliff:g> na utworzenie nowego użytkownika dla konta <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dodaj język"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ułatwień dostępu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Pasek napisów w aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Umieszczono pakiet <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> w zasobniku danych RESTRICTED"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Osobiste"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Do pracy"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Widok osobisty"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Widok służbowy"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nie można udostępnić aplikacji do pracy"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nie można udostępnić aplikacji osobistej"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Administrator IT zablokował udostępnianie danych między profilami osobistymi a profilami do pracy"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Brak dostępu do aplikacji do pracy"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Administrator IT nie pozwala Ci wyświetlać treści osobistych w aplikacjach do pracy"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Brak dostępu do aplikacji osobistych"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Administrator IT nie pozwala Ci wyświetlać treści służbowych w aplikacjach osobistych"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Włącz profil do pracy, by udostępnić treści"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Włącz profil do pracy, by wyświetlić treści"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Brak dostępnych aplikacji"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Włącz"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Nagrywanie lub odtwarzanie dźwięku podczas połączeń telefonicznych"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Zezwala na odtwarzanie dźwięku podczas rozmów telefonicznych przez aplikację przypisaną jako domyślnie wybierającą numery."</string>
</resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index 5677ab2..b3f5e6b 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Configurações de localização modificadas pelo administrador"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as configurações de localização."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Serviço de GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Serviço de crepúsculo"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Capturas de tela para o relatório de bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="other">Capturas de tela para o relatório de bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Captura de tela com o relatório do bug concluída"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Falha ao capturar a tela com o relatório do bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencioso"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Som DESATIVADO"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"O som está ATIVADO"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acessar comandos extras do provedor de localização"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que o app acesse comandos do provedor não relacionados à localização. Isso pode permitir que o app interfira no funcionamento do GPS ou de outras fontes de localização."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"acessar localização precisa apenas em primeiro plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Este app pode ver seu local exato apenas quando está em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no seu dispositivo para que o app possa usá-los. Isso pode aumentar o consumo de bateria."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esse app poderá acessar seu local exato por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local. Isso pode aumentar o uso da bateria."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acessar local aproximado apenas em primeiro plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Este app poderá acessar seu local aproximado somente quando estiver em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no dispositivo para que o app possa usá-los."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esse app poderá acessar seu local aproximado por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acessar a localização em segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esse app pode acessar o local em segundo plano, além do acesso em primeiro plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esse app poderá acessar o local a qualquer momento, mesmo quando não estiver sendo usado."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas configurações de áudio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que o app modifique configurações de áudio globais como volume e alto-falantes de saída."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Este app pode tirar fotos e gravar vídeos usando a câmera a qualquer momento."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que um aplicativo ou serviço acesse as câmeras do sistema para tirar fotos e gravar vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Este app do sistema/com privilégios pode tirar fotos e gravar vídeos a qualquer momento usando a câmera do sistema. É necessário que o app tenha também a permissão android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que um aplicativo ou serviço receba callbacks sobre dispositivos de câmera sendo abertos ou fechados."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esse app de assinatura pode receber callbacks quando um dispositivo de câmera é aberto (por qualquer pacote de apps) ou fechado."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite que o app controle a vibração."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que o app acesse o estado da vibração."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite que o app encaminhe suas chamadas por meio do sistema para melhorar a experiência com chamadas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ver e controlar chamadas pelo sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite que o app veja e controle chamadas em andamento no dispositivo. Isso inclui informações como número e estado das chamadas."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"isento de restrições de gravação de áudio"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Isenta o app de restrições para gravar áudio."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar uma chamada de outro app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite que o app continue uma chamada que foi iniciada em outro app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ler números de telefone"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite que o app acesse os número de telefone do dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"manter a tela do carro ativada"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"impedir modo de inatividade do tablet"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evitar que seu dispositivo Android TV entre no modo de suspensão"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"impedir modo de inatividade do telefone"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que o app mantenha a tela do carro ativada."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite que o app impeça a suspensão do tablet."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que o app impeça o dispositivo Android TV de entrar no modo de suspensão."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite que o app impeça a suspensão do telefone."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Tente novamente."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registrada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem um sensor de impressão digital."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor desativado temporariamente."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"O desbloqueio facial não foi configurado."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"O desbloqueio facial não é compatível com este dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor desativado temporariamente."</string>
<string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -914,7 +925,7 @@
<string name="js_dialog_before_unload_title" msgid="7012587995876771246">"Confirmar navegação"</string>
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Sair desta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta página"</string>
- <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nTem certeza que quer sair desta página?"</string>
+ <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVocê quer mesmo sair desta página?"</string>
<string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
<string name="double_tap_toast" msgid="7065519579174882778">"Dica: toque duas vezes para aumentar e diminuir o zoom."</string>
<string name="autofill_this_form" msgid="3187132440451621492">"Preench. aut."</string>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"A rede móvel não tem acesso à Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"A rede não tem acesso à Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Não é possível acessar o servidor DNS privado"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Conectado"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tem conectividade limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toque para conectar mesmo assim"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Alternado para <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuração USB conectada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Toque para desativar a depuração USB."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecione para desativar a depuração USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Depuração sem fio conectada"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toque para desativar a depuração sem fio"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração sem fio."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo Arcabouço de testes ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Realize uma redefinição para configuração original para desativar o modo Arcabouço de testes."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console serial ativado"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano por <xliff:g id="PACKAGENAME">%1$s</xliff:g> não receberá uma permissão durante o uso em futuras versões R. Consulte go/r-bg-fgs-restriction e crie um relatório de bug."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar tela"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo na tela e mostrar conteúdo sobreposto a outros apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver e realizar ações"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorar suas interações com um app ou um sensor de hardware e interagir com apps em seu nome."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Negar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque em um recurso para começar a usá-lo:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Escolha apps para usar com o botão de acessibilidade"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Escolha apps para usar com o atalho da tecla de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sem classificação"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Você definiu a importância dessas notificações."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Isso é importante por causa das pessoas envolvidas."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificação personalizada do app"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Permitir que o app <xliff:g id="APP">%1$s</xliff:g> crie um novo usuário com <xliff:g id="ACCOUNT">%2$s</xliff:g> (já existe um usuário com essa conta)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Permitir que o app <xliff:g id="APP">%1$s</xliff:g> crie um novo usuário com <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Adicionar um idioma"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Visualização pessoal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Visualização de trabalho"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Não é possível compartilhar com apps de trabalho"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Não é possível compartilhar com apps pessoais"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Seu administrador de TI bloqueou o compartilhamento entre perfis pessoais e de trabalho"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Falha ao acessar apps de trabalho"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Seu administrador de TI não permite que você veja conteúdo pessoal em apps de trabalho"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Falha ao acessar apps pessoais"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Seu administrador de TI não permite que você veja conteúdo de trabalho em apps pessoais"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Ative o perfil de trabalho para compartilhar conteúdo"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Ative o perfil de trabalho para ver conteúdo"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nenhum app disponível"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Ativar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou tocar áudio em chamadas telefônicas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permitir que esse app grave ou toque áudio em chamadas telefônicas quando for usado como aplicativo discador padrão."</string>
</resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 4bdb07f..9aa29fd 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"A sua entidade gere este dispositivo e pode monitorizar o tráfego de rede. Toque para obter mais detalhes."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Definições de localização alteradas pelo administrador"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as definições de localização."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detetor de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Serviço GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Serviço de crepúsculo"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"O seu dispositivo será apagado"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Não é possível utilizar a aplicação de administrador. O seu dispositivo será agora apagado.\n\nSe tiver questões, contacte o administrador da entidade."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">A tirar uma captura de ecrã do relatório de erro dentro de <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="one">A tirar uma captura de ecrã do relatório de erro dentro de <xliff:g id="NUMBER_0">%d</xliff:g> segundo…</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Captura de ecrã tirada com o relatório de erro."</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Falha ao tirar captura de ecrã com o relatório de erro."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencioso"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Som desativado"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"O som está ativado"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"aceder a comandos adicionais do fornecedor de localização"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que a aplicação aceda a comandos adicionais do fornecedor de localização. Esta opção pode permitir que a aplicação interfira com o funcionamento do GPS ou de outras fontes de localização."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"apenas aceder à localização exata em primeiro plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Esta aplicação apenas pode obter a sua localização exata quando estiver em primeiro plano. É necessário que os Serviços de localização estejam ativados e disponíveis no seu dispositivo para que a aplicação os possa utilizar. Esta ação pode aumentar o consumo da bateria."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esta app pode obter a sua localização exata a partir dos Serviços de localização enquanto a app está a ser utilizada. Os Serviços de localização para o dispositivo têm de estar ativados para a app obter a localização. Isto pode aumentar a utilização da bateria."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"apenas aceder à localização aproximada em primeiro plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Esta aplicação apenas pode obter a sua localização aproximada quando estiver em primeiro plano. É necessário que os Serviços de localização estejam ativados e disponíveis para que a aplicação os possa utilizar."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esta app pode obter a sua localização aproximada a partir dos Serviços de localização enquanto a app está a ser utilizada. Os Serviços de localização para o dispositivo têm de estar ativados para a app obter a localização."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"aceder à localização em segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esta aplicação pode aceder à localização mesmo estando em segundo plano, além do acesso à localização em primeiro plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esta app pode aceder à localização em qualquer altura, mesmo quando a app não está a ser utilizada."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas definições de áudio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que a aplicação modifique definições de áudio globais, tais como o volume e qual o altifalante utilizado para a saída de som."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Esta aplicação pode tirar fotos e gravar vídeos através da câmara em qualquer altura."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que uma aplicação ou um serviço aceda às câmaras do sistema para tirar fotos e vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Esta aplicação do sistema | privilegiada pode tirar fotos e gravar vídeos através de uma câmara do sistema em qualquer altura. Também necessita da autorização android.permission.CAMERA para a aplicação."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que uma app ou um serviço receba chamadas de retorno sobre dispositivos de câmara que estão a ser abertos ou fechados"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esta app de assinatura pode receber chamadas de retorno quando qualquer dispositivo de câmara está a ser aberto (e por que pacote de apps) ou fechado."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite à aplicação controlar o vibrador."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que a app aceda ao estado de vibração."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite que a aplicação encaminhe as respetivas chamadas através do sistema de modo a melhorar a experiência da chamada."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ver e controlar chamadas através do sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite à aplicação ver e controlar as chamadas em curso no dispositivo. Isto inclui informações como números de telefone das chamadas e o estado das mesmas."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar uma chamada a partir de outra aplicação"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite à aplicação continuar uma chamada iniciada noutra aplicação."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ler os números de telefone"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite à aplicação aceder aos números de telefone do dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"manter o ecrã do automóvel ligado"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"impedir que o tablet entre em inactividade"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"impedir o seu dispositivo Android TV de entrar no modo de suspensão"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"impedir modo de inactividade do telefone"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que a app mantenha o ecrã do automóvel ligado."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite que a aplicação impeça o tablet de entrar no modo de suspensão."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que a aplicação impeça o seu dispositivo Android TV de entrar no modo de suspensão."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite que a aplicação impeça o telemóvel de entrar em inatividade."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Tente novamente."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem sensor de impressões digitais."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor temporariamente desativado."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível validar o rosto. Tente novamente."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Não configurou o Desbloqueio Através do Rosto."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Desbloqueio Através do Rosto não suportado neste dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor temporariamente desativado."</string>
<string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"A rede móvel não tem acesso à Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"A rede não tem acesso à Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Não é possível aceder ao servidor DNS."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Ligado"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tem conetividade limitada."</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toque para ligar mesmo assim."</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Mudou para <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuração USB ligada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Toque para desativar a depuração USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecione para desativar a depuração por USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Depuração sem fios ligada"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toque para desativar a depuração sem fios."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração sem fios."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo de estrutura de teste ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Efetue uma reposição de dados de fábrica para desativar o Modo de estrutura de teste."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Consola de série ativada"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g> não terá a autorização durante a utilização em compilações R futuras. Aceda a go/r-bg-fgs-restriction e envie um relatório de erros."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir com um volume elevado durante longos períodos poderá ser prejudicial para a sua audição."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Pretende utilizar o atalho de acessibilidade?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho está ativado, premir ambos os botões de volume durante 3 segundos inicia uma funcionalidade de acessibilidade."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Pretende permitir que o serviço <xliff:g id="SERVICE">%1$s</xliff:g> tenha controlo total sobre o seu dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se ativar o serviço <xliff:g id="SERVICE">%1$s</xliff:g>, o dispositivo não utilizará o bloqueio de ecrã para otimizar a encriptação de dados."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controlo total é adequado para aplicações que ajudam nas necessidades de acessibilidade, mas não para a maioria das aplicações."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar o ecrã"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo do ecrã e sobrepor conteúdo a outras aplicações."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Veja e execute ações"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorizar as suas interações com uma aplicação ou um sensor de hardware e interagir com aplicações em seu nome."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Recusar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque numa funcionalidade para começar a utilizá-la:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Escolha apps para utilizar com o botão Acessibilidade"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Escolha apps para utilizar com o atalho das teclas de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O serviço <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sem categoria"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Definiu a importância destas notificações."</string>
<string name="importance_from_person" msgid="4235804979664465383">"É importante devido às pessoas envolvidas."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificação de app personalizada"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Pretende permitir que a aplicação <xliff:g id="APP">%1$s</xliff:g> crie um novo utilizador com a conta <xliff:g id="ACCOUNT">%2$s</xliff:g> (já existe um utilizador com esta conta)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Pretende permitir que a aplicação <xliff:g id="APP">%1$s</xliff:g> crie um novo utilizador com a conta <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Adicionar um idioma"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Acessibilidade"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no contentor RESTRITO."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Vista pessoal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Vista de trabalho"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Não é possível partilhar com apps de trabalho."</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Não é possível partilhar com apps pessoais."</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"O seu administrador de TI bloqueou a partilha entre o perfil de trabalho e pessoal."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Não é possível aceder a apps de trabalho"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"O seu administrador de TI não lhe permite ver conteúdo pessoal em apps de trabalho"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Não é possível aceder a apps pessoais"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"O seu administrador de TI não lhe permite ver conteúdo de trabalho em apps pessoais"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Ative o perfil de trabalho para partilhar conteúdo."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Ative o perfil de trabalho para ver conteúdo."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nenhuma app disponível."</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Ativar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou reproduzir áudio em chamadas telefónicas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite que esta app, quando atribuída como uma aplicação de telefone predefinida, grave ou reproduza áudio em chamadas telefónicas."</string>
</resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index 5677ab2..b3f5e6b 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Sua organização gerencia este dispositivo e pode monitorar o tráfego de rede. Toque para ver detalhes."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Configurações de localização modificadas pelo administrador"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Toque para ver as configurações de localização."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de país"</string>
+ <string name="location_service" msgid="2439187616018455546">"Serviço de localização"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Serviço de GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Serviço de notificações do sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Serviço de crepúsculo"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Capturas de tela para o relatório de bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
<item quantity="other">Capturas de tela para o relatório de bug serão feitas em <xliff:g id="NUMBER_1">%d</xliff:g> segundos.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Captura de tela com o relatório do bug concluída"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Falha ao capturar a tela com o relatório do bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modo silencioso"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Som DESATIVADO"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"O som está ATIVADO"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"acessar comandos extras do provedor de localização"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite que o app acesse comandos do provedor não relacionados à localização. Isso pode permitir que o app interfira no funcionamento do GPS ou de outras fontes de localização."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"acessar localização precisa apenas em primeiro plano"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Este app pode ver seu local exato apenas quando está em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no seu dispositivo para que o app possa usá-los. Isso pode aumentar o consumo de bateria."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Esse app poderá acessar seu local exato por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local. Isso pode aumentar o uso da bateria."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"acessar local aproximado apenas em primeiro plano"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Este app poderá acessar seu local aproximado somente quando estiver em primeiro plano. Os \"Serviços de localização\" precisam estar ativados e disponíveis no dispositivo para que o app possa usá-los."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Esse app poderá acessar seu local aproximado por meio dos Serviços de localização enquanto estiver sendo usado. Os Serviços de localização do dispositivo precisam estar ativados para que o app possa acessar o local."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"acessar a localização em segundo plano"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Esse app pode acessar o local em segundo plano, além do acesso em primeiro plano."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Esse app poderá acessar o local a qualquer momento, mesmo quando não estiver sendo usado."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"alterar as suas configurações de áudio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite que o app modifique configurações de áudio globais como volume e alto-falantes de saída."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"gravar áudio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Este app pode tirar fotos e gravar vídeos usando a câmera a qualquer momento."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permitir que um aplicativo ou serviço acesse as câmeras do sistema para tirar fotos e gravar vídeos"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Este app do sistema/com privilégios pode tirar fotos e gravar vídeos a qualquer momento usando a câmera do sistema. É necessário que o app tenha também a permissão android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permitir que um aplicativo ou serviço receba callbacks sobre dispositivos de câmera sendo abertos ou fechados."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Esse app de assinatura pode receber callbacks quando um dispositivo de câmera é aberto (por qualquer pacote de apps) ou fechado."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlar vibração"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite que o app controle a vibração."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite que o app acesse o estado da vibração."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permite que o app encaminhe suas chamadas por meio do sistema para melhorar a experiência com chamadas."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ver e controlar chamadas pelo sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite que o app veja e controle chamadas em andamento no dispositivo. Isso inclui informações como número e estado das chamadas."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"isento de restrições de gravação de áudio"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Isenta o app de restrições para gravar áudio."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"continuar uma chamada de outro app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite que o app continue uma chamada que foi iniciada em outro app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ler números de telefone"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite que o app acesse os número de telefone do dispositivo."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"manter a tela do carro ativada"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"impedir modo de inatividade do tablet"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"evitar que seu dispositivo Android TV entre no modo de suspensão"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"impedir modo de inatividade do telefone"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite que o app mantenha a tela do carro ativada."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite que o app impeça a suspensão do tablet."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite que o app impeça o dispositivo Android TV de entrar no modo de suspensão."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite que o app impeça a suspensão do telefone."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Tente novamente."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nenhuma impressão digital registrada."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Este dispositivo não tem um sensor de impressão digital."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensor desativado temporariamente."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Dedo <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Não é possível verificar o rosto. Tente novamente."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"O desbloqueio facial não foi configurado."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"O desbloqueio facial não é compatível com este dispositivo."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensor desativado temporariamente."</string>
<string name="face_name_template" msgid="3877037340223318119">"Rosto <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -914,7 +925,7 @@
<string name="js_dialog_before_unload_title" msgid="7012587995876771246">"Confirmar navegação"</string>
<string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"Sair desta página"</string>
<string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"Permanecer nesta página"</string>
- <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nTem certeza que quer sair desta página?"</string>
+ <string name="js_dialog_before_unload" msgid="7213364985774778744">"<xliff:g id="MESSAGE">%s</xliff:g>\n\nVocê quer mesmo sair desta página?"</string>
<string name="save_password_label" msgid="9161712335355510035">"Confirmar"</string>
<string name="double_tap_toast" msgid="7065519579174882778">"Dica: toque duas vezes para aumentar e diminuir o zoom."</string>
<string name="autofill_this_form" msgid="3187132440451621492">"Preench. aut."</string>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"A rede móvel não tem acesso à Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"A rede não tem acesso à Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Não é possível acessar o servidor DNS privado"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Conectado"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> tem conectividade limitada"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Toque para conectar mesmo assim"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Alternado para <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Depuração USB conectada"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Toque para desativar a depuração USB."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selecione para desativar a depuração USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Depuração sem fio conectada"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Toque para desativar a depuração sem fio"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selecione para desativar a depuração sem fio."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modo Arcabouço de testes ativado"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Realize uma redefinição para configuração original para desativar o modo Arcabouço de testes."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Console serial ativado"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano por <xliff:g id="PACKAGENAME">%1$s</xliff:g> não receberá uma permissão durante o uso em futuras versões R. Consulte go/r-bg-fgs-restriction e crie um relatório de bug."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Quando o atalho estiver ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permitir que o <xliff:g id="SERVICE">%1$s</xliff:g> tenha controle total do seu dispositivo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Se o <xliff:g id="SERVICE">%1$s</xliff:g> for ativado, o dispositivo não usará o bloqueio de tela para melhorar a criptografia de dados."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"O controle total é adequado para apps que ajudam você com as necessidades de acessibilidade, mas não para a maioria dos apps."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ver e controlar tela"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Pode ler todo o conteúdo na tela e mostrar conteúdo sobreposto a outros apps."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ver e realizar ações"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Pode monitorar suas interações com um app ou um sensor de hardware e interagir com apps em seu nome."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permitir"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Negar"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Toque em um recurso para começar a usá-lo:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Escolha apps para usar com o botão de acessibilidade"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Escolha apps para usar com o atalho da tecla de volume"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"O <xliff:g id="SERVICE_NAME">%s</xliff:g> foi desativado"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editar atalhos"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Cancelar"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Concluído"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Desativar atalho"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Usar atalho"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversão de cores"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Sem classificação"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Você definiu a importância dessas notificações."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Isso é importante por causa das pessoas envolvidas."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificação personalizada do app"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Permitir que o app <xliff:g id="APP">%1$s</xliff:g> crie um novo usuário com <xliff:g id="ACCOUNT">%2$s</xliff:g> (já existe um usuário com essa conta)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Permitir que o app <xliff:g id="APP">%1$s</xliff:g> crie um novo usuário com <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Adicionar um idioma"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Visualização pessoal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Visualização de trabalho"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Não é possível compartilhar com apps de trabalho"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Não é possível compartilhar com apps pessoais"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Seu administrador de TI bloqueou o compartilhamento entre perfis pessoais e de trabalho"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Falha ao acessar apps de trabalho"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Seu administrador de TI não permite que você veja conteúdo pessoal em apps de trabalho"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Falha ao acessar apps pessoais"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Seu administrador de TI não permite que você veja conteúdo de trabalho em apps pessoais"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Ative o perfil de trabalho para compartilhar conteúdo"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Ative o perfil de trabalho para ver conteúdo"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nenhum app disponível"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Ativar"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Gravar ou tocar áudio em chamadas telefônicas"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permitir que esse app grave ou toque áudio em chamadas telefônicas quando for usado como aplicativo discador padrão."</string>
</resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index 99cdc0b..96a77253 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -195,6 +195,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizația dvs. gestionează acest dispozitiv și poate monitoriza traficul în rețea. Atingeți pentru mai multe detalii."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Setările privind locația au fost modificate de administrator"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Atingeți pentru a vedea setările privind locația."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector de țară"</string>
+ <string name="location_service" msgid="2439187616018455546">"Servicii de localizare"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Serviciul GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Serviciu pentru notificări de la senzori"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Serviciul Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Datele de pe dispozitiv vor fi șterse"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Aplicația de administrare nu poate fi utilizată. Dispozitivul va fi șters.\n\nDacă aveți întrebări, contactați administratorul organizației dvs."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printare dezactivată de <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="other">Peste <xliff:g id="NUMBER_1">%d</xliff:g> de secunde se va realiza o captură de ecran pentru raportul de eroare.</item>
<item quantity="one">Peste <xliff:g id="NUMBER_0">%d</xliff:g> secundă se va realiza o captură de ecran pentru raportul de eroare.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"S-a realizat captura de ecran a raportului de eroare"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nu s-a realizat captura de ecran a raportului de eroare"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mod Silențios"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sunetul este DEZACTIVAT"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sunetul este ACTIVAT"</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"accesare comenzi suplimentare ale furnizorului locației"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Permite aplicației să acceseze comenzi suplimentare pentru furnizorul locației. Aplicația ar putea să utilizeze această permisiune pentru a influența operațiile GPS sau ale altor surse de locații."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"să acceseze locația exactă în prim-plan"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Aplicația vă poate obține locația exactă numai când rulează în prim-plan. Serviciile de localizare trebuie să fie activate și disponibile pe dispozitiv pentru ca aplicația să le poată folosi. Acest lucru poate accelera descărcarea bateriei."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Aplicația vă poate determina locația exactă cu ajutorul serviciilor de localizare atunci când este folosită. Pentru ca aplicația să poată determina locația, trebuie să activați serviciile de localizare pentru dispozitiv. Aceasta poate mări utilizarea bateriei."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"să acceseze locația aproximativă numai în prim-plan."</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Aplicația vă poate determina locația aproximativă numai când rulează în prim-plan. Serviciile de localizare trebuie să fie activate și disponibile pe dispozitiv pentru ca aplicația să le poată folosi."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Aplicația vă poate determina locația aproximativă cu ajutorul serviciilor de localizare atunci când este folosită. Pentru ca aplicația să poată determina locația, trebuie să activați serviciile de localizare pentru dispozitiv."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"accesați locația în fundal"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Această aplicație poate accesa locația cât timp rulează în fundal, pe lângă accesul la locație din prim-plan."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Aplicația poate accesa locația oricând, chiar dacă nu este folosită."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"modificare setări audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Permite aplicației să modifice setările audio globale, cum ar fi volumul și difuzorul care este utilizat pentru ieșire."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"înregistreze sunet"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Această aplicație poate să facă fotografii și să înregistreze videoclipuri folosind camera foto în orice moment."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Permiteți unei aplicații sau unui serviciu accesul la camerele de sistem, ca să fotografieze și să înregistreze videoclipuri"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Această aplicație de sistem | privilegiată poate să fotografieze și să înregistreze videoclipuri folosind o cameră de sistem în orice moment. Necesită și permisiunea android.permission.CAMERA pentru aplicație"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Permiteți unei aplicații sau unui serviciu să primească apeluri inverse atunci când sunt deschise sau închise dispozitive cu cameră."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Această aplicație cu semnătură poate primi apeluri inverse atunci când este deschis (de un pachet al aplicației) sau închis orice dispozitiv cu cameră."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"controlează vibrarea"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Permite aplicației să controleze mecanismul de vibrare."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Permite aplicației să acceseze modul de vibrații."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Permiteți aplicației să direcționeze apelurile prin intermediul sistemului pentru a îmbunătăți calitatea apelurilor."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Vedeți și controlați apelurile prin intermediul sistemului."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Permite aplicației să vadă și să controleze apelurile în desfășurare pe dispozitiv. Aceasta include informații ca numerele pentru apeluri și starea apelurilor."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"să continue un apel dintr-o altă aplicație"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Permite aplicației să continue un apel care a fost inițiat dintr-o altă aplicație."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"să citească numerele de telefon"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Permite aplicației să acceseze numerele de telefon ale dispozitivului."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"menține ecranul mașinii activat"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"împiedicarea computerului tablet PC să intre în repaus"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"împiedică dispozitivul Android TV să intre în repaus"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"împiedicare intrare telefon în repaus"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Permite aplicației să mențină ecranul mașinii activat."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Permite aplicației să împiedice intrarea tabletei în stare de repaus."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Permite aplicației să împiedice intrarea dispozitivului Android TV în stare de inactivitate."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Permite aplicației să împiedice intrarea telefonului în stare de repaus."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Încercați din nou."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nu au fost înregistrate amprente."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Dispozitivul nu are senzor de amprentă."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzorul este dezactivat temporar."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Degetul <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nu se poate confirma fața. Încercați din nou."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Nu ați configurat deblocarea facială."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Deblocarea facială nu este acceptată pe dispozitiv."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzorul este dezactivat temporar."</string>
<string name="face_name_template" msgid="3877037340223318119">"Chip <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1273,7 +1286,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Rețeaua mobilă nu are acces la internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Rețeaua nu are acces la internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Serverul DNS privat nu poate fi accesat"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Conectat"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> are conectivitate limitată"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Atingeți pentru a vă conecta oricum"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"S-a comutat la <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1338,6 +1350,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Remedierea erorilor prin USB este conectată"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Atingeți pentru a dezactiva remedierea erorilor prin USB."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Selectați pentru a dezactiva remedierea erorilor prin USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Remedierea erorilor prin wireless este activă"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Atingeți pentru a dezactiva remedierea erorilor prin wireless"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Selectați pentru a dezactiva remedierea erorilor prin wireless."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modul Set de testare este activat"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Reveniți la setările din fabrică pentru a dezactiva modul Set de testare."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Consola din serie este activată"</string>
@@ -1643,10 +1658,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Serviciul în prim-plan inițializat în fundal din <xliff:g id="PACKAGENAME">%1$s</xliff:g> nu va avea permisiunea în timpul utilizării în versiunile R viitoare. Consultați go/r-bg-fgs-restriction și trimiteți un raport de eroare."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ridicați volumul mai sus de nivelul recomandat?\n\nAscultarea la volum ridicat pe perioade lungi de timp vă poate afecta auzul."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utilizați comanda rapidă pentru accesibilitate?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Atunci când comanda rapidă este activată, dacă apăsați ambele butoane de volum timp de trei secunde, veți lansa o funcție de accesibilitate."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Permiteți serviciului <xliff:g id="SERVICE">%1$s</xliff:g> să aibă control total asupra dispozitivului dvs.?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Dacă activați <xliff:g id="SERVICE">%1$s</xliff:g>, dispozitivul nu va folosi blocarea ecranului pentru a îmbunătăți criptarea datelor."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Controlul total este adecvat pentru aplicații care vă ajută cu accesibilitatea, însă nu pentru majoritatea aplicaților."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Vă vede și vă controlează ecranul"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Poate citi tot conținutul de pe ecran și poate afișa conținut peste alte aplicații."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Vă vede interacțiunile și le realizează"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Poate urmări interacțiunile dvs. cu o aplicație sau cu un senzor hardware și poate interacționa cu aplicații în numele dvs."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Permiteți"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuzați"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Atingeți o funcție ca să începeți să o folosiți:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Alegeți aplicațiile pe care să le folosiți cu butonul de accesibilitate"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Alegeți aplicațiile pe care să le folosiți cu comanda rapidă pentru butonul de volum"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> a fost dezactivat"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Editați comenzile rapide"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Anulați"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Gata"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Dezactivați comanda rapidă"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Utilizați comanda rapidă"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inversarea culorilor"</string>
@@ -1877,6 +1904,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Neclasificate"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Dvs. setați importanța acestor notificări."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Notificarea este importantă având în vedere persoanele implicate."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Notificare de aplicație personalizată"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Permiteți ca <xliff:g id="APP">%1$s</xliff:g> să creeze un nou utilizator folosind <xliff:g id="ACCOUNT">%2$s</xliff:g>? (există deja un utilizator cu acest cont)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Permiteți ca <xliff:g id="APP">%1$s</xliff:g> să creeze un nou utilizator folosind <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Adăugați o limbă"</string>
@@ -2050,22 +2078,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meniul Accesibilitate"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bară cu legenda pentru <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a fost adăugat la grupul RESTRICȚIONATE"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Serviciu"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Afișarea conținutului personal"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Afișarea conținutului de lucru"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nu se poate trimite către aplicații pentru lucru"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nu se poate trimite către aplicații personale"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Administratorul IT a blocat trimiterea între profilurile personale și de serviciu"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nu se pot accesa aplicațiile pentru lucru"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Administratorul IT nu vă permite să afișați conținutul personal în aplicațiile pentru lucru"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nu se pot accesa aplicațiile personale"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Administratorul IT nu vă permite să afișați conținutul de lucru în aplicațiile personale"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Activați profilul de serviciu pentru a distribui conținut"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Activați profilul de serviciu pentru a vedea conținutul"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nicio aplicație disponibilă"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Activați"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Înregistrează sau redă conținut audio în apelurile telefonice"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Permite acestei aplicații, atunci când este setată ca aplicație telefon prestabilită, să înregistreze sau să redea conținut audio în apelurile telefonice."</string>
</resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 244d0e6..5ba37b5 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Ваша организация управляет этим устройством и может отслеживать сетевой трафик. Подробнее…"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Настройки геолокации изменены администратором"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Нажмите, чтобы открыть настройки геолокации."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Определение страны"</string>
+ <string name="location_service" msgid="2439187616018455546">"Геолокация"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Служба GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Сервис для обработки уведомлений от датчиков"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Сервис для определения наступления сумерек"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Все данные с устройства будут удалены"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Невозможно использовать приложение для администрирования. С устройства будут удалены все данные.\n\nЕсли у вас возникли вопросы, обратитесь к администратору."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Функция печати отключена приложением \"<xliff:g id="OWNER_APP">%s</xliff:g>\""</string>
@@ -251,6 +256,8 @@
<item quantity="many">Скриншот будет сделан через <xliff:g id="NUMBER_1">%d</xliff:g> секунд</item>
<item quantity="other">Скриншот будет сделан через <xliff:g id="NUMBER_1">%d</xliff:g> секунды</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Сделан скриншот с информацией об ошибке."</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Не удалось сделать скриншот с информацией об ошибке."</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Режим без звука"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Выключить"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Включить"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"Доступ к дополнительным командам управления источниками геоданных"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Доступ к дополнительным командам управления источниками геоданных и вмешательство в работу системы GPS или других источников геоданных."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"Доступ к точному местоположению только в фоновом режиме"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Приложение сможет получать сведения о вашем точном местоположении только в активном режиме. Для этого нужно включить геолокацию на устройстве и разрешить приложению использовать геоданные. Расход заряда батареи может увеличиться."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Приложение сможет получать сведения о вашем точном местоположении, только когда используется. Для этого на устройстве должна быть включена геолокация. Учтите, что при этом заряд батареи может расходоваться быстрее."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"Доступ к приблизительному местоположению только в активном режиме"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Приложение сможет получать сведения о вашем приблизительном местоположении только в активном режиме. Для этого нужно включить геолокацию на устройстве и разрешить приложению использовать геоданные."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Приложение сможет получать сведения о вашем приблизительном местоположении, только когда используется. Для этого на устройстве должна быть включена геолокация."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ к геоданным в фоновом режиме"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Приложение сможет получать сведения о вашем местоположении как в фоновом, так и в активном режиме."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Приложение сможет получать доступ к сведениям о местоположении, даже когда не используется."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"Изменение настроек аудио"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Приложение сможет изменять системные настройки звука, например уровень громкости и активный динамик."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"Запись аудио"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Приложение может в любое время делать фотографии и снимать видео с помощью камеры."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Доступ приложения или сервиса к системным настройкам камеры, позволяющим снимать фото и видео"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Это привилегированное или системное приложение может в любое время делать фотографии и снимать видео с помощью камеры. Для этого приложению также требуется разрешение android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Разрешить приложению или сервису получать обратные вызовы при открытии и закрытии камер"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Это приложение для создания подписей сможет получать обратные вызовы при открытии (с указанием открывающего приложения) и закрытии любых камер."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"Управление функцией вибросигнала"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Приложение сможет контролировать вибросигналы."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Приложение сможет получать доступ к состоянию виброотклика."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Приложение сможет перенаправлять звонки в системе с целью улучшения качества связи."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Управление вызовами через систему"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Приложение сможет управлять текущими вызовами на устройстве, а также получит доступ к сведениям о них, в том числе к номерам телефонов и статусам звонков."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Продолжить вызов, начатый в другом приложении"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Разрешает приложению продолжить вызов, начатый в другом приложении."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"чтение номеров телефонов"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Разрешает приложению доступ к телефонным номерам устройства."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"Не выключать экран автомобиля"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"Отключение спящего режима"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"запрещать переход устройства Android TV в спящий режим"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"Отключение спящего режима"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Приложение сможет держать экран автомобиля включенным."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Приложение сможет запрещать перевод планшетного ПК в спящий режим."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Приложение сможет препятствовать переводу устройства Android TV в спящий режим."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Приложение сможет запрещать перевод телефона в спящий режим."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Повторите попытку."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Нет отсканированных отпечатков пальцев"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На этом устройстве нет сканера отпечатков пальцев."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сканер отпечатков пальцев временно отключен."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Отпечаток <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Не удалось распознать лицо. Повторите попытку."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Вы не настроили фейсконтроль."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Это устройство не поддерживает функцию \"Фейсконтроль\"."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик временно отключен."</string>
<string name="face_name_template" msgid="3877037340223318119">"Лицо <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -758,7 +771,7 @@
<string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string>
<string name="eventTypeCustom" msgid="3257367158986466481">"Особый"</string>
<string name="eventTypeBirthday" msgid="7770026752793912283">"День рождения"</string>
- <string name="eventTypeAnniversary" msgid="4684702412407916888">"Юбилей"</string>
+ <string name="eventTypeAnniversary" msgid="4684702412407916888">"Годовщина"</string>
<string name="eventTypeOther" msgid="530671238533887997">"Другой"</string>
<string name="emailTypeCustom" msgid="1809435350482181786">"Новый тип"</string>
<string name="emailTypeHome" msgid="1597116303154775999">"Личный"</string>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобильная сеть не подключена к Интернету"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Сеть не подключена к Интернету"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Доступа к частному DNS-серверу нет."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Подключено"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Подключение к сети \"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>\" ограничено"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Нажмите, чтобы подключиться"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Новое подключение: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Отладка по USB разрешена"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Нажмите, чтобы отключить отладку по USB."</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Нажмите, чтобы отключить отладку по USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Отладка по Wi-Fi активна"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Нажмите, чтобы отключить отладку по Wi-Fi."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Нажмите, чтобы отключить отладку по Wi-Fi."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Тестовый режим включен"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Чтобы отключить тестовый режим, сбросьте настройки до заводских."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Консоль последовательного порта включена"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Службы из пакета <xliff:g id="PACKAGENAME">%1$s</xliff:g>, переведенные из фонового режима в активный, не будут получать разрешение while-in-use в будущих сборках на языке R. Перейдите на страницу go/r-bg-fgs-restriction и отправьте отчет об ошибке."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Установить громкость выше рекомендуемого уровня?\n\nВоздействие громкого звука в течение долгого времени может привести к повреждению слуха."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Использовать быстрое включение?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Чтобы использовать функцию специальных возможностей, когда она включена, нажмите и удерживайте обе кнопки регулировки громкости в течение трех секунд."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Предоставить сервису \"<xliff:g id="SERVICE">%1$s</xliff:g>\" полный контроль над устройством?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Если включить сервис \"<xliff:g id="SERVICE">%1$s</xliff:g>\", устройство не будет использовать блокировку экрана для защиты данных."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Полный контроль нужен приложениям для реализации специальных возможностей и не нужен большинству остальных."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Просмотр и контроль экрана"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Сервис может читать весь контент на экране и отображать контент поверх других приложений."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Просмотр и выполнение действий"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Сервис может отслеживать ваше взаимодействие с приложением или датчиками устройства и давать приложениям команды от вашего имени."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Разрешить"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Отклонить"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Выберите, какую функцию использовать:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Выберите приложения, которые можно будет запускать с помощью кнопки специальных возможностей"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Выберите приложения, которые можно будет запускать с помощью кнопки регулировки громкости"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сервис \"<xliff:g id="SERVICE_NAME">%s</xliff:g>\" отключен."</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Изменить быстрые клавиши"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Отмена"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Деактивировать быстрое включение"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Использовать быстрое включение"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверсия цветов"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Без категории"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Вы определяете важность этих уведомлений."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Важное (люди)"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Уведомление пользовательского приложения"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Разрешить приложению \"<xliff:g id="APP">%1$s</xliff:g>\" создать нового пользователя с аккаунтом <xliff:g id="ACCOUNT">%2$s</xliff:g> (пользователь с этим аккаунтом уже существует)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Разрешить приложению \"<xliff:g id="APP">%1$s</xliff:g>\" создать нового пользователя с аккаунтом <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Добавьте язык"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню специальных возможностей"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Строка субтитров в приложении \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Приложение \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" помещено в категорию с ограниченным доступом."</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Личный"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Рабочий"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Просмотр личных данных"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Просмотр рабочих данных"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Нельзя обмениваться данными с рабочими приложениями"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Нельзя обмениваться данными с личными приложениями"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Обмен данными между личным и рабочим профилями заблокирован системным администратором."</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Нет доступа к рабочим приложениям"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Просмотр личных данных в рабочих приложениях заблокирован системным администратором."</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Нет доступа к личным приложениям"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Просмотр рабочих данных в личных приложениях заблокирован системным администратором."</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Чтобы поделиться данными, включите рабочий профиль."</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Чтобы посмотреть данные, включите рабочий профиль."</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Нет доступных приложений"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Включить"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Запись и воспроизведение телефонных разговоров"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Если это приложение используется для звонков по умолчанию, оно сможет записывать и воспроизводить телефонные разговоры."</string>
</resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index 6583f94..c07c3df 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"ඔබගේ ආයතනය මෙම උපාංගය කළමනාකරණය කරන අතර එය ජාල තදබදය නිරීක්ෂණය කළ හැක. විස්තර සඳහා තට්ටු කරන්න."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"ස්ථාන සැකසීම් ඔබේ පරිපාලක විසින් වෙනස් කරන ලදී"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"ඔබේ ස්ථාන සැකසීම් බැලීමට තට්ටු කරන්න."</string>
+ <string name="country_detector" msgid="7023275114706088854">"රටවල් අනාවරකය"</string>
+ <string name="location_service" msgid="2439187616018455546">"ස්ථාන සේවාව"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS සේවාව"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"සංවේදක දැනුම් දීමේ සේවාව"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ඇඳිරි සේවාව"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ඔබගේ උපාංගය මකා දැමෙනු ඇත"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"පරිපාලක යෙදුම භාවිතා කළ නොහැකිය. ඔබේ උපාංගය දැන් මකා දමනු ඇත.\n\nඔබට ප්රශ්න තිබේ නම්, ඔබේ සංවිධානයේ පරිපාලකට අමතන්න."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> විසින් මුද්රණය කිරීම අබල කර ඇත."</string>
@@ -245,6 +250,8 @@
<item quantity="one">තත්පර <xliff:g id="NUMBER_1">%d</xliff:g>කින් දෝෂ වාර්තාව සඳහා තිර රුවක් ලබා ගනිමින්</item>
<item quantity="other">තත්පර <xliff:g id="NUMBER_1">%d</xliff:g>කින් දෝෂ වාර්තාව සඳහා තිර රුවක් ලබා ගනිමින්</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"දෝෂ වාර්තාව සමගින් ගත් තිර රුව"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"දෝෂ වාර්තාව සමගින් තිර රුව ගැනීමට අසමත් විය"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"නිහඬ ආකාරය"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ශබ්දය අක්රියයි"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"හඬ ක්රියාත්මකයි"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"අමතර ස්ථාන සැපයුම්කරු විධාන වෙත ප්රවේශ වීම"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ස්ථානය සපයන අමතර අණ වලට ප්රවේශය කිරීමට යෙදුමට අවසර දෙන්න. GPS ක්රියාවන් හෝ වෙනත් ස්ථාන මූලාශ්ර සමඟ මැදිහත් වීමට මෙයින් යෙදුමට ඉඩ ලැබේ."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"පෙරබිම තුළ පමණක් නිශ්චිත ස්ථානය වෙත පිවිසෙන්න"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"මෙම යෙදුම පෙරබිම තුළ ඇති විට පමණක් එයට ඔබගේ නිශ්චිත ස්ථානය ලබා ගත හැකිය. යෙදුමට ඒවා භාවිත කිරීමට හැකියාව ලැබීමට ස්ථාන සේවා ක්රියාත්මක කර ඔබගේ දුරකථනයේ ලබා ගත හැකි විය යුතුය. මෙය බැටරි පරිභෝජනය වැඩි කළ හැකිය."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"යෙදුම භාවිතයේ පවතින අතරතුර ස්ථාන සේවා වෙතින් මෙම යෙදුමට ඔබේ නිශ්චිත ස්ථානය ලබා ගත හැකිය. යෙදුම සඳහා ස්ථානය ලබා ගැනීමට ඔබේ උපාංගය සඳහා ස්ථාන සේවා ක්රියාත්මක කළ යුතුය. මෙය බැටරි භාවිතය වැඩි කළ හැකිය."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"පෙරබිම තුළ පමණක් ආසන්න ස්ථානයට ප්රවේශය"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"මෙම යෙදුම පෙරබිම තුළ ඇති විට පමණක් එයට ඔබගේ ආසන්න ස්ථානය ලබා ගත හැකිය. යෙදුමට ඒවා භාවිත කිරීමට හැකියාව ලැබීමට ස්ථාන සේවා ක්රියාත්මක කර ඔබගේ උපාංගයේ ලබා ගත හැකි විය යුතුය."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"යෙදුම භාවිතයේ පවතින අතරතුර ස්ථාන සේවා වෙතින් මෙම යෙදුමට ඔබේ ආසන්න ස්ථානය ලබා ගත හැකිය. යෙදුම සඳහා ස්ථානය ලබා ගැනීමට ඔබේ උපාංගය සඳහා ස්ථාන සේවා ක්රියාත්මක කළ යුතුය."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"පසුබිමේ ස්ථානය ප්රවේශ කිරීම"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"පෙරබිම ස්ථාන ප්රවේශයට අමතරව පසුබිමේ ධාවනය වන අතරතුර මෙම යෙදුමට ස්ථානය වෙත ප්රවේශ විය හැකිය."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"යෙදුම භාවිතයේ නොපවතින අතරතුර පවා ඕනෑම අවස්ථාවක මෙම යෙදුමට ස්ථානය වෙත ප්රවේශ විය හැකිය."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ඔබගේ ශ්රව්ය සැකසීම් වෙනස් කරන්න"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ශබ්දය ආදී ගෝලීය ශබ්ද සැකසීම් වෙනස් කිරීමට සහ ප්රතිදානය සඳහා භාවිත කරන්නේ කුමන නාදකය දැයි තේරීමට යෙදුමට අවසර දෙන්න."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ශබ්ද පටිගත කරන්න"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"මෙම යෙදුමට ඕනෑම වේලාවක කැමරාව භාවිත කර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට හැකිය."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"පින්තූර සහ වීඩියෝ ගැනීමට පද්ධති කැමරාවලට යෙදුමකට හෝ සේවාවකට ප්රවේශය ඉඩ දෙන්න"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"මෙම වරප්රසාද ලත් | යෙදුමට ඕනෑම වේලාවක කැමරාව භාවිත කර පින්තූර ගැනීමට සහ වීඩියෝ පටිගත කිරීමට හැකිය. යෙදුම විසින් රඳවා තබා ගැනීමට android.permission.CAMERA ප්රවේශයද අවශ්ය වේ"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"විවෘත වෙමින් හෝ වැසෙමින් පවතින කැමරා උපාංග පිළිබඳ පසු ඇමතුම් ලබා ගැනීමට යෙදුමකට හෝ සේවාවකට ඉඩ දෙන්න."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"මෙම අත්සන් යෙදුමට ඕනෑම කැමරා යෙදුමක් විවෘත වෙමින් හෝ වැසෙමින් (කුමන යෙදුම් පැකේජයෙන්ද) පවතින විට පසු ඇමතුම් ලබා ගැනීමට හැකිය."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"කම්පනය පාලනය කිරීම"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"කම්පකය පාලනයට යෙදුමට අවසර දෙන්න."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"යෙදුමට කම්පන තත්ත්වයට ප්රවේශ වීමට ඉඩ දෙන්න."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"ඇමතුම් අත්දැකීම වැඩිදියුණු කිරීම සඳහා යෙදුමට පද්ධතිය හරහා එහි ඇමතුම් මාර්ගගත කිරීමට ඉඩ දෙයි."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"පද්ධතිය හරහා ඇමතුම් බලන්න සහ පාලනය කරන්න."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"යෙදුමට උපාංගයෙහි පවතින ඇමතුම් බැලීමට සහ පාලනය කිරීමට ඉඩ දෙයි මෙහි ඇමතුම් සඳහා ඇමතුම් අංක සහ ඇමතුම්වල තත්ත්වය වැනි තොරතුරු ඇතුළත් වේ."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"වෙනත් යෙදුමක් වෙතින් වන ඇමතුමක් දිගටම කරගෙන යන්න"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"වෙනත් යෙදුමක ආරම්භ කරන ලද ඇමතුමක් දිගටම කරගෙන යාමට යෙදුමට ඉඩ දෙයි."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"දුරකථන අංක කියවන්න"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"උපාංගයේ දුරකථන අංක වෙත ප්රවේශයට යෙදුමට ඉඩ දෙයි."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"මෝටර් රථ තිරය ක්රියාත්මකව තබා ගන්න"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ටැබ්ලටය නින්දෙන් වැළක්වීම"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ඔබගේ Android TV උපාංගය නිදා ගැනීමෙන් වැළැක්වීම"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"දුරකථනය නින්දට යාමෙන් වළකන්න"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"යෙදුමට මෝටර් රථ තිරය ක්රියාත්මකව තබා ගැනීමට ඉඩ දෙයි."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ටැබ්ලටය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"යෙදුමට ඔබේ Android TV උපාංගය නින්දට යාමට වැළැක්වීමට ඉඩ දෙයි."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"දුරකථනය නින්දට යාමෙන් වැලැක්වීමට යෙදුමට අවසර දෙන්න."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"නැවත උත්සාහ කරන්න."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ඇඟිලි සලකුණු ඇතුළත් කර නොමැත."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"මෙම උපාංගයේ ඇඟිලි සලකුණු සංවේදකයක් නොමැත."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"සංවේදකය තාවකාලිකව අබල කර ඇත."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"ඇඟිලි <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"මුහුණ සත්යාපන කළ නොහැක. නැවත උත්සාහ කරන්න."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"ඔබ මුහුණු අඟුලු ඇරීම සකසා නැත"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"මෙම උපාංගයෙහි මුහුණු අඟුලු ඇරීමට සහය නොදැක්වේ"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"සංවේදකය තාවකාලිකව අබල කර ඇත."</string>
<string name="face_name_template" msgid="3877037340223318119">"මුහුණු <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1255,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"ජංගම ජාලවලට අන්තර්ජාල ප්රවේශය නැත"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"ජාලයට අන්තර්ජාල ප්රවේශය නැත"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"පුද්ගලික DNS සේවාදායකයට ප්රවේශ වීමට නොහැකිය"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"සම්බන්ධයි"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> හට සීමිත සබැඳුම් හැකියාවක් ඇත"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"කෙසේ වෙතත් ඉදිරියට යාමට තට්ටු කරන්න"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> වෙත මාරු විය"</string>
@@ -1320,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB නිදොස්කරණය සම්බන්ධිතයි"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB නිදොස් කිරීම ක්රියාවිරහිත කිරීමට තට්ටු කරන්න"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB නිදොස්කරණය අබල කිරීමට තෝරන්න."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"නොරැහැන් නිදොස්කරණය සම්බන්ධ විය"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"නොරැහැන් නිදොස්කරණය ක්රියාවිරහිත කිරීමට තට්ටු කරන්න"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"නොරැහැන් නිදොස්කරණය අබල කිරීමට තෝරන්න."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"පුරක පරීක්ෂා ප්රකාරය සබලයි"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"පුරක පරීක්ෂා ප්රකාරය අබල කිරීමට කර්මාන්තශාලා යළි සැකසීමක් ඉටු කරන්න."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"අනුක්රමික කොන්සෝලය සබලයි"</string>
@@ -1623,10 +1638,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> වෙතින් පසුබිම ආරම්භ කරන ලද පෙරබිම් සේවාව අනාගත R තැනුම්වලදී භාවිතයේ අවසරය නැත. කරුණාකර go/r-bg-fgs-අවහිරතාව බලා දෝෂ වාර්තාවක් ගොනු කරන්න."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"නිර්දේශිතයි මට්ටමට වඩා ශබ්දය වැඩිද?\n\nදිගු කාලයක් සඳහා ඉහළ ශබ්දයක් ඇසීමෙන් ඇතැම් විට ඔබගේ ඇසීමට හානි විය හැක."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ප්රවේශ්යතා කෙටිමඟ භාවිතා කරන්නද?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"කෙටිමග ක්රියාත්මක විට, හඬ පරිමා බොත්තම් දෙකම තත්පර 3ක් තිස්සේ එබීමෙන් ප්රවේශ්යතා විශේෂාංගය ආරම්භ වනු ඇත."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> හට ඔබේ උපාංගයේ සම්පූර්ණ පාලනය තබා ගැනීමට ඉඩ දෙන්නද?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"ඔබ <xliff:g id="SERVICE">%1$s</xliff:g> ක්රියාත්මක කරන්නේ නම්, දත්ත සංකේතනය වැඩිදියුණු කිරීමට ඔබේ උපාංගය ඔබේ තිර අගුල භාවිත නොකරනු ඇත."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"පූර්ණ පාලනය ඔබට ප්රවේශ්යතා අවශ්යතා සමඟ උදවු කරන යෙදුම් සඳහා සුදුසු වන නමුත් බොහෝ යෙදුම් සඳහා සුදුසු නොවේ."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"තිරය බලන්න සහ පාලන කරන්න"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"එයට තිරයේ සියලුම අන්තර්ගත කියවිය හැකි අතර අනෙකුත් යෙදුම් මත අන්තර්ගතය සංදර්ශන කළ හැක."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"බලන්න සහ ක්රියා කරන්න"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"මෙයට යෙදුමක් හෝ දෘඪාංග සංවේදකයක් සමඟ ඔබේ අන්තර්ක්රියා හඹා යෑමට, සහ ඔබ වෙනුවෙන් යෙදුම් සමඟ අන්තර්ක්රියාවේ යෙදීමට හැකි ය."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"ඉඩ දෙන්න"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ප්රතික්ෂේප කරන්න"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"එය භාවිත කිරීම ආරම්භ කිරීමට විශේෂාංගයක් තට්ටු කරන්න:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"ප්රවේශ්යතා බොත්තම සමග භාවිත කිරීමට යෙදුම් තෝරා ගන්න"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"හඬ පරිමා යතුරු කෙටිමග සමග භාවිත කිරීමට යෙදුම් තෝරා ගන්න"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ක්රියාවිරහිත කර ඇත"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"කෙටිමං සංස්කරණ කරන්න"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"අවලංගු කරන්න"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"නිමයි"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"කෙටිමඟ ක්රියාවිරහිත කරන්න"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"කෙටිමඟ භාවිතා කරන්න"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"වර්ණ අපවර්තනය"</string>
@@ -1847,6 +1874,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"වර්ගීකරණය නොකළ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ඔබ මෙම දැනුම්දීම්වල වැදගත්කම සකසා ඇත."</string>
<string name="importance_from_person" msgid="4235804979664465383">"සම්බන්ධ වූ පුද්ගලයන් නිසා මෙය වැදගත් වේ."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"අභිරුචි යෙදුම් දැනුම් දීම"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> හට <xliff:g id="ACCOUNT">%2$s</xliff:g> සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද (මෙම ගිණුම සහිත පරිශීලකයෙකු දැනටමත් සිටී) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> හට <xliff:g id="ACCOUNT">%2$s</xliff:g> සමගින් නව පරිශීලකයෙකු සෑදීමට ඉඩ දෙන්නද ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"භාෂාවක් එක් කරන්න"</string>
@@ -2018,22 +2046,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ප්රවේශ්යතා මෙනුව"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> හි සිරස්තල තීරුව."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> අවහිර කළ බාල්දියට දමා ඇත"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"පුද්ගලික"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"කාර්යාල"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"පෞද්ගලික දසුන"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"කාර්යාල දසුන"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"කාර්යාල යෙදුම් සමග බෙදා ගැනීමට නොහැකිය"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"පෞද්ගලික යෙදුම් සමග බෙදා ගැනීමට නොහැකිය"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ඔබේ IT පරිපාලක පෞද්ගලික සහ කාර්යාල පැතිකඩ අතර බෙදා ගැනීම අවහිර කළා"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"කාර්යාල යෙදුම් වෙත ප්රවේශ වීමට නොහැකිය"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ඔබේ IT පරිපාලක ඔබට කාර්යාල යෙදුම් හි පෞද්ගලික අන්තර්ගත බැලීමට ඉඩ නොදේ"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"පෞද්ගලික යෙදුම් වෙත ප්රවේශ වීමට නොහැකිය"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ඔබේ IT පරිපාලක ඔබට පෞද්ගලික යෙදුම් හි කාර්යාල අන්තර්ගත බැලීමට ඉඩ නොදේ"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"අන්තර්ගත බෙදා ගැනීමට කාර්යාල පැතිකඩ ක්රියාත්මක කරන්න"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"අන්තර්ගත බැලීමට කාර්යාල පැතිකඩ ක්රියාත්මක කරන්න"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ලබා ගත හැකි යෙදුම් නැත"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ක්රියාත්මක කරන්න"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ටෙලිෆොනි ඇමතුම්වලින් ඕඩියෝ පටිගත කරන්න නැතහොත් වාදනය කරන්න"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"පෙරනිමි ඩයලන යෙදුමක් ලෙස පැවරූ විට, මෙම යෙදුමට ටෙලිෆොනි ඇමතුම්වලින් ඕඩියෝ පටිගත කිරීමට හෝ වාදනය කිරීමට ඉඩ දෙයි."</string>
</resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index d8006e7..1f110b3 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizácia spravuje toto zariadenie a môže sledovať sieťovú premávku. Klepnutím zobrazíte podrobnosti."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Nastavenia polohy zmenil váš správca"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Klepnutím zobrazíte nastavenia polohy."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detektor krajiny"</string>
+ <string name="location_service" msgid="2439187616018455546">"Služba určovania polohy"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Služba GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Služba upozornení senzora"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Služba stmievania"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Vaše zariadenie bude vymazané"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Daná aplikácia na správu sa nedá použiť. Vaše zariadenie bude vymazané.\n\nV prípade otázok kontaktujte správcu organizácie."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Tlač zakázala aplikácia <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -251,6 +256,8 @@
<item quantity="other">Snímka obrazovky pre hlásenie chyby sa vytvorí o <xliff:g id="NUMBER_1">%d</xliff:g> sekúnd.</item>
<item quantity="one">Snímka obrazovky pre hlásenie chyby sa vytvorí o <xliff:g id="NUMBER_0">%d</xliff:g> sekundu.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Bola vytvorená snímka obrazovky s hlásením chyby"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nepodarilo sa vytvoriť snímku obrazovky s hlásením chyby"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tichý režim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvuk je VYPNUTÝ."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvuk je zapnutý"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"prístup k ďalším príkazom poskytovateľa polohy"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Umožňuje aplikácii pristupovať k ďalším príkazom poskytovateľa informácií o polohe. Aplikácii to môže umožniť zasahovať do činnosti systému GPS alebo iných zdrojov informácií o polohe."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"prístup k presnej polohe iba v popredí"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Táto aplikácia dokáže získať vašu presnú polohu iba vtedy, keď je spustená v popredí. Služby určovania polohy musia byť zapnuté a k dispozícii v zariadení, aby ich mohla aplikácia používať. Môže to zvýšiť spotrebu batérie."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Keď túto aplikáciu používate, môže získavať vašu presnú polohu zo služieb určovania polohy. V zariadení musíte zapnúť služby určovania polohy, aby ju mohla získať. Môže to zvýšiť spotrebu batérie."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"prístup k približnej polohe iba v popredí"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Táto aplikácia dokáže získať vašu približnú polohu iba vtedy, keď je spustená v popredí. Služby určovania polohy musia byť zapnuté a k dispozícii v zariadení, aby ich mohla aplikácia používať."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Keď túto aplikáciu používate, môže získavať vašu približnú polohu zo služieb určovania polohy. V zariadení musíte zapnúť služby určovania polohy, aby ju mohla získať."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"prístup k polohe na pozadí"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Táto aplikácia môže používať polohu nielen vtedy, keď je spustená v popredí, ale aj na pozadí."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Táto aplikácia môže používať polohu kedykoľvek, dokonca aj keď nie je používaná."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"meniť nastavenia zvuku"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Umožňuje aplikácii upraviť globálne nastavenia zvuku, ako je hlasitosť, alebo určiť, z ktorého reproduktora bude zvuk vychádzať."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"nahrávať zvuk"</string>
@@ -435,9 +442,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Táto aplikácia môže kedykoľvek fotografovať a zaznamenávať videá pomocou fotoaparátu."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Povoľte aplikácii alebo službe prístup k fotoaparátom systému na snímanie fotiek a videí"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Táto oprávnená alebo systémová aplikácia môže kedykoľvek fotiť a nahrávať videá fotoaparátom systému. Aplikácia musí mať tiež povolenie android.permission.CAMERA."</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Povoliť aplikácii alebo službe prijímať spätné volanie, keď sú zariadenia s kamerou otvorené alebo zatvorené."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Táto podpisová aplikácia môže prijímať spätné volanie, keď je ľubovoľné zariadenie s kamerou otvorené (balíkom aplikácie, ktorý určíte) alebo zatvorené."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ovládať vibrovanie"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Umožňuje aplikácii ovládať vibrácie."</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Povoľuje aplikácii získať prístup k stavu vibrácií."</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Povoľuje aplikácii prístup k stavu vibrátora."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"priamo volať na telefónne čísla"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Umožňuje aplikácii volať telefónne čísla bez vášho zásahu. V dôsledku toho sa môžu účtovať neočakávané poplatky alebo sa môžu uskutočniť neočakávané hovory. Toto povolenie neumožňuje aplikácii volať na tiesňovú linku."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"prístup k službe volania IMS"</string>
@@ -448,13 +457,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Umožňuje aplikácii presmerovať hovory cez systém na účely zlepšenia kvality hovorov."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"zobrazenie a kontrola hovorov prostredníctvom systému."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Umožňuje aplikácii zobrazovať a kontrolovať prebiehajúce hovory v zariadení. Táto možnosť zahŕňa údaje, akými sú napríklad čísla jednotlivých hovorov alebo stav hovorov."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"udelenie výnimky z obmedzení nahrávania zvuku"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Udeľte aplikácii výnimku z obmedzení nahrávania zvuku."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"pokračovať v hovore z inej aplikácie"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Umožňuje aplikácii pokračovať v hovore začatom v inej aplikácii."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"čítanie telefónnych čísel"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Umožňuje aplikácii pristupovať k telefónnym číslam zariadenia."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"zabránenie vypnutiu obrazovky auta"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"zabránenie prechodu tabletu do režimu spánku"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"zabránenie prechodu zariadenia Android TV do režimu spánku"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"deaktivovať režim spánku"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Umožňuje aplikácii zabrániť vypnutiu obrazovky auta."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Umožňuje aplikácii zabrániť prechodu tabletu do režimu spánku."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Umožňuje aplikácii zabrániť prechodu zariadenia Android TV do režimu spánku."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Umožňuje aplikácii zabrániť prechodu telefónu do režimu spánku."</string>
@@ -552,8 +565,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Skúste to znova"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Neregistrovali ste žiadne odtlačky prstov."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Toto zariadenie nemá senzor odtlačkov prstov."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Senzor je dočasne vypnutý."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst: <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +609,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Nedá sa overiť tvár. Skúste to znova."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Nenastavili ste odomknutie tvárou."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Toto zariadenie nepodporuje odomknutie tvárou."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Senzor je dočasne vypnutý."</string>
<string name="face_name_template" msgid="3877037340223318119">"Tvár <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1304,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilná sieť nemá prístup k internetu"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Sieť nemá prístup k internetu"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"K súkromnému serveru DNS sa nepodarilo získať prístup"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Pripojené"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> má obmedzené pripojenie"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Ak sa chcete aj napriek tomu pripojiť, klepnite"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Prepnuté na sieť: <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1368,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Ladenie cez USB pripojené"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Klepnutím vypnite ladenie cez USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Vyberte, ak chcete zakázať ladenie cez USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Bezdrôtové ladenie je pripojené"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Klepnutím vypnete bezdrôtové ladenie"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Výberom zakážete bezdrôtové ladenie."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Režim správcu testov je aktivovaný"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Ak chcete zakázať režim správcu testov, obnovte výrobné nastavenia."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Sériová konzola je povolená"</string>
@@ -1665,10 +1678,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Služba na popredí spustená na pozadí z balíka <xliff:g id="PACKAGENAME">%1$s</xliff:g> nebude mať v budúcich zostavách R povolenie Počas používania. Prejdite na go/r-bg-fgs-restriction a odošlite hlásenie chyby."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšiť hlasitosť nad odporúčanú úroveň?\n\nDlhodobé počúvanie pri vysokej hlasitosti môže poškodiť váš sluch."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použiť skratku dostupnosti?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Keď je skratka zapnutá, stlačením obidvoch tlačidiel hlasitosti na tri sekundy spustíte funkciu dostupnosti."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Chcete povoliť službe <xliff:g id="SERVICE">%1$s</xliff:g> úplnú kontrolu nad zariadením?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ak zapnete službu <xliff:g id="SERVICE">%1$s</xliff:g>, vaše zariadenie nezvýši úroveň šifrovania údajov zámkou obrazovky."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Úplná kontrola je vhodná pre aplikácie, ktoré vám pomáhajú s dostupnosťou, ale nie pre väčšinu aplikácií."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Zobrazenie a ovládanie obrazovky"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Môže čítať všetok obsah na obrazovke a zobrazovať obsah cez ďalšie aplikácie."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Zobrazenie a vykonávanie akcií"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Môže sledovať vaše interakcie s aplikáciou alebo hardvérovým senzorom a interagovať s aplikáciami za vás."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Povoliť"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zamietnuť"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Klepnutím na funkciu ju začnite používať:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Výber aplikácií, ktoré chcete používať pomocou tlačidla dostupnosti"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Výber aplikácií, ktoré chcete používať pomocou klávesovej skratky"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Služba <xliff:g id="SERVICE_NAME">%s</xliff:g> bola vypnutá"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Upraviť skratky"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Zrušiť"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Hotovo"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vypnúť skratku"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Použiť skratku"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzia farieb"</string>
@@ -1909,6 +1934,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nekategorizované"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Nastavili ste dôležitosť týchto upozornení."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Táto správa je dôležitá vzhľadom na osoby, ktorých sa to týka."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Vlastné upozornenie na aplikáciu"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Chcete povoliť aplikácii <xliff:g id="APP">%1$s</xliff:g> vytvoriť nového používateľa pomocou účtu <xliff:g id="ACCOUNT">%2$s</xliff:g> (používateľ s týmto účtom už existuje)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Chcete povoliť aplikácii <xliff:g id="APP">%1$s</xliff:g> vytvoriť nového používateľa pomocou účtu <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Pridať jazyk"</string>
@@ -2084,22 +2110,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Ponuka Dostupnosť"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popis aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balík <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> bol vložený do kontajnera OBMEDZENÉ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Osobné"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Práca"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Osobné zobrazenie"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Pracovné zobrazenie"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nedá sa zdieľa s pracovnými aplikáciami"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nedá sa zdieľať s osobnými aplikáciami"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Správca IT zablokoval zdieľanie medzi osobnými a pracovnými profilmi"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Pracovné aplikácie sú nedostupné"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Správca IT vám neumožňuje zobrazovať osobný obsah v pracovných aplikáciách"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Osobné aplikácie sú nedostupné"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Správca IT vám neumožňuje zobrazovať pracovný obsah v osobných aplikáciách"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Zapnúť pracovný profil na zdieľanie obsahu"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Zapnúť pracovný profil na zobrazovanie obsahu"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"K dispozícii nie sú žiadne aplikácie"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Zapnúť"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Nahrávanie alebo prehrávanie zvuku počas telefonických hovorov"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Povoľuje tejto aplikácii, keď je priradená ako predvolená aplikácia na vytáčanie, nahrávať alebo prehrávať zvuk počas telefonických hovorov."</string>
</resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index 93a1d34..fcf0ad9 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Vaša organizacija upravlja to napravo in lahko nadzira omrežni promet. Dotaknite se za podrobnosti."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Skrbnik je spremenil nastavitve lokacije"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Dotaknite se za ogled nastavitev lokacije."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Zaznavalnik države"</string>
+ <string name="location_service" msgid="2439187616018455546">"Lokacijska storitev"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Storitev GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Storitev obvestil tipal"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Storitev Somrak"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Podatki v napravi bodo izbrisani"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Skrbniške aplikacije ni mogoče uporabljati. Podatki v napravi bodo izbrisani.\n\nČe imate vprašanja, se obrnite na skrbnika organizacije."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Tiskanje je onemogočil pravilnik <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -251,6 +256,8 @@
<item quantity="few">Posnetek zaslona za poročilo o napakah bo narejen čez <xliff:g id="NUMBER_1">%d</xliff:g> s.</item>
<item quantity="other">Posnetek zaslona za poročilo o napakah bo narejen čez <xliff:g id="NUMBER_1">%d</xliff:g> s.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Posnetek zaslona s poročilom o napakah je izdelan"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Izdelava posnetka zaslona s poročilom o napakah ni uspela"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tihi način"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zvok je IZKLOPLJEN"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zvok je VKLOPLJEN"</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"dostopanje do ukazov ponudnika dodatnih lokacij"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Aplikaciji omogoča dostop do dodatnih ukazov ponudnika lokacij. S tem lahko aplikacija moti delovanje sistema GPS ali drugih virov lokacije."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"dostop do točne lokacije samo, ko deluje v ospredju"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ta aplikacija lahko pridobi vašo točno lokacijo samo, ko deluje v ospredju. Če želite aplikaciji omogočiti uporabo lokacijskih storitev, morajo biti te vklopljene in na voljo v napravi. Poraba energije baterije bo morda večja."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ta aplikacija lahko pridobi vašo natančno lokacijo od lokacijskih storitev, ko je aplikacija v uporabi. Lokacijske storitve za napravo morajo biti vklopljene, da lahko aplikacija pridobi lokacijo. To lahko poveča porabo energije baterije."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"dostop do približne lokacije samo, ko deluje v ospredju"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ta aplikacija lahko pridobi vašo približno lokacijo samo, ko deluje v ospredju. Če želite aplikaciji omogočiti uporabo lokacijskih storitev, morajo biti te vklopljene in na voljo v napravi."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ta aplikacija lahko pridobi vašo približno lokacijo od lokacijskih storitev, ko je aplikacija v uporabi. Lokacijske storitve za napravo morajo biti vklopljene, da lahko aplikacija pridobi lokacijo."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"dostop do lokacije med izvajanjem v ozadju"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ta aplikacija lahko dostopa do lokacije, ko deluje v ospredju ali ozadju."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ta aplikacija lahko kadar koli dostopa do lokacije, tudi če aplikacije ne uporabljate."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"spreminjanje nastavitev zvoka"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Aplikaciji omogoča spreminjanje splošnih zvočnih nastavitev, na primer glasnost in kateri zvočnik se uporablja."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"snemanje zvoka"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ta aplikacija lahko poljubno uporablja fotoaparat za snemanje fotografij ali videoposnetkov."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Aplikaciji ali storitvi dovoli dostop do vgrajenih fotoaparatov za snemanje fotografij in videoposnetkov"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ta odobrena/sistemska aplikacija lahko z vgrajenim fotoaparatom kadar koli snema fotografije in videoposnetke. Aplikacija mora imeti omogočeno tudi dovoljenje android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Aplikaciji ali storitvi dovoli prejemanje povratnih klicev o odpiranju ali zapiranju naprav s fotoaparati."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ta aplikacija za podpise lahko prejema povratne klice, ko se odpira (s katerim paketom aplikacij) ali zapira katera koli naprava s fotoaparatom."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"nadzor vibriranja"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Aplikaciji omogoča nadzor vibriranja."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Aplikaciji dovoljuje dostop do stanja vibriranja."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Dovoli, da aplikacija usmeri klice prek sistema, da se tako izboljša izkušnja klicanja."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ogled in nadzor klicev prek sistema."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Aplikaciji dovoljuje, da si ogleda in nadzoruje aktivne klice v napravi. To vključuje informacije, kot so telefonske številke klicev in stanje klicev."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"Nadaljevanje klica iz druge aplikacije"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Aplikaciji dovoljuje nadaljevanje klica, ki se je začel v drugi aplikaciji."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"branje telefonskih številk"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Aplikaciji dovoljuje dostop do telefonskih številk v napravi."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"Ohranjanje vklopljenega zaslona avtomobila"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"preprečitev prehoda tabličnega računalnika v stanje pripravljenosti"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"preprečevanje preklopa naprave Android TV v stanje pripravljenosti"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"preprečevanje prehoda v stanje pripravljenosti telefona"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Aplikaciji omogoča, da zaslon avtomobila ohranja vklopljen."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Omogoča, da aplikacija prepreči prehod tabličnega računalnika v stanje pripravljenosti."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Aplikaciji dovoljuje, da prepreči preklop naprave Android TV v stanje pripravljenosti."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Aplikaciji omogoča, da v telefonu prepreči prehod v stanje pripravljenosti."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Poskusite znova."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Ni včlanjenih prstnih odtisov."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Ta naprava nima tipala prstnih odtisov."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Tipalo je začasno onemogočeno."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Prst <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Obraza ni mogoče preveriti. Poskusite znova."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Odklepanja z obrazom niste nastavili."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Ta naprava ne podpira odklepanja z obrazom."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Tipalo je začasno onemogočeno."</string>
<string name="face_name_template" msgid="3877037340223318119">"Obraz <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilno omrežje nima dostopa do interneta"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Omrežje nima dostopa do interneta"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Do zasebnega strežnika DNS ni mogoče dostopati"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Povezava je vzpostavljena"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Povezljivost omrežja <xliff:g id="NETWORK_SSID">%1$s</xliff:g> je omejena"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Dotaknite se, da kljub temu vzpostavite povezavo"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Preklopljeno na omrežje vrste <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Iskanje napak prek USB je povezano"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Dotaknite se, če želite izklop. odpravlj. napak prek USB-ja"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Izberite, če želite onemogočiti iskanje in odpravljanje napak prek vrat USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Povezava za brezžično odpravljanje napak je vzpostavljena"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Dotaknite se, če želite izklopiti brezžično odpravljanje napak."</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Izberite, če želite onemogočiti brezžično odpravljanje napak."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Način preizkusnega ogrodja je omogočen"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Če želite onemogočiti način preizkusnega ogrodja, ponastavite napravo na tovarniške nastavitve."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Serijska konzola je omogočena"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"V prihodnjih različicah R storitev v ospredju z zagonom iz ozadja iz paketa <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne bo imela dovoljenja med uporabo aplikacije. Oglejte si go/r-bg-fgs-restriction in pošljite poročilo o napakah."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ali želite povečati glasnost nad priporočeno raven?\n\nDolgotrajno poslušanje pri veliki glasnosti lahko poškoduje sluh."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite uporabljati bližnjico funkcij za ljudi s posebnimi potrebami?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Ko je bližnjica vklopljena, pritisnite gumba za glasnost in ju pridržite tri sekunde, če želite zagnati funkcijo za ljudi s posebnimi potrebami."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ali storitvi <xliff:g id="SERVICE">%1$s</xliff:g> dovolite popoln nadzor nad svojo napravo?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Če vklopite storitev <xliff:g id="SERVICE">%1$s</xliff:g>, vaša naprava ne bo uporabljala zaklepanja zaslona za izboljšanje šifriranja podatkov."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Popoln nadzor je ustrezen za aplikacije, ki vam pomagajo pri funkcijah za ljudi s posebnimi potrebami, vendar ne za večino aplikacij."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ogledovanje in upravljanje zaslona"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Bere lahko vso vsebino na zaslonu ter prikaže vsebino prek drugih aplikacij."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Ogledovanje in izvajanje dejanj"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Spremlja lahko vaše interakcije z aplikacijo ali senzorjem strojne opreme ter komunicira z aplikacijami v vašem imenu."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Dovoli"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Zavrni"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Če želite začeti uporabljati funkcijo, se je dotaknite:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Izberite aplikacije, ki jih želite uporabljati z gumbom za funkcije za ljudi s posebnimi potrebami"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Izberite aplikacije, ki jih želite uporabljati z bližnjico na tipki za glasnost"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Storitev <xliff:g id="SERVICE_NAME">%s</xliff:g> je izklopljena"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Uredi bližnjice"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Prekliči"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Končano"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Izklopi bližnjico"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Uporabi bližnjico"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverzija barv"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Nekategorizirano"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Vi določite raven pomembnosti teh obvestil."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Pomembno zaradi udeleženih ljudi."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Obvestilo po meri iz aplikacije"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Ali aplikaciji <xliff:g id="APP">%1$s</xliff:g> dovolite, da ustvari novega uporabnika za račun <xliff:g id="ACCOUNT">%2$s</xliff:g> (uporabnik s tem računom že obstaja)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Ali aplikaciji <xliff:g id="APP">%1$s</xliff:g> dovolite, da ustvari novega uporabnika za račun <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dodajanje jezika"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni s funkcijami za ljudi s posebnimi potrebami"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Vrstica s podnapisi aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je bil dodan v segment OMEJENO"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Osebno"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Služba"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Pogled osebnega profila"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Pogled delovnega profila"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Deljenje z delovnimi aplikacijami ni mogoče"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Deljenje z osebnimi aplikacijami ni mogoče"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Skrbnik za IT je blokiral deljenje med osebnimi in delovnimi profili"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Dostop do delovnih aplikacij ni mogoč"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Skrbnik za IT vam ne dovoli ogleda vsebine osebnega profila v delovnih aplikacijah"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Dostop do osebnih aplikacij ni mogoč"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Skrbnik za IT vam ne dovoli ogleda vsebine delovnega profila v osebnih aplikacijah"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Vklopite delovni profil, če želite deliti vsebino"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Vklopite delovni profil, če si želite ogledati vsebino"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Na voljo ni nobena aplikacija"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Vklop"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Snemanje ali predvajanje zvoka med telefonskimi klici"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tej aplikaciji dovoljuje snemanje ali predvajanje zvoka med telefonskimi klici, ko je nastavljena kot privzeta aplikacija za klicanje."</string>
</resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index f708fe4..9900629 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organizata jote e menaxhon këtë pajisje dhe mund të monitorojë trafikun e rrjetit. Trokit për detaje."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Cilësimet e vendndodhjes u ndryshuan nga administratori yt"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Trokit për të parë cilësimet e tua të vendndodhjes."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Zbuluesi i shtetit"</string>
+ <string name="location_service" msgid="2439187616018455546">"Vendndodhja e shërbimit"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Shërbimi GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Shërbimi i njoftimeve të sensorit"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Shërbimi i muzgut"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Pajisja do të spastrohet"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Aplikacioni i administratorit nuk mund të përdoret. Pajisja jote tani do të fshihet.\n\nNëse ke pyetje, kontakto me administratorin e organizatës."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Printimi është çaktivizuar nga <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Marrja e pamjes së ekranit për raportin e defektit në kod në <xliff:g id="NUMBER_1">%d</xliff:g> sekonda.</item>
<item quantity="one">Marrja e pamjes së ekranit për raportin e defektit në kod në <xliff:g id="NUMBER_0">%d</xliff:g> sekondë.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"U shkrep pamja e ekranit me raportin e defekteve në kod"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Nuk u shkrep pamja e ekranit me raportin e defekteve në kod"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Modaliteti \"në heshtje\""</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Zëri është çaktivizuar"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Zëri është i aktivizuar"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"qasje në komandat shtesë të ofruesit të vendndodhjes"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Lejon aplikacionin të ketë qasje në komandat shtesë të ofruesit për vendndodhjen. Kjo mund ta lejojë aplikacionin të ndërhyjë në operacionin e GPS-së apo të burimeve të tjera për vendndodhjen."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"qasu në vendndodhjen e saktë vetëm në plan të parë"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ky aplikacion mund të marrë vendndodhjen tënde të saktë vetëm kur është në plan të parë. Shërbimet e vendndodhjes duhet të jenë të aktivizuara dhe në dispozicion në pajisjen tënde që aplikacioni të mund t\'i përdorë. Kjo gjë mund të rrisë konsumin e baterisë."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ky aplikacion mund të marrë vendndodhjen tënde të saktë nga shërbimet e vendndodhjes kur aplikacioni është në përdorim. Shërbimet e vendndodhjes për pajisjen tënde duhet të aktivizohen që aplikacioni të marrë vendndodhjen. Kjo mund të rrisë përdorimin e baterisë."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"qasu në vendndodhjen e përafërt vetëm në plan të parë"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ky aplikacion mund të marrë vendndodhjen tënde të përafërt vetëm kur është në plan të parë. Shërbimet e vendndodhjes duhet të jenë të aktivizuara dhe të ofrohen në pajisjen tënde që aplikacioni të mund t\'i përdorë."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ky aplikacion mund të marrë vendndodhjen tënde të përafërt nga shërbimet e vendndodhjes kur aplikacioni është në përdorim. Shërbimet e vendndodhjes për pajisjen tënde duhet të aktivizohen që aplikacioni të marrë vendndodhjen."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"qasje te vendndodhja në sfond"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ky aplikacion mund të ketë qasje te vendndodhja ndërkohë që funksionon në sfond, përveç qasjes në plan të parë te vendndodhja."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ky aplikacion mund të ketë qasje te vendndodhja në çdo kohë, edhe kur aplikacioni nuk është në përdorim."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ndrysho cilësimet e audios"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Lejon aplikacionin të modifikojë cilësimet globale të audios siç është volumi dhe se cili altoparlant përdoret për daljen."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"regjistro audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ky aplikacion mund të nxjerrë fotografi dhe të regjistrojë video me kamerën tënde në çdo kohë."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Lejo një aplikacion ose shërbim të ketë qasje në kamerat e sistemit për të shkrepur fotografi dhe regjistruar video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ky aplikacion sistemi | i privilegjuar mund të shkrepë fotografi dhe të regjistrojë video duke përdorur një kamerë në çdo moment. Kërkon që autorizimi i android.permission.CAMERA të mbahet edhe nga aplikacioni"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Lejo që një aplikacion ose shërbim të marrë telefonata mbrapsht për pajisjet e kamerës që hapen ose mbyllen."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ky aplikacion i nënshkrimit mund të marrë telefonata mbrapsht kur hapet ose mbyllet një pajisje e kamerës (nga një paketë e aplikacionit)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrollo dridhjen"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Lejon aplikacionin të kontrollojë dridhësin."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Lejon që aplikacioni të ketë qasje te gjendja e dridhësit."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Lejon që aplikacioni të kalojë telefonatat përmes sistemit për të përmirësuar përvojën e telefonatës."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Shiko dhe kontrollo telefonatat nëpërmjet sistemit."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Lejon që aplikacioni të shikojë dhe të kontrollojë telefonatat në vazhdim në pajisje. Kjo përfshin informacione si p.sh. numrat e telefonatave për telefonatat dhe gjendjen e telefonatave."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"përjashto nga kufizimet e regjistrimit të audios"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Përjashto aplikacionin nga kufizimet për të regjistruar audion."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"vazhdo një telefonatë nga një aplikacion tjetër"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Lejon që aplikacioni të vazhdojë një telefonatë që është nisur në një aplikacion tjetër."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"lexo numrat e telefonit"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Lejon që aplikacioni të ketë qasje te numrat e telefonit të pajisjes."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"të mbajë ekranin e makinës të aktivizuar"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"parandalo kalimin e tabletit në fjetje"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"parandalon kalimin në fjetje të pajisjes sate Android TV"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"parandalo kalimin e telefonit në fjetje"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Lejon që aplikacioni të mbajë ekranin e makinës të aktivizuar."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Lejon aplikacionin të parandalojë tabletin nga fjetja."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Lejon aplikacionin të parandalojë kalimin në fjetje të pajisjes sate Android TV."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Lejon aplikacionin të parandalojë telefonin nga fjetja."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Provo përsëri."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Nuk ka asnjë gjurmë gishti të regjistruar."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Kjo pajisje nuk ka sensor të gjurmës së gishtit."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensori është çaktivizuar përkohësisht."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Gishti <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Fytyra nuk mund të verifikohet. Provo përsëri."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Nuk e ke konfiguruar shkyçjen me fytyrë."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Shkyçja me fytyrë nuk mbështetet në këtë pajisje"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensori është çaktivizuar përkohësisht."</string>
<string name="face_name_template" msgid="3877037340223318119">"Fytyra <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Rrjeti celular nuk ka qasje në internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Rrjeti nuk ka qasje në internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Serveri privat DNS nuk mund të qaset"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Lidhur"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ka lidhshmëri të kufizuar"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Trokit për t\'u lidhur gjithsesi"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Kaloi te <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1285,7 +1295,7 @@
<string name="sms_short_code_confirm_never_allow" msgid="2688828813521652079">"Mos lejo asnjëherë"</string>
<string name="sim_removed_title" msgid="5387212933992546283">"Karta SIM u hoq"</string>
<string name="sim_removed_message" msgid="9051174064474904617">"Rrjeti celular nuk do të mundësohet derisa ta rinisësh pajisjen me një kartë të vlefshme SIM në të."</string>
- <string name="sim_done_button" msgid="6464250841528410598">"U krye!"</string>
+ <string name="sim_done_button" msgid="6464250841528410598">"U krye"</string>
<string name="sim_added_title" msgid="7930779986759414595">"Karta SIM u shtua"</string>
<string name="sim_added_message" msgid="6602906609509958680">"Rinise pajisjen për të pasur qasje në rrjetin celular."</string>
<string name="sim_restart_button" msgid="8481803851341190038">"Rifillo"</string>
@@ -1298,7 +1308,7 @@
<string name="time_picker_dialog_title" msgid="9053376764985220821">"Cakto kohën"</string>
<string name="date_picker_dialog_title" msgid="5030520449243071926">"Vendos datën"</string>
<string name="date_time_set" msgid="4603445265164486816">"Cakto"</string>
- <string name="date_time_done" msgid="8363155889402873463">"U krye!"</string>
+ <string name="date_time_done" msgid="8363155889402873463">"U krye"</string>
<string name="perms_new_perm_prefix" msgid="6984556020395757087"><font size="12" fgcolor="#ff33b5e5">"E RE: "</font></string>
<string name="perms_description_app" msgid="2747752389870161996">"Ofruar nga <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="no_permissions" msgid="5729199278862516390">"Nuk kërkohen leje"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Korrigjuesi i USB-së është i lidhur"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Trokit për të çaktivizuar korrigjimin e USB-së"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Përzgjidhe për të çaktivizuar korrigjimin e gabimeve të USB-së"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Korrigjimi me lidhjen pa tel është lidhur"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Trokit për të çaktivizuar korrigjimin me lidhjen pa tel"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Zgjidhe për të çaktivizuar korrigjimin me lidhjen pa tel"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Modaliteti i lidhjes së testimit është aktivizuar"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Kryej një rivendosje në cilësimet e fabrikës për të çaktivizuar \"Modalitetin e lidhjes së testimit\"."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Paneli komandues i serisë është aktivizuar"</string>
@@ -1401,7 +1414,7 @@
<string name="ime_action_search" msgid="4501435960587287668">"Kërko"</string>
<string name="ime_action_send" msgid="8456843745664334138">"Dërgo"</string>
<string name="ime_action_next" msgid="4169702997635728543">"Përpara"</string>
- <string name="ime_action_done" msgid="6299921014822891569">"U krye!"</string>
+ <string name="ime_action_done" msgid="6299921014822891569">"U krye"</string>
<string name="ime_action_previous" msgid="6548799326860401611">"I mëparshëm"</string>
<string name="ime_action_default" msgid="8265027027659800121">"Ekzekuto"</string>
<string name="dial_number_using" msgid="6060769078933953531">"Telefono numrin\nduke përdorur <xliff:g id="NUMBER">%s</xliff:g>"</string>
@@ -1448,7 +1461,7 @@
<item quantity="other"><xliff:g id="INDEX">%d</xliff:g> nga gjithsej <xliff:g id="TOTAL">%d</xliff:g></item>
<item quantity="one">1 përputhje</item>
</plurals>
- <string name="action_mode_done" msgid="2536182504764803222">"U krye!"</string>
+ <string name="action_mode_done" msgid="2536182504764803222">"U krye"</string>
<string name="progress_erasing" msgid="6891435992721028004">"Po fshin hapësirën ruajtëse të brendshme…"</string>
<string name="share" msgid="4157615043345227321">"Shpërndaj"</string>
<string name="find" msgid="5015737188624767706">"Gjej"</string>
@@ -1489,7 +1502,7 @@
<string name="keyboardview_keycode_alt" msgid="8997420058584292385">"Alt"</string>
<string name="keyboardview_keycode_cancel" msgid="2134624484115716975">"Anulo"</string>
<string name="keyboardview_keycode_delete" msgid="2661117313730098650">"Fshi"</string>
- <string name="keyboardview_keycode_done" msgid="2524518019001653851">"U krye!"</string>
+ <string name="keyboardview_keycode_done" msgid="2524518019001653851">"U krye"</string>
<string name="keyboardview_keycode_mode_change" msgid="2743735349997999020">"Ndryshim modaliteti"</string>
<string name="keyboardview_keycode_shift" msgid="3026509237043975573">"Shift"</string>
<string name="keyboardview_keycode_enter" msgid="168054869339091055">"Enter"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Shërbimi në plan të parë i nisur në sfond nga <xliff:g id="PACKAGENAME">%1$s</xliff:g> nuk do të ketë lejen e nevojshme gjatë përdorimit në ndërtimet e ardhshme R. Shiko go/r-bg-fgs-restriction dhe dërgo një raport të defekteve në kod."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Të ngrihet volumi mbi nivelin e rekomanduar?\n\nDëgjimi me volum të lartë për periudha të gjata mund të dëmtojë dëgjimin."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Të përdoret shkurtorja e qasshmërisë?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kur shkurtorja është e aktivizuar, shtypja e të dy butonave për 3 sekonda do të nisë një funksion qasshmërie."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Do të lejosh që <xliff:g id="SERVICE">%1$s</xliff:g> të ketë kontroll të plotë të pajisjes sate?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nëse aktivizon <xliff:g id="SERVICE">%1$s</xliff:g>, pajisja nuk do të përdorë kyçjen e ekranit për të përmirësuar enkriptimin e të dhënave."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Kontrolli i plotë është i përshtatshëm për aplikacionet që të ndihmojnë me nevojat e qasshmërisë, por jo për shumicën e aplikacioneve."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Shiko dhe kontrollo ekranin"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ai mund të lexojë të gjithë përmbajtjen në ekran dhe të shfaqë përmbajtjen mbi aplikacione të tjera."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Shiko dhe kryej veprimet"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ai mund të monitorojë ndërveprimet me një aplikacion ose një sensor hardueri dhe të ndërveprojë me aplikacionet në emrin tënd."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Lejo"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Refuzo"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Trokit te një veçori për të filluar ta përdorësh atë:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Zgjidh aplikacionet që do të përdorësh me butonin e qasshmërisë"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Zgjidh aplikacionet që do të përdorësh me shkurtoren e tastit të volumit"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> është çaktivizuar"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redakto shkurtoret"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Anulo"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"U krye"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Çaktivizo shkurtoren"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Përdor shkurtoren"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Kthimi i ngjyrës"</string>
@@ -1747,7 +1772,7 @@
<string name="immersive_cling_title" msgid="2307034298721541791">"Po shikon ekranin e plotë"</string>
<string name="immersive_cling_description" msgid="7092737175345204832">"Për të dalë, rrëshqit nga lart poshtë."</string>
<string name="immersive_cling_positive" msgid="7047498036346489883">"E kuptova"</string>
- <string name="done_label" msgid="7283767013231718521">"U krye!"</string>
+ <string name="done_label" msgid="7283767013231718521">"U krye"</string>
<string name="hour_picker_description" msgid="5153757582093524635">"Rrëshqitësi rrethor i orëve"</string>
<string name="minute_picker_description" msgid="9029797023621927294">"Rrëshqitësi rrethor i minutave"</string>
<string name="select_hours" msgid="5982889657313147347">"Përzgjidh orët"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"E pakategorizuara"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ke caktuar rëndësinë e këtyre njoftimeve."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Është i rëndësishëm për shkak të personave të përfshirë."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Njoftim i personalizuar për aplikacionin"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Të lejohet <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> (një përdorues me këtë llogari ekziston tashmë) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Të lejohet <xliff:g id="APP">%1$s</xliff:g> që të krijojë një përdorues të ri me <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Shto një gjuhë"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyja e qasshmërisë"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Shiriti i nëntitullit të <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> është vendosur në grupin E KUFIZUAR"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Puna"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Pamja personale"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Pamja e punës"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Nuk mund të ndash me aplikacionet e punës"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Nuk mund të ndash me aplikacionet personale"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Administratori yt i teknologjisë së informacionit ka bllokuar ndarjen mes profileve personale dhe atyre të punës"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Nuk ka qasje tek aplikacionet e punës"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Administratori yt i teknologjisë së informacionit nuk të lejon të shikosh përmbajtjen personale në aplikacionet e punës"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Nuk ka qasje tek aplikacionet personale"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Administratori yt i teknologjisë së informacionit nuk të lejon të shikosh përmbajtjen e punës në aplikacionet personale"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Aktivizo profilin për të ndarë përmbajtjen"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Aktivizo profilin për të parë përmbajtjen"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Nuk ofrohet asnjë aplikacion"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktivizo"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Të regjistrojë ose luajë audio në telefonata"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Lejon këtë aplikacion, kur caktohet si aplikacioni i parazgjedhur i formuesit të numrave, të regjistrojë ose luajë audio në telefonata."</string>
</resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index 51e2674..f095218 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -195,6 +195,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Организација управља овим уређајем и може да надгледа мрежни саобраћај. Додирните за детаље."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Администратор је променио подешавања локације"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Додирните да бисте видели подешавања локације."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Детектор земље"</string>
+ <string name="location_service" msgid="2439187616018455546">"Услуга локације"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS услуга"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Услуга обавештења сензора"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Услуга Сумрак"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Уређај ће бити обрисан"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Не можете да користите ову апликацију за администраторе. Уређај ће сада бити обрисан.\n\nАко имате питања, контактирајте администратора организације."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Штампање је онемогућила апликација <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -248,6 +253,8 @@
<item quantity="few">Направићемо снимак екрана ради извештаја о грешци за <xliff:g id="NUMBER_1">%d</xliff:g> секунде.</item>
<item quantity="other">Направићемо снимак екрана ради извештаја о грешци за <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Екран са извештајем о грешци је снимљен"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Снимање екрана са извештајем о грешци није успело"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Нечујни режим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Звук је ИСКЉУЧЕН"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Звук је УКЉУЧЕН"</string>
@@ -415,11 +422,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"приступ додатним командама добављача локације"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Омогућава апликацији да приступа додатним командама даваоца услуга локације. То може да омогући апликацији да утиче на рад GPS-а или других извора локације."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"приступ прецизној локацији само у првом плану"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ова апликација може да одреди вашу тачну локацију само када ради у првом плану. Услуге локације морају да буду укључене и доступне на уређају да би апликација могла да их користи. То може да повећа потрошњу батерије."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Ова апликација може да одреди вашу тачну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију. То може да повећа потрошњу батерије."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"приступ приближној локацији само у првом плану"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ова апликација може да одреди вашу приближну локацију само када ради у првом плану. Услуге локације морају да буду укључене и доступне на уређају да би апликација могла да их користи."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Ова апликација може да одреди вашу приближну локацију на основу услуга локације док се апликација користи. Услуге локације за уређај морају да буду укључене да би апликација одредила локацију."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"приступ локацији у позадини"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ова апликација може да приступа локацији док ради у позадини, као и када ради у првом плану."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ова апликација може да приступа локацији у било ком тренутку, чак и док се апликација не користи."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"промена аудио подешавања"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дозвољава апликацији да мења глобална аудио подешавања као што су јачина звука и избор звучника који се користи као излаз."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"снимање аудио записа"</string>
@@ -432,6 +439,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ова апликација може да снима фотографије и видео снимке помоћу камере у било ком тренутку."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволите некој апликацији или услузи да приступа камерама система да би снимала слике и видео снимке"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ова привилегована | системска апликација може да снима слике и видео снимке помоћу камере система у било ком тренутку. Апликација треба да има и дозволу android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволите апликацији или услузи да добија повратне позиве о отварању или затварању уређаја са камером."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ова апликација за потписе може да добија повратне позиве када се било који уређај са камером отвара или затвара (помоћу неког пакета апликација)."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"контрола вибрације"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Дозвољава апликацији да контролише вибрацију."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Дозвољава апликацији да приступа стању вибрирања."</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дозвољава апликацији да преусмерава позиве преко система да би побољшала доживљај позивања."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"преглед и контрола позива преко система."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Дозвољава апликацији да прегледа и контролише тренутне позиве на уређају. То обухвата информације попут бројева телефона и статуса позива."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"настави позив у другој апликацији"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Дозвољава апликацији да настави позив који је започет у другој апликацији."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"читање бројева телефона"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Дозвољава апликацији да приступа бројевима телефона на уређају."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"не искључуј екран у аутомобилу"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"спречавање преласка таблета у стање спавања"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"спречава Android TV уређај да пређе у стање спавања"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"спречавање преласка телефона у стање спавања"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дозвољава апликацији да не искључује екран у аутомобилу."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Дозвољава апликацији да спречи таблет да пређе у стање спавања."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дозвољава апликацији да спречи Android TV уређај да пређе у стање спавања."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Дозвољава апликацији да спречи телефон да пређе у стање спавања."</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Пробајте поново."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Није регистрован ниједан отисак прста."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Овај уређај нема сензор за отисак прста."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Сензор је привремено онемогућен."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Прст <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Провера лица није успела. Пробајте поново."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Нисте подесили откључавање лицем"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Откључавање лицем није подржано на овом уређају"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Сензор је привремено онемогућен."</string>
<string name="face_name_template" msgid="3877037340223318119">"Лице <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1273,7 +1286,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобилна мрежа нема приступ интернету"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Мрежа нема приступ интернету"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Приступ приватном DNS серверу није успео"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Повезано је"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> има ограничену везу"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Додирните да бисте се ипак повезали"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Прешли сте на тип мреже <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1338,6 +1350,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Отклањање грешака са USB-а је омогућено"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Додирните да бисте искључили отклањање грешака са USB-а"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Изаберите да бисте онемогућили отклањања грешака са USB-а."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Бежично отклањање грешака је повезано"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Додирните да бисте искључили бежично отклањање грешака"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Изаберите да бисте онемогућили бежично отклањање грешака."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Омогућен је режим пробног коришћења"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Обавите ресетовање на фабричка подешавања да бисте онемогућили режим пробног коришћења."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Серијска конзола је омогућена"</string>
@@ -1643,10 +1658,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Услуга у првом плану са <xliff:g id="PACKAGENAME">%1$s</xliff:g> која је покренута у позадини неће имати дозволу током коришћења у будућим R верзијама. Посетите go/r-bg-fgs-restriction и пошаљите извештај о грешци."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Желите да појачате звук изнад препорученог нивоа?\n\nСлушање гласне музике дуже време може да вам оштети слух."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Желите ли да користите пречицу за приступачност?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Када је пречица укључена, притисните оба дугмета за јачину звука да бисте покренули функцију приступачности."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Желите ли да дозволите да услуга <xliff:g id="SERVICE">%1$s</xliff:g> има потпуну контролу над уређајем?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ако укључите услугу <xliff:g id="SERVICE">%1$s</xliff:g>, уређај неће користити закључавање екрана да би побољшао шифровање података."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Потпуна контрола је примерена за апликације које вам помажу код услуга приступачности, али не и за већину апликација."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Прегледај и контролиши екран"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Може да чита сав садржај на екрану и приказује га у другим апликацијама."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Прегледај и обављај радње"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Може да прати интеракције са апликацијом или сензором хардвера и користи апликације уместо вас."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволи"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Одбиј"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Додирните неку функцију да бисте почели да је користите:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Одаберите апликације које ћете користити са дугметом Приступачност"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Одаберите апликације које ћете користити са тастером јачине звука као пречицом"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Услуга <xliff:g id="SERVICE_NAME">%s</xliff:g> је искључена"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Измените пречице"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Откажи"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Искључи пречицу"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Користи пречицу"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Инверзија боја"</string>
@@ -1877,6 +1904,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Некатегоризовано"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ви подешавате важност ових обавештења."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Ово је важно због људи који учествују."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Прилагођено обавештење о апликацији"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Желите ли да дозволите да <xliff:g id="APP">%1$s</xliff:g> направи новог корисника са налогом <xliff:g id="ACCOUNT">%2$s</xliff:g> (корисник са тим налогом већ постоји)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Желите ли да дозволите да <xliff:g id="APP">%1$s</xliff:g> направи новог корисника са налогом <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Додајте језик"</string>
@@ -2050,22 +2078,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени Приступачност"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Трака са насловима апликације <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> је додат у сегмент ОГРАНИЧЕНО"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Пословни"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Лични приказ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Приказ за посао"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Не можете да делите садржај са апликацијама за посао"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Не можете да делите садржај са личним апликацијама"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ИТ администратор је блокирао дељење између личних апликација и профила за Work"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Приступ апликацијама за посао није могућ"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ИТ администратор вам не дозвољава да у апликацијама за посао прегледате лични садржај"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Приступ личним апликацијама није могућ"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ИТ администратор вам не дозвољава да у личним апликацијама прегледате садржај за посао"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Укључите профил за Work да бисте делили садржај"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Укључите профил за Work да бисте прегледали садржај"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Нема доступних апликација"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Укључи"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Снимање или пуштање звука у телефонским позивима"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Омогућава овој апликацији, када је додељена као подразумевана апликација за позивање, да снима или пушта звук у телефонским позивима."</string>
</resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 88b62f4..6da31db 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Organisationen hanterar den här enheten och kan övervaka nätverkstrafiken. Tryck om du vill veta mer."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Platsinställningarna har ändrats av administratören"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Tryck för att se dina platsinställningar."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Country Detector"</string>
+ <string name="location_service" msgid="2439187616018455546">"Location Service"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS-tjänst"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensor Notification Service"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Enheten kommer att rensas"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Det går inte att använda administratörsappen. Enheten rensas.\n\nKontakta organisationens administratör om du har några frågor."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Utskrift har inaktiverats av <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Tar en skärmdump till felrapporten om <xliff:g id="NUMBER_1">%d</xliff:g> sekunder.</item>
<item quantity="one">Tar en skärmdump till felrapporten om <xliff:g id="NUMBER_0">%d</xliff:g> sekund.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Skärmdump med felrapport har tagits"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Det gick inte att ta en skärmdump med felrapport"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Tyst läge"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Ljudet är AV"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Ljudet är PÅ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"få åtkomst till extra kommandon för platsleverantör"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Tillåter att appen får åtkomst till extra kommandon för platsleverantör. Detta kan innebära att appen tillåts störa funktionen för GPS eller andra platskällor."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"endast åtkomst till exakt plats i förgrunden"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Den här appen kan endast få information om din exakta plats när den körs i förgrunden. Platstjänsterna måste ha aktiverats och vara tillgängliga på enheten om appen ska kunna använda dem. Detta kan leda till ökad batteriförbrukning."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Den här appen kan få åtkomst till din exakta plats från platstjänster när appen används. Platstjänster för enheten måste vara aktiverat för att appen ska få åtkomst till plats. Detta kan öka batteriförbrukningen."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"endast åtkomst till ungefärlig plats i förgrunden"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Den här appen kan endast få information om din ungefärliga plats när den körs i förgrunden. Platstjänsterna måste ha aktiverats och vara tillgängliga på enheten om appen ska kunna använda dem."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Den här appen kan få åtkomst till din ungefärliga plats från platstjänster när appen används. Platstjänster för enheten måste vara aktiverat för att appen ska få åtkomst till plats."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"få åtkomst till platsinformation i bakgrunden"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Appen får åtkomst till platsinformation när appen körs i bakgrunden, förutom att den har åtkomst när den körs i förgrunden."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Den här appen har platsåtkomst hela tiden, även när appen inte används."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ändra dina ljudinställningar"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Tillåter att appen ändrar globala ljudinställningar som volym och vilken högtalarutgång som används."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"spela in ljud"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Appen kan ta kort och spela in video med kameran när som helst."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Ge en app eller tjänst behörighet att ta bilder och spela in videor med systemets kameror"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Denna systemapp | med behörighet kan ta bilder och spela in videor med systemets kamera när som helst. Appen måste även ha behörigheten android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Tillåt att en app eller tjänst får återanrop när en kameraenhet öppnas eller stängs."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Den här signerade appen kan få återanrop när en kameraenhet öppnas (efter applikationspaket) eller stängs."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"styra vibration"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Tillåter att appen styr vibrationen."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Appen beviljas åtkomst till vibrationsstatus."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Appen tillåts att dirigera samtal via systemet för att förbättra samtalsupplevelsen."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"visa och styra samtal via systemet."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Tillåter att appen kan visa och styra pågående samtal på enheten. Detta omfattar information som telefonnummer för samtal och samtalens status."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"fortsätta ett samtal från en annan app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Tillåter att appen fortsätter ett samtal som har startats i en annan app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"läsa telefonnummer"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Appen beviljas åtkomst till enhetens telefonnummer."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"låta bilens skärm vara på"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"förhindra att surfplattan går in i viloläge"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"förhindra att Android TV-enheten försätts i viloläge"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"förhindra att telefonen sätts i viloläge"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Tillåter appen att låta bilens skärm vara på."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Tillåter att appen förhindrar att surfplattan går in i viloläge."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Tillåter att appen förhindrar att Android TV-enheten försätts i viloläge."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Tillåter att appen förhindrar att mobilen går in i viloläge."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Försök igen."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Inga fingeravtryck har registrerats."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Enheten har ingen fingeravtryckssensor."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensorn har tillfälligt inaktiverats."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Finger <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Det gick inte att verifiera ansiktet. Försök igen."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Du har inte konfigurerat ansiktslås."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Ansiktslås stöds inte på den här enheten."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensorn har tillfälligt inaktiverats."</string>
<string name="face_name_template" msgid="3877037340223318119">"Ansikte <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobilnätverket har ingen internetanslutning"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Nätverket har ingen internetanslutning"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Det går inte att komma åt den privata DNS-servern."</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Ansluten"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> har begränsad anslutning"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Tryck för att ansluta ändå"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Byte av nätverk till <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB-felsökning ansluten"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Tryck för att inaktivera USB-felsökning"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Välj för att inaktivera USB-felsökning."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Trådlös felsökning ansluten"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Tryck för att inaktivera trådlös felsökning"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Välj för att inaktivera trådlös felsökning."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Läget för testverktyg har aktiverats"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Inaktivera testverktygsläget genom att göra en återställning till standardinställningarna."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seriekonsolen är aktiverad"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Förgrundstjänsten från <xliff:g id="PACKAGENAME">%1$s</xliff:g> som startades i bakgrunden får inte behörighet som gäller vid användning i framtida R-versioner. Besök go/r-bg-fgs-restriction och skicka en felrapport."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vill du höja volymen över den rekommenderade nivån?\n\nAtt lyssna med stark volym långa stunder åt gången kan skada hörseln."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vill du använda Aktivera tillgänglighet snabbt?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"När kortkommandot har aktiverats startar du en tillgänglighetsfunktion genom att trycka ned båda volymknapparna i tre sekunder."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vill du tillåta att <xliff:g id="SERVICE">%1$s</xliff:g> får fullständig kontroll över enheten?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Om du aktiverar <xliff:g id="SERVICE">%1$s</xliff:g> används inte skärmlåset för att förbättra datakryptering på enheten."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Fullständig kontroll lämpar sig för appar med tillgänglighetsfunktioner, men är inte lämplig för de flesta appar."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Visa och styra skärmen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Den kan läsa allt innehåll på skärmen och visa innehåll över andra appar."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Visa och vidta åtgärder"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Den kan registrera din användning av en app eller maskinvarusensor och interagera med appar åt dig."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Tillåt"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Neka"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Tryck på funktioner som du vill aktivera:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Välj vilka appar du vill använda med hjälp av tillgänglighetsknappen"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Välj vilka appar du vill använda med hjälp av kortkommandot för volymknapparna"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> har inaktiverats"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Redigera genvägar"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Avbryt"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Klar"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Inaktivera kortkommandot"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Använd kortkommandot"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Inverterade färger"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Okategoriserad"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Du anger hur viktiga aviseringarna är."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Detta är viktigt på grund av personerna som deltar."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Anpassad appavisering"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Tillåter du att <xliff:g id="APP">%1$s</xliff:g> skapar en ny användare för <xliff:g id="ACCOUNT">%2$s</xliff:g> (det finns redan en användare med det här kontot)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Tillåter du att <xliff:g id="APP">%1$s</xliff:g> skapar en ny användare för <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Lägg till ett språk"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tillgänglighetsmenyn"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Textningsfält för <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> har placerats i hinken RESTRICTED"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Privat"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Jobb"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personlig vy"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Jobbvy"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Det går inte att dela med jobbappar"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Det går inte att dela med personliga appar"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"IT-administratören har blockerat delning mellan personliga profiler och jobbprofiler"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ingen åtkomst till jobbappar"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"IT-administratören låter dig inte visa personligt innehåll i jobbappar"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Ingen åtkomst till personliga appar"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"IT-administratören låter dig inte visa jobbinnehåll i personliga appar"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Aktivera jobbprofilen för att dela innehåll"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Aktivera jobbprofilen för att visa innehåll"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Det finns inga tillgängliga appar"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aktivera"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Spela in och spela upp ljud i telefonsamtal"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Tillåter appen att spela in och spela upp ljud i telefonsamtal när den har angetts som standardapp för uppringningsfunktionen."</string>
</resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index e94856b..a02e2df 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Shirika lako linadhibiti kifaa hiki na huenda likafuatilia shughuli kwenye mtandao. Gusa ili upate maelezo zaidi."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Mipangilio ya mahali imebadilishwa na msimamizi wako"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Gusa ili uone mipangilio ya mahali ulipo."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Kitambuzi cha Nchi"</string>
+ <string name="location_service" msgid="2439187616018455546">"Huduma ya Mahali"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Huduma ya GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Huduma ya Arifa ya Kitambuzi"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Data iliyomo kwenye kifaa chako itafutwa"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Huwezi kutumia programu ya msimamizi. Sasa data iliyo kwenye kifaa chako itafutwa.\n\nIkiwa una maswali yoyote, wasiliana na msimamizi wa shirika lako."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Kipengele cha kuchapisha kimezimwa na <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Inapiga picha ya skrini ili iripoti hitilafu baada ya sekunde <xliff:g id="NUMBER_1">%d</xliff:g>.</item>
<item quantity="one">Inapiga picha ya skrini ili iripoti hitilafu baada ya sekunde <xliff:g id="NUMBER_0">%d</xliff:g>.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Umepiga picha ya skrini ya ripoti ya hitilafu"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Imeshindwa kupiga picha ya skrini ya ripoti ya hitilafu"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Mtindo wa kimya"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Sauti Imezimwa"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Sauti imewashwa"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"fikia amri za ziada za mtoa huduma ya mahali"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ruhusu programu kufikia amri za ziada za mtoa huduma za mahali. Hii huenda ikaruhusu programu ikatize matumizi ya GPS au vyanzo vingine vya eneo."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"kufikia mahali mahususi ikiwa tu programu imefunguliwa kwenye skrini"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Programu hii inaweza kupata mahali halisi ikiwa tu umeifungua kwenye skrini. Ni lazima uwashe huduma za mahali na zipatikane kwenye kifaa chako ili programu iweze kuzitumia. Hatua hii inaweza kuongeza matumizi ya betri."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Programu hii inaweza kupata mahali halisi ulipo kutoka kwenye huduma za mahali wakati programu inatumika. Ni lazima uwashe huduma za mahali za kifaa chako ili programu itambue mahali. Huenda hatua hii ikaongeza matumizi ya betri."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"kufikia mahali palipokadiriwa ikiwa tu programu imefunguliwa kwenye skrini"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Programu hii inaweza kukadiria mahali ulipo ikiwa tu umeifungua kwenye skrini. Ni lazima huduma za mahali ziwashwe na zipatikane kwenye kifaa chako ili programu iweze kuzitumia."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Programu hii inaweza kukadiria mahali ulipo kutoka kwenye huduma za mahali wakati programu inatumika. Ni lazima uwashe huduma za mahali za kifaa chako ili programu itambue mahali."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"ifikie mahali inapotumika chinichini"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Programu hii inaweza kufikia maelezo ya mahali inapotumika chinichini, pamoja na ufikiaji wa mahali wakati umeifungua kwenye skrini."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Programu hii inaweza kufikia maelezo ya mahali wakati wowote, hata wakati programu haitumiki."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"badilisha mipangilio yako ya sauti"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Inaruhusu programu kurekebisha mipangilio ya sauti kila mahali kama vile sauti na ni kipaza sauti kipi ambacho kinatumika kwa kutoa."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"kurekodi sauti"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Programu hii inaweza kupiga picha na kurekodi video kwa kutumia kamera wakati wowote."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Ruhusu programu au huduma ifikie kamera za mfumo ili ipige picha na irekodi video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Programu hii ya mfumo ya | inayopendelewa inaweza kupiga picha na kurekodi video ikitumia kamera ya mfumo wakati wowote. Inahitaji ruhusa ya android.permission.CAMERA iwepo kwenye programu pia"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Ruhusu programu au huduma ipokee simu zinazopigwa tena kuhusu vifaa vya kamera kufunguliwa au kufungwa."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Programu ya sahihi inaweza kupokea simu zinazopigwa tena wakati kifaa chochote cha kamera kinafunguliwa (kulingana na kifurushi cha programu) au kufungwa."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"Kudhibiti mtetemo"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Inaruhusu programu kudhibiti kitingishi."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Huruhusu programu kufikia hali ya kitetemeshaji."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Huruhusu programu kuelekeza simu zake kupitia mfumo ili kuboresha hali ya kupiga simu."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"kuona na kudhibiti simu kupitia mfumo."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Inaruhusu programu ione na kudhibiti simu zinazoendelea kupigwa kwenye kifaa. Hii inajumuisha maelezo kama vile nambari za simu zinazopigwa na hali ya simu."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"endelea na simu kutoka programu nyingine"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Huruhusu programu kuendelea na simu ambayo ilianzishwa katika programu nyingine."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"kusoma nambari za simu"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Inaruhusu programu kufikia nambari za simu zilizo kwenye kifaa."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"kuweka skrini ya gari isijizime"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"zuia kompyuta ndogo dhidi ya kulala"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"zuia kifaa chako cha Android TV kisiingie katika hali tuli"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"kuzuia simu isilale"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Huruhusu programu kuweka skrini ya gari isijizime."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Inaruhusu programu kuzuia kompyuta kibao kwenda kulala."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Huruhusu programu izuie kifaa chako cha Android TV kisiingie katika hali tuli."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Inaruhusu programu kuzuia simu isiende kulala."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Jaribu tena."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Hakuna alama za vidole zilizojumuishwa."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Kifaa hiki hakina kitambua alama ya kidole."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Kitambuzi kimezimwa kwa muda."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Kidole cha <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Imeshindwa kuthibitisha uso. Jaribu tena."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Hujaweka mipangilio ya kufungua kwa uso."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Kufungua kwa uso hakutumiki kwenye kifaa hiki."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Kitambuzi kimezimwa kwa muda."</string>
<string name="face_name_template" msgid="3877037340223318119">"Uso wa <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mtandao wa simu hauna uwezo wa kufikia intaneti"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Mtandao hauna uwezo wa kufikia intaneti"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Seva ya faragha ya DNS haiwezi kufikiwa"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Imeunganisha"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> ina muunganisho unaofikia huduma chache."</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Gusa ili uunganishe tu"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Sasa inatumia <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Utatuzi wa USB umeunganishwa"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Gusa ili uzime utatuzi wa USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Chagua ili kulemaza utatuaji USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Umeunganisha utatuzi usiotumia waya"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Gusa ili uzime utatuzi usiotumia waya"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Chagua ili uzime utatuzi usiotumia waya."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Hali ya Muunganisho wa Majaribio imewashwa"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Rejesha mipangilio iliyotoka nayo kiwandani ili uzime hali ya Muunganisho wa Majaribio."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Muunganisho kupitia mlango umewashwa"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Huduma ya programu inayotumika iliyoanzishwa chinichini kwenye <xliff:g id="PACKAGENAME">%1$s</xliff:g> haitakuwa na ruhusa inapotumika katika miundo ijayo ya R. Tafadhali angalia go/r-bg-fgs-restriction na uwasilishe ripoti ya hitilafu."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ungependa kupandisha sauti zaidi ya kiwango kinachopendekezwa?\n\nKusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu uwezo wako wa kusikia."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ungependa kutumia njia ya mkato ya ufikivu?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Unapowasha kipengele cha njia ya mkato, hatua ya kubonyeza vitufe vyote viwili vya sauti kwa sekunde tatu itafungua kipengele cha ufikivu."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Ungependa kuruhusu <xliff:g id="SERVICE">%1$s</xliff:g> idhibiti kifaa chako kikamilifu?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Ukiwasha <xliff:g id="SERVICE">%1$s</xliff:g>, kifaa chako hakitatumia kipengele cha kufunga skrini yako ili kuboresha usimbaji wa data kwa njia fiche."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Udhibiti kamili unafaa kwa programu zinazokusaidia kwa mahitaji ya ufikivu, ila si kwa programu nyingi."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Kuangalia na kudhibiti skrini"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Kinaweza kusoma maudhui yote kwenye skrini na kuonyesha maudhui kwenye programu zingine."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Kuangalia na kutekeleza vitendo"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Kinaweza kufuatilia mawasiliano yako na programu au kitambuzi cha maunzi na kuwasiliana na programu zingine kwa niaba yako."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ruhusu"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Kataa"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Gusa kipengele ili uanze kukitumia:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Chagua programu za kutumia na kitufe cha zana za ufikivu"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Chagua programu za kutumia na njia ya mkato ya kitufe cha sauti"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Huduma ya <xliff:g id="SERVICE_NAME">%s</xliff:g> imezimwa"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Kubadilisha njia za mkato"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Ghairi"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Nimemaliza"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Zima kipengele cha Njia ya Mkato"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tumia Njia ya Mkato"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ugeuzaji rangi"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Ambazo aina haijabainishwa"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Uliweka mipangilio ya umuhimu wa arifa hizi."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Hii ni muhimu kwa sababu ya watu waliohusika."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Arifa ya programu maalum"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Ruhusu <xliff:g id="APP">%1$s</xliff:g> iweke Mtumiaji mpya ikitumia <xliff:g id="ACCOUNT">%2$s</xliff:g> (Je, tayari kuna mtumiaji anayetumia akaunti hii)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Ungependa kuruhusu <xliff:g id="APP">%1$s</xliff:g> iweke Mtumiaji mpya ikitumia <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Ongeza lugha"</string>
@@ -1917,7 +1945,7 @@
<string name="autofill_update_title_with_2types" msgid="1797514386321086273">"Ungependa kusasisha <xliff:g id="TYPE_0">%1$s</xliff:g> na <xliff:g id="TYPE_1">%2$s</xliff:g> katika "<b>"<xliff:g id="LABEL">%3$s</xliff:g>"</b>"?"</string>
<string name="autofill_update_title_with_3types" msgid="1312232153076212291">"Ungependa kusasisha vipengee hivi katika "<b>"<xliff:g id="LABEL">%4$s</xliff:g>"</b>": <xliff:g id="TYPE_0">%1$s</xliff:g>, <xliff:g id="TYPE_1">%2$s</xliff:g> na <xliff:g id="TYPE_2">%3$s</xliff:g>?"</string>
<string name="autofill_save_yes" msgid="8035743017382012850">"Hifadhi"</string>
- <string name="autofill_save_no" msgid="9212826374207023544">"Hapana, asante"</string>
+ <string name="autofill_save_no" msgid="9212826374207023544">"Hapana"</string>
<string name="autofill_save_notnow" msgid="2853932672029024195">"Si sasa"</string>
<string name="autofill_save_never" msgid="6821841919831402526">"Kamwe"</string>
<string name="autofill_update_yes" msgid="4608662968996874445">"Sasisha"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyu ya Ufikivu"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Upau wa manukuu wa <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> kimewekwa katika kikundi KILICHODHIBITIWA"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Binafsi"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Kazini"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Mwonekano wa binafsi"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Mwonekano wa kazini"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Imeshindwa kushiriki na programu za kazini"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Imeshindwa kushiriki na programu za binafsi"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Msimamizi wako wa TEHAMA amezuia kushiriki kati ya wasifu wa binafsi na wa kazini"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Imeshindwa kufikia programu za kazini"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Msimamizi wako wa TEHAMA hakuruhusu uangalie maudhui ya binafsi katika programu za kazini"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Imeshindwa kufikia programu za binafsi"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Msimamizi wako wa TEHAMA hakuruhusu uangalie maudhui ya kazi katika programu za binafsi"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Washa wasifu wa kazini ili ushiriki maudhui"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Washa wasifu wa kazini ili uangalie maudhui"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Hakuna programu zinazopatikana"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Washa"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Kurekodi au kucheza sauti katika simu"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Huruhusu programu hii, wakati imekabidhiwa kuwa programu chaguomsingi ya kipiga simu, kurekodi au kucheza sauti katika simu."</string>
</resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index 8245786..0ac695c 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -191,10 +191,14 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"நிர்வாகியால் தனிப்பட்ட உபயோகத்திற்காக ஒதுக்கப்பட்ட சாதனம்"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"சாதனம் நிர்வகிக்கப்படுகிறது"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"உங்கள் நிறுவனம் இந்தச் சாதனத்தை நிர்வகிக்கும், அத்துடன் அது நெட்வொர்க் ட்ராஃபிக்கைக் கண்காணிக்கலாம். விவரங்களுக்கு, தட்டவும்."</string>
- <!-- no translation found for location_changed_notification_title (4119726617105166830) -->
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"உங்கள் நிர்வாகியால் இருப்பிட அமைப்புகள் மாற்றப்பட்டன"</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"உங்கள் இருப்பிட அமைப்புகளைப் பார்க்க தட்டவும்."</string>
+ <string name="country_detector" msgid="7023275114706088854">"நாட்டைக் கண்டறியும் அம்சம்"</string>
+ <string name="location_service" msgid="2439187616018455546">"இருப்பிடச் சேவை"</string>
+ <!-- no translation found for gnss_service (8907781262179951385) -->
<skip />
- <!-- no translation found for location_changed_notification_text (198907268219396399) -->
- <skip />
+ <string name="sensor_notification_service" msgid="7474531979178682676">"சென்சார் அறிவிப்புச் சேவை"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight சேவை"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"சாதனத் தரவு அழிக்கப்படும்"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"நிர்வாகி ஆப்ஸை உபயோகிக்க முடியாது. இப்போது, உங்கள் சாதனம் ஆரம்ப நிலைக்கு மீட்டமைக்கப்படும்.\n\nஏதேனும் கேள்விகள் இருப்பின், உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்புகொள்ளவும்."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"பிரிண்ட் செய்வதை <xliff:g id="OWNER_APP">%s</xliff:g> தடுத்துள்ளது."</string>
@@ -247,6 +251,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> வினாடிகளில் பிழை அறிக்கைக்கான ஸ்கிரீன்ஷாட் எடுக்கப்படும்.</item>
<item quantity="one"><xliff:g id="NUMBER_0">%d</xliff:g> வினாடியில் பிழை அறிக்கைக்கான ஸ்கிரீன்ஷாட் எடுக்கப்படும்.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"பிழை அறிக்கை ஸ்க்ரீன்ஷாட் எடுக்கப்பட்டது"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"பிழை அறிக்கையை ஸ்க்ரீன்ஷாட் எடுக்க முடியவில்லை"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"நிசப்த பயன்முறை"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ஒலி முடக்கத்தில் உள்ளது"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ஒலி இயக்கத்தில் உள்ளது"</string>
@@ -375,7 +381,7 @@
<string name="permdesc_persistentActivity" product="default" msgid="1914841924366562051">"நினைவகத்தில் நிலையாக இருக்கும் தன்னுடைய பகுதிகளை உருவாக்கப் ஆப்ஸை அனுமதிக்கிறது. இதனால பிற பயன்பாடுகளுக்குக் கிடைக்கும் நினைவகம் வரையறுக்கப்பட்டு, மொபைலின் வேகத்தைக் குறைக்கலாம்"</string>
<string name="permlab_foregroundService" msgid="1768855976818467491">"முன்புலத்தில் இயங்கும் சேவையை இயக்குதல்"</string>
<string name="permdesc_foregroundService" msgid="8720071450020922795">"முன்புலத்தில் இயங்கும் சேவைகளை உபயோகிக்க, ஆப்ஸை அனுமதிக்கிறது."</string>
- <string name="permlab_getPackageSize" msgid="375391550792886641">"பயன்பாட்டுச் சேமிப்பு இடத்தை அளவிடல்"</string>
+ <string name="permlab_getPackageSize" msgid="375391550792886641">"ஆப்ஸ் சேமிப்பு இடத்தை அளவிடல்"</string>
<string name="permdesc_getPackageSize" msgid="742743530909966782">"ஆப்ஸ், அதன் குறியீடு, தரவு, மற்றும் தற்காலிகச் சேமிப்பு அளவுகளை மீட்டெடுக்க அனுமதிக்கிறது"</string>
<string name="permlab_writeSettings" msgid="8057285063719277394">"சாதன அமைப்புகளை மாற்றுதல்"</string>
<string name="permdesc_writeSettings" msgid="8293047411196067188">"முறைமையின் அமைப்பு தரவைத் திருத்த, ஆப்ஸை அனுமதிக்கிறது. தீங்குவிளைவிக்கும் ஆப்ஸ், முறைமையின் உள்ளமைவைச் சிதைக்கலாம்."</string>
@@ -414,11 +420,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"கூடுதல் இட வழங்குநரின் கட்டளைகளின் அணுகல்"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"கூடுதல் இட வழங்குநர் கட்டளைகளை அணுகப் ஆப்ஸை அனுமதிக்கிறது. இது, GPS அல்லது பிற இருப்பிட மூலங்களின் செயல்பாட்டை இடைமறிக்க ஆப்ஸை அனுமதிக்கலாம்."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"முன்புலத்தில் இயங்கும்போது மட்டும் துல்லியமான இருப்பிடத்தைக் கண்டறிதல்"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"இந்த ஆப்ஸ் முன்புலத்தில் இயங்கும்போது மட்டுமே நீங்கள் இருக்கும் இடத்தைத் துல்லியமாகக் கண்டறியும். உங்கள் சாதனத்தில், இருப்பிடச் சேவைகளை ஆப்ஸ் பயன்படுத்துவதற்கு வசதியாக, அவை ஆன் செய்யப்பட்டிருக்க வேண்டும். இதனால் பேட்டரி அதிகம் பயன்படுத்தப்படக்கூடும்."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"இந்த ஆப்ஸ் பயன்பாட்டில் இருக்கும்போது இருப்பிடச் சேவைகளிலிருந்து உங்களது துல்லியமான இருப்பிடத் தகவலை அது பெறும். இருப்பிடத் தகவலை ஆப்ஸ் பெறுவதற்கு உங்களது சாதனத்தில் இருப்பிடச் சேவைகள் இயக்கப்பட்டிருக்க வேண்டும். இது பேட்டரியை அதிகம் உபயோகிக்கக்கூடும்."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"முன்புலத்தில் இயங்கும்போது மட்டும் தோராயமான இருப்பிடத்தைக் கண்டறிதல்"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"முன்புலத்தில் இருக்கும்போது மட்டுமே இந்த ஆப்ஸால் தோராயமான இடத்தைக் கண்டறிய முடியும். இருப்பிட சேவைகள் ஆன் செய்யப்பட்டு சாதனத்தில் இருக்க வேண்டும், அப்போதுதான் அவற்றை ஆப்ஸால் பயன்படுத்த முடியும்."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"இந்த ஆப்ஸ் பயன்பாட்டில் உள்ளபோது இருப்பிடச் சேவைகளிலிருந்து உங்களது தோராயமான இருப்பிடத் தகவலை அது பெறும். இருப்பிடத் தகவலை ஆப்ஸ் பெறுவதற்கு உங்களது சாதனத்தில் இருப்பிடச் சேவைகள் இயக்கப்பட்டிருக்க வேண்டும்."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"பின்புலத்தில் இருப்பிடத்தை அணுகுதல்"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"முன்புல இருப்பிட அணுகலுடன் பின்புலத்தில் இயங்கும்போதும் இந்த ஆப்ஸால் இருப்பிடத்தை அணுக முடியும்."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"இந்த ஆப்ஸ் எந்த நேரத்திலும் (ஆப்ஸ் பயன்பாட்டில் இல்லாத நேரத்திலும் கூட) இருப்பிடத் தகவலை அணுகும்."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"எனது ஆடியோ அமைப்புகளை மாற்றுதல்"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ஒலியளவு மற்றும் வெளியீட்டிற்கு ஸ்பீக்கர்கள் பயன்படுத்தப்படுவது போன்ற ஒட்டுமொத்த ஆடியோ அமைப்புகளைக் கட்டுப்படுத்தப் ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ஆடியோவைப் பதிவுசெய்தல்"</string>
@@ -431,10 +437,13 @@
<string name="permdesc_camera" msgid="1354600178048761499">"இந்த ஆப்ஸ் எப்போது வேண்டுமானாலும் கேமராவைப் பயன்படுத்தி படங்களை எடுக்கலாம், வீடியோக்களை ரெக்கார்டு செய்யலாம்."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"படங்களையும் வீடியோக்களையும் எடுப்பதற்கு சிஸ்டம் கேமராக்களை அணுக ஆப்ஸையோ சேவையையோ அனுமதி"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"இந்த முன்னுரிமை பெற்ற சிஸ்டம் ஆப்ஸால் சிஸ்டம் கேமராவைப் பயன்படுத்தி எப்போது வேண்டுமானாலும் படங்களை எடுக்கவோ வீடியோக்களை ரெக்கார்டு செய்யவோ முடியும். android.permission.CAMERA அனுமதியும் ஆப்ஸிற்குத் தேவை"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"அதிர்வைக் கட்டுப்படுத்துதல்"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"அதிர்வைக் கட்டுப்படுத்தப் ஆப்ஸை அனுமதிக்கிறது."</string>
- <!-- no translation found for permdesc_vibrator_state (7050024956594170724) -->
- <skip />
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"அதிர்வு நிலையை அணுக ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"தொலைபேசி எண்களை நேரடியாக அழைத்தல்"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"உங்கள் தலையீட்டின்றி மொபைல் எண்களை அழைக்கப் ஆப்ஸை அனுமதிக்கிறது. இதன் விளைவாக எதிர்பாராத கட்டணங்களோ அழைப்புகளோ ஏற்படலாம். அவசரகால எண்களை அழைக்க இது ஆப்ஸை அனுமதிக்காது என்பதை நினைவில்கொள்ளவும். தீங்கிழைக்கும் ஆப்ஸ், உங்கள் உறுதிப்படுத்தல் இன்றி அழைப்புகளைச் செய்வதால் உங்களுக்குச் செலவு ஏற்படக்கூடும்."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS அழைப்புச் சேவையை அணுகுதல்"</string>
@@ -445,13 +454,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"அழைக்கும் அனுபவத்தை மேம்படுத்தும் பொருட்டு, சிஸ்டம் மூலம் தனது அழைப்புகளை ரூட் செய்ய ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"சிஸ்டம் மூலமாக அழைப்புகளைப் பார்த்தலும் கட்டுப்படுத்துதலும்."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"செயலில் உள்ள அழைப்புகளைச் சாதனத்தில் பார்க்கவும் கட்டுப்படுத்தவும் ஆப்ஸை அனுமதிக்கிறது. அழைப்பு எண்கள் மற்றும் அழைப்புகளின் நிலை போன்ற தகவல்களும் இதில் அடங்கும்."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"மற்றொரு பயன்பாட்டிலிருந்து அழைப்பைத் தொடருதல்"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"மற்றொரு பயன்பாட்டில் தொடங்கப்பட்ட அழைப்பைத் தொடருவதற்கு, ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ஃபோன் எண்களைப் படித்தல்"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"சாதனத்தின் ஃபோன் எண்களை அணுக, ஆப்ஸை அனுமதிக்கும்."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"கார் திரையை ஆன் செய்து வைத்திருத்தல்"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"டேப்லெட் உறக்க நிலைக்குச் செல்வதைத் தடுத்தல்"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"உங்கள் Android TV உறக்க நிலைக்குச் செல்வதைத் தடுத்தல்"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"தொலைபேசி உறக்கநிலைக்குச் செல்வதைத் தடுத்தல்"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"கார் திரையை ஆன் செய்து வைத்திருப்பதற்கு இந்த ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"உறக்கநிலைக்குச் செல்லாமல் டேப்லெட்டைத் தடுக்க ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Android TV உறக்க நிலைக்குச் செல்வதைத் தடுக்க ஆப்ஸை அனுமதிக்கும்."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"உறக்கநிலைக்குச் செல்லாமல் மொபைலைத் தடுக்க ஆப்ஸை அனுமதிக்கிறது."</string>
@@ -474,7 +489,7 @@
<string name="permlab_accessNetworkState" msgid="2349126720783633918">"நெட்வொர்க் இணைப்புகளைக் காட்டு"</string>
<string name="permdesc_accessNetworkState" msgid="4394564702881662849">"தற்போது இருக்கும் நெட்வொர்க்குகள் எவை மற்றும் இணைக்கப்பட்டுள்ளவை எவை போன்ற நெட்வொர்க் இணைப்புகள் குறித்த தகவலைப் பார்க்கப் ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_createNetworkSockets" msgid="3224420491603590541">"முழுமையான நெட்வொர்க் அணுகலைக் கொண்டிருக்கும்"</string>
- <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"நெட்வொர்க் சாக்கெட்டுகளை உருவாக்கவும் மற்றும் தனிப்பயன் நெட்வொர்க் நெறிமுறைகளைப் பயன்படுத்தவும் ஆப்ஸை அனுமதிக்கிறது. இணையத்தில் தரவை அனுப்ப உலாவியும், பிற பயன்பாடுகளும் இருப்பதால், இணையத்திற்குத் தரவை அனுப்ப இந்த அனுமதி தேவையில்லை."</string>
+ <string name="permdesc_createNetworkSockets" msgid="7722020828749535988">"நெட்வொர்க் சாக்கெட்டுகளை உருவாக்கவும் மற்றும் பிரத்தியேக நெட்வொர்க் நெறிமுறைகளைப் பயன்படுத்தவும் ஆப்ஸை அனுமதிக்கிறது. இணையத்தில் தரவை அனுப்ப உலாவியும், பிற பயன்பாடுகளும் இருப்பதால், இணையத்திற்குத் தரவை அனுப்ப இந்த அனுமதி தேவையில்லை."</string>
<string name="permlab_changeNetworkState" msgid="8945711637530425586">"பிணைய இணைப்புத்தன்மையை மாற்றுதல்"</string>
<string name="permdesc_changeNetworkState" msgid="649341947816898736">"நெட்வொர்க் இணைப்பின் நிலையை மாற்ற, ஆப்ஸை அனுமதிக்கிறது."</string>
<string name="permlab_changeTetherState" msgid="9079611809931863861">"இணைக்கப்பட்ட இணைப்புநிலையை மாற்றுதல்"</string>
@@ -549,8 +564,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"மீண்டும் முயற்சிக்கவும்."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"கைரேகைப் பதிவுகள் எதுவும் இல்லை."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"இந்தச் சாதனத்தில் கைரேகை சென்சார் இல்லை."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"சென்சார் தற்காலிகமாக முடக்கப்பட்டுள்ளது."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"கைரேகை <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -594,8 +608,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"முகத்தைச் சரிபார்க்க இயலவில்லை. மீண்டும் முயலவும்."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"’முகம் காட்டித் திறத்தலை’ நீங்கள் அமைக்கவில்லை."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"இந்த சாதனத்தில் ’முகம் காட்டித் திறத்தல்’ ஆதரிக்கப்படவில்லை."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"சென்சார் தற்காலிகமாக முடக்கப்பட்டுள்ளது."</string>
<string name="face_name_template" msgid="3877037340223318119">"முகம் <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -697,30 +710,30 @@
<item msgid="4537253139152229577">"வீட்டு தொலைநகல்"</item>
<item msgid="6751245029698664340">"பேஜர்"</item>
<item msgid="1692790665884224905">"மற்றவை"</item>
- <item msgid="6216981255272016212">"தனிப்பயன்"</item>
+ <item msgid="6216981255272016212">"பிரத்தியேகம்"</item>
</string-array>
<string-array name="emailAddressTypes">
<item msgid="7786349763648997741">"வீடு"</item>
<item msgid="435564470865989199">"அலுவலகம்"</item>
<item msgid="4199433197875490373">"மற்றவை"</item>
- <item msgid="3233938986670468328">"தனிப்பயன்"</item>
+ <item msgid="3233938986670468328">"பிரத்தியேகம்"</item>
</string-array>
<string-array name="postalAddressTypes">
<item msgid="3861463339764243038">"வீடு"</item>
<item msgid="5472578890164979109">"அலுவலகம்"</item>
<item msgid="5718921296646594739">"மற்றவை"</item>
- <item msgid="5523122236731783179">"தனிப்பயன்"</item>
+ <item msgid="5523122236731783179">"பிரத்தியேகம்"</item>
</string-array>
<string-array name="imAddressTypes">
<item msgid="588088543406993772">"வீடு"</item>
<item msgid="5503060422020476757">"அலுவலகம்"</item>
<item msgid="2530391194653760297">"மற்றவை"</item>
- <item msgid="7640927178025203330">"தனிப்பயன்"</item>
+ <item msgid="7640927178025203330">"பிரத்தியேகம்"</item>
</string-array>
<string-array name="organizationTypes">
<item msgid="6144047813304847762">"அலுவலகம்"</item>
<item msgid="7402720230065674193">"மற்றவை"</item>
- <item msgid="808230403067569648">"தனிப்பயன்"</item>
+ <item msgid="808230403067569648">"பிரத்தியேகம்"</item>
</string-array>
<string-array name="imProtocols">
<item msgid="7535761744432206400">"AIM"</item>
@@ -732,7 +745,7 @@
<item msgid="4717545739447438044">"ICQ"</item>
<item msgid="8293711853624033835">"Jabber"</item>
</string-array>
- <string name="phoneTypeCustom" msgid="5120365721260686814">"தனிப்பயன்"</string>
+ <string name="phoneTypeCustom" msgid="5120365721260686814">"பிரத்தியேகம்"</string>
<string name="phoneTypeHome" msgid="3880132427643623588">"வீடு"</string>
<string name="phoneTypeMobile" msgid="1178852541462086735">"மொபைல்"</string>
<string name="phoneTypeWork" msgid="6604967163358864607">"அலுவலகம்"</string>
@@ -753,24 +766,24 @@
<string name="phoneTypeWorkPager" msgid="3748332310638505234">"பணியிட பேஜர்"</string>
<string name="phoneTypeAssistant" msgid="757550783842231039">"உதவியாளர்"</string>
<string name="phoneTypeMms" msgid="1799747455131365989">"MMS"</string>
- <string name="eventTypeCustom" msgid="3257367158986466481">"தனிப்பயன்"</string>
+ <string name="eventTypeCustom" msgid="3257367158986466481">"பிரத்தியேகம்"</string>
<string name="eventTypeBirthday" msgid="7770026752793912283">"பிறந்தநாள்"</string>
<string name="eventTypeAnniversary" msgid="4684702412407916888">"ஆண்டுவிழா"</string>
<string name="eventTypeOther" msgid="530671238533887997">"மற்றவை"</string>
- <string name="emailTypeCustom" msgid="1809435350482181786">"தனிப்பயன்"</string>
+ <string name="emailTypeCustom" msgid="1809435350482181786">"பிரத்தியேகம்"</string>
<string name="emailTypeHome" msgid="1597116303154775999">"வீடு"</string>
<string name="emailTypeWork" msgid="2020095414401882111">"அலுவலகம்"</string>
<string name="emailTypeOther" msgid="5131130857030897465">"மற்றவை"</string>
<string name="emailTypeMobile" msgid="787155077375364230">"மொபைல்"</string>
- <string name="postalTypeCustom" msgid="5645590470242939129">"தனிப்பயன்"</string>
+ <string name="postalTypeCustom" msgid="5645590470242939129">"பிரத்தியேகம்"</string>
<string name="postalTypeHome" msgid="7562272480949727912">"வீடு"</string>
<string name="postalTypeWork" msgid="8553425424652012826">"அலுவலகம்"</string>
<string name="postalTypeOther" msgid="7094245413678857420">"மற்றவை"</string>
- <string name="imTypeCustom" msgid="5653384545085765570">"தனிப்பயன்"</string>
+ <string name="imTypeCustom" msgid="5653384545085765570">"பிரத்தியேகம்"</string>
<string name="imTypeHome" msgid="6996507981044278216">"வீடு"</string>
<string name="imTypeWork" msgid="2099668940169903123">"அலுவலகம்"</string>
<string name="imTypeOther" msgid="8068447383276219810">"மற்றவை"</string>
- <string name="imProtocolCustom" msgid="4437878287653764692">"தனிப்பயன்"</string>
+ <string name="imProtocolCustom" msgid="4437878287653764692">"பிரத்தியேகம்"</string>
<string name="imProtocolAim" msgid="4050198236506604378">"AIM"</string>
<string name="imProtocolMsn" msgid="2257148557766499232">"Windows Live"</string>
<string name="imProtocolYahoo" msgid="5373338758093392231">"Yahoo"</string>
@@ -782,8 +795,8 @@
<string name="imProtocolNetMeeting" msgid="4985002408136148256">"NetMeeting"</string>
<string name="orgTypeWork" msgid="8684458700669564172">"அலுவலகம்"</string>
<string name="orgTypeOther" msgid="5450675258408005553">"மற்றவை"</string>
- <string name="orgTypeCustom" msgid="1126322047677329218">"தனிப்பயன்"</string>
- <string name="relationTypeCustom" msgid="282938315217441351">"தனிப்பயன்"</string>
+ <string name="orgTypeCustom" msgid="1126322047677329218">"பிரத்தியேகம்"</string>
+ <string name="relationTypeCustom" msgid="282938315217441351">"பிரத்தியேகம்"</string>
<string name="relationTypeAssistant" msgid="4057605157116589315">"உதவியாளர்"</string>
<string name="relationTypeBrother" msgid="7141662427379247820">"சகோதரர்"</string>
<string name="relationTypeChild" msgid="9076258911292693601">"குழந்தை"</string>
@@ -798,7 +811,7 @@
<string name="relationTypeRelative" msgid="3396498519818009134">"உறவினர்"</string>
<string name="relationTypeSister" msgid="3721676005094140671">"சகோதரி"</string>
<string name="relationTypeSpouse" msgid="6916682664436031703">"துணைவர்"</string>
- <string name="sipAddressTypeCustom" msgid="6283889809842649336">"தனிப்பயன்"</string>
+ <string name="sipAddressTypeCustom" msgid="6283889809842649336">"பிரத்தியேகம்"</string>
<string name="sipAddressTypeHome" msgid="5918441930656878367">"வீடு"</string>
<string name="sipAddressTypeWork" msgid="7873967986701216770">"அலுவலகம்"</string>
<string name="sipAddressTypeOther" msgid="6317012577345187275">"மற்றவை"</string>
@@ -833,8 +846,8 @@
<string name="lockscreen_missing_sim_instructions_long" msgid="3664999892038416334">"சிம் கார்டு இல்லை அல்லது படிக்கக்கூடியதாக இல்லை. சிம் கார்டைச் செருகவும்."</string>
<string name="lockscreen_permanent_disabled_sim_message_short" msgid="3812893366715730539">"பயன்படுத்த முடியாத சிம் கார்டு."</string>
<string name="lockscreen_permanent_disabled_sim_instructions" msgid="4358929052509450807">"உங்கள் சிம் கார்டு நிரந்தரமாக முடக்கப்பட்டது.\n மற்றொரு சிம் கார்டிற்காக உங்கள் வயர்லெஸ் சேவை வழங்குநரைத் தொடர்புகொள்ளவும்."</string>
- <string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"முந்தைய ட்ராக்"</string>
- <string name="lockscreen_transport_next_description" msgid="2931509904881099919">"அடுத்த ட்ராக்"</string>
+ <string name="lockscreen_transport_prev_description" msgid="2879469521751181478">"முந்தைய டிராக்"</string>
+ <string name="lockscreen_transport_next_description" msgid="2931509904881099919">"அடுத்த டிராக்"</string>
<string name="lockscreen_transport_pause_description" msgid="6705284702135372494">"இடைநிறுத்து"</string>
<string name="lockscreen_transport_play_description" msgid="106868788691652733">"இயக்கு"</string>
<string name="lockscreen_transport_stop_description" msgid="1449552232598355348">"நிறுத்து"</string>
@@ -1256,7 +1269,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"மொபைல் நெட்வொர்க்கிற்கு இணைய அணுகல் இல்லை"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"நெட்வொர்க்கிற்கு இணைய அணுகல் இல்லை"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"தனிப்பட்ட DNS சேவையகத்தை அணுக இயலாது"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"இணைக்கப்பட்டது"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> வரம்பிற்கு உட்பட்ட இணைப்புநிலையைக் கொண்டுள்ளது"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"எப்படியேனும் இணைப்பதற்குத் தட்டவும்"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>க்கு மாற்றப்பட்டது"</string>
@@ -1321,6 +1333,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB பிழைதிருத்தம் இணைக்கப்பட்டது"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB பிழைதிருத்தத்தை ஆஃப் செய்ய தட்டவும்"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB பிழைதிருத்தத்தை முடக்க, தேர்ந்தெடுக்கவும்."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"வயர்லெஸ் பிழைதிருத்தம் இணைக்கப்பட்டது"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"வயர்லெஸ் பிழைதிருத்தத்தை ஆஃப் செய்ய தட்டவும்"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"வயர்லெஸ் பிழைதிருத்தத்தை முடக்க தேர்ந்தெடுக்கவும்."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"\'தன்னியக்க சோதனைப்\' பயன்முறை இயக்கப்பட்டது"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"’தன்னியக்க சோதனைப்\' பயன்முறையை முடக்க ஆரம்பநிலைக்கு மீட்டமைக்கவும்."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"சீரியல் கன்சோல் இயக்கப்பட்டது"</string>
@@ -1624,10 +1639,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> இல் இருந்து பின்னணியில் தொடங்கப்பட்ட முன்புலச் சேவைக்கு, வரவுள்ள R பதிப்புகளில் உபயோகத்தின்போது மட்டுமான அனுமதி இருக்காது. go/r-bg-fgs-restriction என்பதைப் பார்த்து பிழை அறிக்கை ஒன்றைச் சமர்ப்பிக்கவும்."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"பரிந்துரைத்த அளவை விட ஒலியை அதிகரிக்கவா?\n\nநீண்ட நேரத்திற்கு அதிகளவில் ஒலி கேட்பது கேட்கும் திறனைப் பாதிக்கலாம்."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"அணுகல்தன்மை ஷார்ட்கட்டைப் பயன்படுத்தவா?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"ஷார்ட்கட் இயக்கத்தில் இருக்கும்போது ஒலியளவு பட்டன்கள் இரண்டையும் 3 வினாடிகளுக்கு அழுத்தினால் அணுகல்தன்மை அம்சம் இயக்கப்படும்."</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"உங்களுக்கு உதவக்கூடிய ஆப்ஸுக்குக் தேவையான அணுகல்தன்மையை அளித்து முழுக் கட்டுப்பாட்டையும் அளிக்கலாம், ஆனால் பெரும்பாலான ஆப்ஸுக்கு இது பொருந்தாது."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"திரையைப் பார்த்தலும் நிர்வகித்தலும்"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"இந்த அம்சத்தால் திரையில் உள்ள அனைத்தையும் படிக்க முடிவதோடு பிற ஆப்ஸின் மேல் உள்ளடக்கத்தைக் காட்டும்."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"செயல்பாடுகளைப் பார்த்தலும் செயல்படுத்தலும்"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"ஏதேனும் ஆப்ஸ் அல்லது வன்பொருள் சென்சாரின் உதவியுடன் உரையாடல்களைக் கண்காணித்து உங்கள் சார்பாக ஆப்ஸுடன் உரையாட இச்சேவையால் இயலும்."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"அனுமதி"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"நிராகரி"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"ஷார்ட்கட்களை மாற்று"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ரத்துசெய்"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ஷார்ட்கட்டை முடக்கு"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ஷார்ட்கட்டைப் பயன்படுத்து"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"வண்ணத்தை நேர் எதிராக மாற்றுதல்"</string>
@@ -1848,6 +1882,8 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"வகைப்படுத்தப்படாதவை"</string>
<string name="importance_from_user" msgid="2782756722448800447">"இந்த அறிவிப்புகளின் முக்கியத்துவத்தை அமைத்துள்ளீர்கள்."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ஈடுபட்டுள்ளவர்களின் காரணமாக, இது முக்கியமானது."</string>
+ <!-- no translation found for notification_history_title_placeholder (7748630986182249599) -->
+ <skip />
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g> மூலம் புதிய பயனரை உருவாக்க <xliff:g id="APP">%1$s</xliff:g> ஆப்ஸை அனுமதிக்கவா (இந்தக் கணக்கில் ஏற்கெனவே ஒரு பயனர் உள்ளார்) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> மூலம் புதிய பயனரை உருவாக்க <xliff:g id="APP">%1$s</xliff:g> ஆப்ஸை அனுமதிக்கவா?"</string>
<string name="language_selection_title" msgid="52674936078683285">"மொழியைச் சேர்"</string>
@@ -1951,7 +1987,7 @@
<string name="slice_more_content" msgid="3377367737876888459">"+ <xliff:g id="NUMBER">%1$d</xliff:g>"</string>
<string name="shortcut_restored_on_lower_version" msgid="9206301954024286063">"ஆப்ஸ் முந்தையப் பதிப்பிற்கு மாற்றப்பட்டது, அல்லது இந்த ஷார்ட்கட் வேலை செய்யவில்லை"</string>
<string name="shortcut_restore_not_supported" msgid="4763198938588468400">"காப்புப் பிரதி மற்றும் மீட்டமைவைப் ஆப்ஸ் ஆதரிக்காத காரணத்தால், ஷார்ட்கட்டை மீட்டமைக்க முடியவில்லை"</string>
- <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"பயன்பாட்டுச் சான்றுகள் பொருந்தாத காரணத்தினால், ஷார்ட்கட்டை மீட்டமைக்க முடியவில்லை"</string>
+ <string name="shortcut_restore_signature_mismatch" msgid="579345304221605479">"ஆப்ஸ் சான்றுகள் பொருந்தாத காரணத்தினால், ஷார்ட்கட்டை மீட்டமைக்க முடியவில்லை"</string>
<string name="shortcut_restore_unknown_issue" msgid="2478146134395982154">"ஷார்ட்கட்டை மீட்டமைக்க முடியவில்லை"</string>
<string name="shortcut_disabled_reason_unknown" msgid="753074793553599166">"ஷார்ட்கட் முடக்கப்பட்டுள்ளது"</string>
<string name="harmful_app_warning_uninstall" msgid="6472912975664191772">"நிறுவல் நீக்கு"</string>
@@ -2019,22 +2055,37 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"அணுகல்தன்மை மெனு"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸின் தலைப்புப் பட்டி."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> என்பதை வரம்பிடப்பட்ட பக்கெட்திற்குள் சேர்க்கப்பட்டது"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"தனிப்பட்ட சுயவிவரம்"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"பணிச் சுயவிவரம்"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
+ <!-- no translation found for resolver_personal_tab_accessibility (5739524949153091224) -->
<skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
+ <!-- no translation found for resolver_work_tab_accessibility (4753168230363802734) -->
<skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"பணி ஆப்ஸுக்குப் பகிர முடியாது"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"தனிப்பட்ட ஆப்ஸுக்குப் பகிர முடியாது"</string>
+ <!-- no translation found for resolver_cant_share_cross_profile_explanation (5556640604460901386) -->
<skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
+ <!-- no translation found for resolver_cant_access_work_apps (375634344111233790) -->
<skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
+ <!-- no translation found for resolver_cant_access_work_apps_explanation (3958762224516867388) -->
<skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
+ <!-- no translation found for resolver_cant_access_personal_apps (1953215925406474177) -->
<skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
+ <!-- no translation found for resolver_cant_access_personal_apps_explanation (1725572276741281136) -->
<skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
+ <!-- no translation found for resolver_turn_on_work_apps_share (619263911204978175) -->
<skip />
+ <!-- no translation found for resolver_turn_on_work_apps_view (3073389230905543680) -->
+ <skip />
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ஆப்ஸ் இல்லை"</string>
+ <!-- no translation found for resolver_switch_on_work (2873009160846966379) -->
+ <skip />
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"அழைப்புகளின்போது ரெக்கார்டு செய்தல் அல்லது ஆடியோவைப் பிளே செய்தல்"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"இயல்பான டயலர் ஆப்ஸாக இதை அமைக்கும்போது, அழைப்புகளை ரெக்கார்டு செய்ய அல்லது ஆடியோவைப் பிளே செய்ய இதை அனுமதிக்கும்."</string>
</resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 7d01f58..44e9b5d 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -192,7 +192,12 @@
<string name="network_logging_notification_title" msgid="554983187553845004">"పరికరం నిర్వహించబడింది"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"మీ సంస్థ ఈ పరికరాన్ని నిర్వహిస్తుంది మరియు నెట్వర్క్ ట్రాఫిక్ని పర్యవేక్షించవచ్చు. వివరాల కోసం నొక్కండి."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"మీ అడ్మిన్ లొకేషన్ సెట్టింగ్లను మార్చారు"</string>
- <string name="location_changed_notification_text" msgid="198907268219396399">"మీ లొకేషన్ సెట్టింగ్లను చుడటానికి ట్యాప్ చేయండి."</string>
+ <string name="location_changed_notification_text" msgid="198907268219396399">"మీ లొకేషన్ సెట్టింగ్లను చూడటానికి ట్యాప్ చేయండి."</string>
+ <string name="country_detector" msgid="7023275114706088854">"దేశం డిటెక్టర్"</string>
+ <string name="location_service" msgid="2439187616018455546">"లొకేషన్ సర్వీస్"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS సర్వీస్"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"సెన్సార్ నోటిఫికేషన్ సర్వీస్"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"ట్విలైట్ సర్వీస్"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"మీ పరికరంలోని డేటా తొలగించబడుతుంది"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"నిర్వాహక యాప్ ఉపయోగించడం సాధ్యపడదు. మీ పరికరంలోని డేటా ఇప్పుడు తొలగించబడుతుంది.\n\nమీకు ప్రశ్నలు ఉంటే, మీ సంస్థ యొక్క నిర్వాహకులను సంప్రదించండి."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"ముద్రణ <xliff:g id="OWNER_APP">%s</xliff:g> ద్వారా నిలిపివేయబడింది."</string>
@@ -245,6 +250,8 @@
<item quantity="other">బగ్ నివేదిక కోసం <xliff:g id="NUMBER_1">%d</xliff:g> సెకన్లలో స్క్రీన్షాట్ తీయబోతోంది.</item>
<item quantity="one">బగ్ నివేదిక కోసం <xliff:g id="NUMBER_0">%d</xliff:g> సెకనులో స్క్రీన్షాట్ తీయబోతోంది.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"బగ్ నివేదికతో ఉన్న స్క్రీన్షాట్ తీయబడింది"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"బగ్ నివేదికతో ఉన్న స్క్రీన్షాట్ను తీయడం విఫలమైంది"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"నిశ్శబ్ద మోడ్"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ధ్వని ఆఫ్లో ఉంది"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"ధ్వని ఆన్లో ఉంది"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"అదనపు స్థాన ప్రదాత ఆదేశాలను యాక్సెస్ చేయడం"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"అదనపు స్థాన ప్రదాత ఆదేశాలను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది. ఇది GPS లేదా ఇతర స్థాన మూలాల నిర్వహణలో యాప్ ప్రమేయం ఉండేలా అనుమతించవచ్చు."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"స్క్రీన్పై ఉన్నప్పుడు మాత్రమే ఖచ్చితమైన స్థానాన్ని యాక్సెస్ చేయండి"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"ఈ యాప్ స్క్రీన్పై ఉన్నప్పుడు మాత్రమే మీ ఖచ్చితమైన లొకేషన్ను తెలుసుకోగలదు. మీ పరికరంలో లొకేషన్ సర్వీస్లు అందుబాటులో ఉండి, అవి తప్పనిసరిగా ఆన్ చేసి ఉంటేనే, యాప్ వాటిని ఉపయోగించగలదు. దీని వలన బ్యాటరీ వినియోగం పెరగవచ్చు."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"యాప్ ఉపయోగంలో ఉన్నప్పుడు మాత్రమే ఈ యాప్ మీ ఖచ్చితమైన లొకేషన్ను లొకేషన్ సర్వీస్ల ద్వారా తెలుసుకోగలదు. లొకేషన్ను యాప్ పొందాలంటే, దాని కోసం మీ పరికరం యొక్క లొకేషన్ సర్వీస్లను తప్పనిసరిగా ఆన్ చేయాలి. ఇది బ్యాటరీ వినియోగాన్ని పెంచవచ్చు."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"స్క్రీన్పై ఉన్నప్పుడు మాత్రమే సుమారు లొకేషన్ను యాక్సెస్ చేయండి"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"ఈ యాప్ స్క్రీన్పై ఉన్నప్పుడు మాత్రమే మీ సుమారు లొకేషన్ను తెలుసుకోగలదు. మీ పరికరంలో లొకేషన్ సర్వీస్లు అందుబాటులో ఉండి, అవి తప్పనిసరిగా ఆన్ చేసి ఉంటేనే, యాప్ వాటిని ఉపయోగించగలదు."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"యాప్ ఉపయోగంలో ఉన్నప్పుడు మాత్రమే ఈ యాప్ మీ ఇంచుమించు లొకేషన్ను లొకేషన్ సర్వీస్ల నుండి తెలుసుకోగలదు. లొకేషన్ను యాప్ పొందాలంటే, దాని కోసం మీ పరికరం యొక్క లొకేషన్ సర్వీస్లను తప్పనిసరిగా ఆన్ చేయాలి."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"నేపథ్యంలో స్థానాన్ని యాక్సెస్ చేయి"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"స్క్రీన్పై ఉన్నప్పుడు లొకేషన్ను యాక్సెస్ చేయడంతో పాటు ఈ యాప్ బ్యాక్గ్రౌండ్లో నడుస్తున్నప్పుడు కూడా లొకేషన్ను యాక్సెస్ చేయగలదు."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"యాప్ ఉపయోగంలో లేనప్పటికీ కూడా, ఈ యాప్, లొకేషన్ను ఎప్పుడైనా యాక్సెస్ చేయగలదు."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"మీ ఆడియో సెట్టింగ్లను మార్చడం"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"వాల్యూమ్ మరియు అవుట్పుట్ కోసం ఉపయోగించాల్సిన స్పీకర్ వంటి సార్వజనీన ఆడియో సెట్టింగ్లను సవరించడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ఆడియోను రికార్డ్ చేయడం"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"ఈ యాప్ కెమెరాను ఉపయోగించి ఎప్పుడైనా చిత్రాలను తీయగలదు మరియు వీడియోలను రికార్డ్ చేయగలదు."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ఫోటోలు, వీడియోలు తీయడానికి సిస్టమ్ కెమెరాలకు యాప్, లేదా సేవా యాక్సెస్ను అనుమతించండి"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"ఈ విశేష | సిస్టమ్ యాప్ ఎప్పుడైనా సిస్టమ్ కెమెరాను ఉపయోగించి ఫోటోలు తీయగలదు, వీడియోలను రికార్డ్ చేయగలదు. యాప్కు android.permission.CAMERA అనుమతి ఇవ్వడం కూడా అవసరం"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"కెమెరా పరికరాలు తెరుచుకుంటున్నప్పుడు లేదా మూసుకుంటున్నప్పుడు కాల్బ్యాక్లను స్వీకరించడానికి యాప్ను లేదా సర్వీస్ను అనుమతించండి."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"ఏదైనా కెమెరా పరికరం తెరుచుకుంటున్నప్పుడు (ఏదైనా యాప్ ప్యాకేజీ ద్వారా) లేదా మూసుకుంటున్నప్పుడు ఈ సిగ్నేచర్ యాప్ కాల్బ్యాక్లను అందుకోగలదు."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"వైబ్రేషన్ను నియంత్రించడం"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"వైబ్రేటర్ను నియంత్రించడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"వైబ్రేటర్ స్థితిని యాక్సెస్ చేసేందుకు యాప్ను అనుమతిస్తుంది."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"కాలింగ్ అనుభవాన్ని మెరుగుపరచడం కోసం తన కాల్లను సిస్టమ్ ద్వారా వెళ్లేలా చేయడానికి అనువర్తనాన్ని అనుమతిస్తుంది."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"సిస్టమ్ ద్వారా కాల్లను చూసి, నియంత్రించండి."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"పరికరంలో కొనసాగుతున్న కాల్లను చూడడానికి మరియు నియంత్రించడానికి యాప్ను అనుమతిస్తుంది. ఇందులో కాల్ కోసం కాల్ల నంబర్లు మరియు రాష్ట్ర కాల్ వంటి సమాచారం ఉంటుంది."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"మరో యాప్ నుండి కాల్ని కొనసాగించండి"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"మరో యాప్లో ప్రారంభించిన కాల్ని కొనసాగించడానికి యాప్ని అనుమతిస్తుంది."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"ఫోన్ నంబర్లను చదువు"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"పరికరం యొక్క ఫోన్ నంబర్లను యాక్సెస్ చేయడానికి యాప్ను అనుమతిస్తుంది."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"కార్ స్క్రీన్ను ఆన్ చేసి ఉంచండి"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"టాబ్లెట్ను నిద్రావస్థకు వెళ్లనీయకుండా నిరోధించడం"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"స్లీప్ మోడ్కి వెళ్లకుండా మీ Android TV పరికరాన్ని నివారించండి"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ఫోన్ను స్లీప్ మోడ్లోకి వెళ్లనీయకుండా నిరోధించగలగడం"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"కార్ స్క్రీన్ ఆన్ చేసి ఉంచడానికి ఈ యాప్ను అనుమతిస్తుంది."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"నిద్రావస్థకి వెళ్లకుండా టాబ్లెట్ను నిరోధించడానికి యాప్ను అనుమతిస్తుంది."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"మీ Android TV పరికరం స్లీప్ మోడ్లోకి వెళ్లకుండా నివారించడానికి యాప్ని అనుమతిస్తుంది."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"నిద్రావస్థకి వెళ్లకుండా ఫోన్ను నిరోధించడానికి యాప్ను అనుమతిస్తుంది."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"మళ్లీ ప్రయత్నించండి."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"వేలిముద్రలు నమోదు చేయబడలేదు."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"ఈ పరికరంలో వేలిముద్ర సెన్సార్ ఎంపిక లేదు."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"సెన్సార్ తాత్కాలికంగా డిజేబుల్ చేయబడింది."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"వేలు <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ముఖం ధృవీకరించలేకపోయింది. మళ్లీ ప్రయత్నించండి."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"మీరు ముఖంతో అన్లాక్ను సెటప్ చేయలేదు."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"ఈ పరికరంలో ముఖంతో అన్లాక్ను ఉపయోగించడానికి మద్దతు లేదు."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"సెన్సార్ తాత్కాలికంగా డిజేబుల్ చేయబడింది."</string>
<string name="face_name_template" msgid="3877037340223318119">"ముఖ <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"మొబైల్ నెట్వర్క్కు ఇంటర్నెట్ యాక్సెస్ లేదు"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"నెట్వర్క్కు ఇంటర్నెట్ యాక్సెస్ లేదు"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"ప్రైవేట్ DNS సర్వర్ను యాక్సెస్ చేయడం సాధ్యపడదు"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"కనెక్ట్ చేయబడింది"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> పరిమిత కనెక్టివిటీని కలిగి ఉంది"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"ఏదేమైనా కనెక్ట్ చేయడానికి నొక్కండి"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>కి మార్చబడింది"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB డీబగ్గింగ్ను ఆఫ్ చేయడానికి నొక్కండి"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"డీబగ్గింగ్ని నిలిపివేయడానికి ఎంచుకోండి."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"వైర్లెస్ డీబగ్గింగ్ కనెక్ట్ చేయబడింది"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"వైర్లెస్ డీబగ్గింగ్ని ఆఫ్ చేయడానికి ట్యాప్ చేయండి"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"వైర్లెస్ డీబగ్గింగ్ని డిజేబుల్ చేయడానికి ఎంచుకోండి."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"పరీక్ష నియంత్రణ మోడ్ ప్రారంభించబడింది"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"పరీక్ష నియంత్రణ మోడ్ను నిలిపివేయడానికి ఫ్యాక్టరీ రీసెట్ను అమలు చేయండి."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"సీరియల్ కన్సోల్ ప్రారంభించబడింది"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> నుండి, బ్యాక్గ్రౌండ్లో ప్రారంభమైన ఫోర్ గ్రౌండ్ సేవకు భవిష్యత్తు R బిల్డ్స్లో \'ఉపయోగంలో వున్నప్పుడు\' అనుమతి ఉండదు. దయచేసి go/r-bg-fgs-restrictionను చూసి బగ్ నివేదికను ఫైల్ చేయండి."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"వాల్యూమ్ను సిఫార్సు చేయబడిన స్థాయి కంటే ఎక్కువగా పెంచాలా?\n\nసుదీర్ఘ వ్యవధుల పాటు అధిక వాల్యూమ్లో వినడం వలన మీ వినికిడి శక్తి దెబ్బ తినవచ్చు."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"యాక్సెస్ సామర్థ్యం షార్ట్కట్ను ఉపయోగించాలా?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"షార్ట్కట్ ఆన్ చేసి ఉన్నప్పుడు, రెండు వాల్యూమ్ బటన్లను 3 సెకన్ల పాటు నొక్కి ఉంచితే యాక్సెస్ సౌలభ్య ఫీచర్ ప్రారంభం అవుతుంది."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g>కి మీ పరికరంపై పూర్తి నియంత్రణను ఇవ్వాలనుకుంటున్నారా?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"మీరు <xliff:g id="SERVICE">%1$s</xliff:g>ని ఆన్ చేస్తే, డేటా ఎన్క్రిప్షన్ను మెరుగుపరచడానికి మీ పరికరం మీ స్క్రీన్ లాక్ను ఉపయోగించదు."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"అవసరమైన యాక్సెస్ సామర్ధ్యం కోసం యాప్లకు పూర్తి నియంత్రణ ఇవ్వడం తగిన పనే అయినా, అన్ని యాప్లకు అలా ఇవ్వడం సరికాదు."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"స్క్రీన్ను చూసి, నియంత్రించండి"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"స్క్రీన్పై ఉండే కంటెంట్ మొత్తాన్ని చదవగలుగుతుంది మరియు ఇతర యాప్లలో కూడా ఈ కంటెంట్ను ప్రదర్శిస్తుంది."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"చర్యలను చూసి, అమలు చేయండి"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"మీరు యాప్తో చేసే పరస్పర చర్యలను లేదా హార్డ్వేర్ సెన్సార్ను ట్రాక్ చేస్తూ మీ తరఫున యాప్లతో పరస్పరం సమన్వయం చేస్తుంది."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"అనుమతించు"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"నిరాకరించు"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"ఫీచర్ని ఉపయోగించడం ప్రారంభించడానికి, దాన్ని ట్యాప్ చేయండి:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"యాక్సెసిబిలిటీ బటన్తో ఉపయోగించడానికి యాప్లను ఎంచుకోండి"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"వాల్యూమ్ కీ షార్ట్కట్తో ఉపయోగించడానికి యాప్లను ఎంచుకోండి"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> ఆఫ్ చేయబడింది"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"షార్ట్కట్లను ఎడిట్ చేయి"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"రద్దు చేయి"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"పూర్తయింది"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"సత్వరమార్గాన్ని ఆఫ్ చేయి"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"సత్వరమార్గాన్ని ఉపయోగించు"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"రంగుల మార్పిడి"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"వర్గీకరించబడలేదు"</string>
<string name="importance_from_user" msgid="2782756722448800447">"మీరు ఈ నోటిఫికేషన్ల ప్రాముఖ్యతను సెట్ చేసారు."</string>
<string name="importance_from_person" msgid="4235804979664465383">"ఇందులో పేర్కొనబడిన వ్యక్తులను బట్టి ఇది చాలా ముఖ్యమైనది."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"అనుకూల యాప్ నోటిఫికేషన్"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="ACCOUNT">%2$s</xliff:g>తో కొత్త వినియోగదారుని సృష్టించడానికి <xliff:g id="APP">%1$s</xliff:g>ను అనుమతించాలా (ఈ ఖాతాతో ఇప్పటికే ఒక వినియోగదారు ఉన్నారు) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g>తో కొత్త వినియోగదారుని సృష్టించడానికి <xliff:g id="APP">%1$s</xliff:g>ను అనుమతించాలా?"</string>
<string name="language_selection_title" msgid="52674936078683285">"భాషను జోడించండి"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"యాక్సెసిబిలిటీ మెను"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> క్యాప్షన్ బార్."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> పరిమితం చేయబడిన బకెట్లో ఉంచబడింది"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"వ్యక్తిగతం"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"కార్యాలయం"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"వ్యక్తిగత వీక్షణ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"పని వీక్షణ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"వర్క్ యాప్లతో షేర్ చేయడం సాధ్యపడదు"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"వ్యక్తిగత యాప్లతో షేర్ చేయడం సాధ్యపడదు"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"వ్యక్తిగత మరియు కార్యాలయ ప్రొఫైల్ల మధ్య షేర్ చేయడాన్ని మీ IT అడ్మిన్ బ్లాక్ చేశారు"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"కార్యాలయ యాప్లను యాక్సెస్ చేయడం సాధ్యపడలేదు"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"కార్యాలయ యాప్లలో వ్యక్తిగత కంటెంట్ను చూడటాన్ని మీ IT అడ్మిన్ అనుమతించరు"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"వ్యక్తిగత యాప్లను యాక్సెస్ చేయలేకపోతున్నాను"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"వ్యక్తిగత యాప్లలో పని కంటెంట్ను చూడటాన్ని మీ IT అడ్మిన్ అనుమతించరు"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"కంటెంట్ను షేర్ చేయడానికి కార్యాలయ ప్రొఫైల్ను ఆన్ చేయండి"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"కంటెంట్ను చూడటానికి కార్యాలయ ప్రొఫైల్ను ఆన్ చేయండి"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"యాప్లు ఏవీ అందుబాటులో లేవు"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"ఆన్ చేయి"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"టెలిఫోనీ కాల్స్లో రికార్డ్ చేయండి లేదా ఆడియో ప్లే చేయండి"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"డిఫాల్ట్ డయలర్ యాప్గా కేటాయించినప్పుడు, టెలిఫోనీ కాల్స్లో రికార్డ్ చేయడానికి లేదా ఆడియో ప్లే చేయడానికి ఈ యాప్ను అనుమతిస్తుంది."</string>
</resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index 7f966db..995e2b4 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -191,8 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"ผู้ดูแลระบบปล่อยอุปกรณ์ให้คุณใช้งานส่วนตัว"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"อุปกรณ์มีการจัดการ"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"องค์กรของคุณจัดการอุปกรณ์นี้และอาจตรวจสอบการจราจรของข้อมูลในเครือข่าย แตะเพื่อดูรายละเอียด"</string>
- <string name="location_changed_notification_title" msgid="4119726617105166830">"ผู้ดูแลระบบได้เปลี่ยนการตั้งค่าตำแหน่ง"</string>
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"ผู้ดูแลระบบเปลี่ยนการตั้งค่าตำแหน่ง"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"แตะเพื่อดูการตั้งค่าตำแหน่ง"</string>
+ <string name="country_detector" msgid="7023275114706088854">"เครื่องมือหาตำแหน่งประเทศ"</string>
+ <string name="location_service" msgid="2439187616018455546">"บริการตำแหน่ง"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"บริการ GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"บริการแจ้งเตือนเกี่ยวกับเซ็นเซอร์"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight Service"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"ระบบจะลบข้อมูลในอุปกรณ์ของคุณ"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"ใช้แอปผู้ดูแลระบบนี้ไม่ได้ ขณะนี้ระบบจะลบข้อมูลในอุปกรณ์ของคุณ\n\nโปรดติดต่อผู้ดูแลระบบขององค์กรหากมีคำถาม"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ปิดใช้การพิมพ์แล้ว"</string>
@@ -245,6 +250,8 @@
<item quantity="other">จะจับภาพหน้าจอสำหรับรายงานข้อบกพร่องใน <xliff:g id="NUMBER_1">%d</xliff:g> วินาที</item>
<item quantity="one">จะจับภาพหน้าจอสำหรับรายงานข้อบกพร่องใน <xliff:g id="NUMBER_0">%d</xliff:g> วินาที</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"ถ่ายภาพหน้าจอด้วยรายงานข้อบกพร่องแล้ว"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"ถ่ายภาพหน้าจอด้วยรายงานข้อบกพร่องไม่สำเร็จ"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"โหมดปิดเสียง"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"ปิดเสียงไว้"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"เปิดเสียงแล้ว"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"เข้าถึงคำสั่งของโปรแกรมแจ้งตำแหน่งพิเศษ"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"อนุญาตให้แอปเข้าถึงคำสั่งของผู้ให้บริการตำแหน่งเพิ่มเติม ซึ่งอาจทำให้แอปสามารถแทรกแซงการทำงานของ GPS หรือต้นทางของตำแหน่งอื่นๆ ได้"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"เข้าถึงตำแหน่งที่แม่นยำเมื่ออยู่เบื้องหน้าเท่านั้น"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"แอปนี้เข้าถึงตำแหน่งที่แม่นยำของคุณได้เมื่อทำงานอยู่เบื้องหน้าเท่านั้น แอปจะใช้บริการตำแหน่งได้ต่อเมื่อคุณเปิดบริการและบริการพร้อมใช้งานในอุปกรณ์ของคุณ ซึ่งอาจทำให้มีการใช้แบตเตอรี่มากขึ้น"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"แอปนี้เข้าถึงตำแหน่งที่แม่นยำของคุณได้จากบริการตำแหน่งขณะที่มีการใช้งาน โดยแอปจะเข้าถึงตำแหน่งได้ก็ต่อเมื่อคุณเปิดบริการตำแหน่งของอุปกรณ์ไว้ อาจมีการใช้งานแบตเตอรี่เพิ่มมากขึ้น"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"เข้าถึงตำแหน่งโดยประมาณเมื่ออยู่เบื้องหน้าเท่านั้น"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"แอปนี้เข้าถึงตำแหน่งโดยประมาณของคุณได้เมื่อทำงานอยู่เบื้องหน้าเท่านั้น แอปจะใช้บริการตำแหน่งได้ต่อเมื่อคุณเปิดบริการและบริการพร้อมใช้งานในอุปกรณ์ของคุณ"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"แอปนี้เข้าถึงตำแหน่งโดยประมาณของคุณได้จากบริการตำแหน่งขณะที่มีการใช้งาน โดยแอปจะเข้าถึงตำแหน่งได้ก็ต่อเมื่อคุณเปิดบริการตำแหน่งของอุปกรณ์ไว้"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"เข้าถึงตำแหน่งในเบื้องหลัง"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"แอปนี้เข้าถึงตำแหน่งในขณะที่ทำงานอยู่เบื้องหลังได้ด้วย นอกเหนือจากการเข้าถึงตำแหน่งเมื่อทำงานอยู่เบื้องหน้า"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"แอปนี้เข้าถึงตำแหน่งได้ทุกเมื่อแม้จะไม่ได้ใช้แอปอยู่"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"เปลี่ยนการตั้งค่าเสียงของคุณ"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"อนุญาตให้แอปพลิเคชันปรับเปลี่ยนการตั้งค่าเสียงทั้งหมดได้ เช่น ระดับเสียงและลำโพงที่จะใช้งาน"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"บันทึกเสียง"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"แอปนี้สามารถถ่ายภาพและวิดีโอด้วยกล้องได้ทุกเมื่อ"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"อนุญาตให้แอปพลิเคชันหรือบริการเข้าถึงกล้องของระบบเพื่อถ่ายภาพและวิดีโอ"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"แอปของระบบ | ที่ได้รับสิทธิ์นี้จะถ่ายภาพและบันทึกวิดีโอโดยใช้กล้องของระบบได้ทุกเมื่อ แอปต้องมีสิทธิ์ android.permission.CAMERA ด้วย"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"อนุญาตให้แอปพลิเคชันหรือบริการได้รับโค้ดเรียกกลับเมื่อมีการเปิดหรือปิดอุปกรณ์กล้อง"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"แอปลายเซ็นนี้จะได้รับโค้ดเรียกกลับเมื่อมีการปิดหรือเปิดอุปกรณ์กล้อง (แพ็กเกจแอปพลิเคชันที่เปิด)"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"ควบคุมการสั่นเตือน"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"อนุญาตให้แอปพลิเคชันควบคุมการสั่นเตือน"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"อนุญาตให้แอปเข้าถึงสถานะการสั่น"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"อนุญาตให้แอปกำหนดเส้นทางการโทรของแอปผ่านระบบเพื่อปรับปรุงประสบการณ์ในการโทร"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"ดูและจัดการการติดต่อผ่านระบบ"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"อนุญาตให้แอปดูและจัดการการติดต่อในอุปกรณ์ ซึ่งรวมถึงข้อมูลอย่างเช่น หมายเลขที่ใช้ในการติดต่อและสถานะการติดต่อ"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ต่อสายจากแอปอื่น"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"อนุญาตให้แอปต่อสายที่เริ่มจากแอปอื่น"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"อ่านหมายเลขโทรศัพท์"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"อนุญาตให้แอปเข้าถึงหมายเลขโทรศัพท์ของอุปกรณ์นี้"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"เปิดหน้าจอในรถไว้"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ป้องกันไม่ให้แท็บเล็ตเข้าสู่โหมดสลีป"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ป้องกันไม่ให้อุปกรณ์ Android TV เข้าสู่โหมดสลีป"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ป้องกันไม่ให้โทรศัพท์เข้าโหมดสลีป"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"อนุญาตให้แอปเปิดหน้าจอในรถไว้"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"อนุญาตให้แอปพลิเคชันป้องกันไม่ให้แท็บเล็ตเข้าสู่โหมดสลีป"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"อนุญาตให้แอปป้องกันไม่ให้อุปกรณ์ Android TV เข้าสู่โหมดสลีป"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"อนุญาตให้แอปพลิเคชันป้องกันไม่ให้โทรศัพท์เข้าสู่โหมดสลีป"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"ลองอีกครั้ง"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"ไม่มีลายนิ้วมือที่ลงทะเบียน"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"อุปกรณ์นี้ไม่มีเซ็นเซอร์ลายนิ้วมือ"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"ปิดใช้เซ็นเซอร์ชั่วคราวแล้ว"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"นิ้ว <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"ยืนยันใบหน้าไม่ได้ ลองอีกครั้ง"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"คุณยังไม่ได้ตั้งค่า Face Unlock"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"อุปกรณ์นี้ไม่รองรับ Face Unlock"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"ปิดใช้เซ็นเซอร์ชั่วคราวแล้ว"</string>
<string name="face_name_template" msgid="3877037340223318119">"ใบหน้า <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"เครือข่ายมือถือไม่มีการเข้าถึงอินเทอร์เน็ต"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"เครือข่ายไม่มีการเข้าถึงอินเทอร์เน็ต"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"เข้าถึงเซิร์ฟเวอร์ DNS ไม่ได้"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"เชื่อมต่อแล้ว"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> มีการเชื่อมต่อจำกัด"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"แตะเพื่อเชื่อมต่อ"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"เปลี่ยนเป็น <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"เชื่อมต่อการแก้ไขข้อบกพร่อง USB แล้ว"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"แตะเพื่อปิดการแก้ไขข้อบกพร่อง USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"เลือกเพื่อปิดใช้งานการแก้ไขข้อบกพร่อง USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"เชื่อมต่อการแก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"แตะเพื่อปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"เลือกเพื่อปิดใช้การแก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"โหมดโปรแกรมทดสอบอัตโนมัติเปิดใช้อยู่"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"รีเซ็ตเป็นค่าเริ่มต้นเพื่อปิดใช้โหมดโปรแกรมทดสอบอัตโนมัติ"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"เปิดใช้คอนโซลการเรียงอันดับแล้ว"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"บริการที่ทำงานอยู่เบื้องหน้าซึ่งเริ่มขึ้นในเบื้องหลังจาก <xliff:g id="PACKAGENAME">%1$s</xliff:g> จะไม่มีสิทธิ์ขณะใช้งานใน R บิลด์ต่อๆ ไป โปรดดู go/r-bg-fgs-restriction และส่งรายงานข้อบกพร่อง"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"นี่เป็นการเพิ่มระดับเสียงเกินระดับที่แนะนำ\n\nการฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ใช้ทางลัดการช่วยเหลือพิเศษไหม"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มนาน 3 วินาทีจะเริ่มฟีเจอร์การช่วยเหลือพิเศษ"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"อนุญาตให้ <xliff:g id="SERVICE">%1$s</xliff:g> ควบคุมอุปกรณ์อย่างเต็มที่ไหม"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"หากคุณเปิด <xliff:g id="SERVICE">%1$s</xliff:g> อุปกรณ์ของคุณจะไม่ใช้ล็อกหน้าจอเพื่อปรับปรุงการเข้ารหัสข้อมูล"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"การควบคุมอย่างเต็มที่เหมาะสำหรับแอปที่ช่วยคุณในเรื่องความต้องการความช่วยเหลือพิเศษแต่ไม่เหมาะสำหรับแอปส่วนใหญ่"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"ดูและควบคุมหน้าจอ"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"การควบคุมนี้อ่านเนื้อหาทั้งหมดบนหน้าจอและแสดงเนื้อหาทับแอปอื่นๆ"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"ดูและดำเนินการ"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"การกระทำนี้ติดตามการโต้ตอบของคุณกับแอปหรือกับเซ็นเซอร์ของฮาร์ดแวร์ และจะโต้ตอบกับแอปต่างๆ แทนคุณ"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"อนุญาต"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"ปฏิเสธ"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"แตะฟีเจอร์เพื่อเริ่มใช้"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"เลือกแอปที่จะใช้กับปุ่มการช่วยเหลือพิเศษ"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"เลือกแอปที่จะใช้กับทางลัดปุ่มปรับระดับเสียง"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"ปิด <xliff:g id="SERVICE_NAME">%s</xliff:g> แล้ว"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"แก้ไขทางลัด"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"ยกเลิก"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"เสร็จ"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"ปิดทางลัด"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"ใช้ทางลัด"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"การกลับสี"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"ไม่จัดอยู่ในหมวดหมู่ใดๆ"</string>
<string name="importance_from_user" msgid="2782756722448800447">"คุณตั้งค่าความสำคัญของการแจ้งเตือนเหล่านี้"</string>
<string name="importance_from_person" msgid="4235804979664465383">"ข้อความนี้สำคัญเนื่องจากบุคคลที่เกี่ยวข้อง"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"การแจ้งเตือนที่กำหนดเองของแอป"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"อนุญาตให้ <xliff:g id="APP">%1$s</xliff:g> สร้างผู้ใช้ใหม่ด้วย <xliff:g id="ACCOUNT">%2$s</xliff:g> ไหม (มีผู้ใช้ที่มีบัญชีนี้อยู่แล้ว)"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"อนุญาตให้ <xliff:g id="APP">%1$s</xliff:g> สร้างผู้ใช้ใหม่ด้วย <xliff:g id="ACCOUNT">%2$s</xliff:g> ไหม"</string>
<string name="language_selection_title" msgid="52674936078683285">"เพิ่มภาษา"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"เมนูการช่วยเหลือพิเศษ"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"แถบคำบรรยาย <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"ใส่ <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ในที่เก็บข้อมูลที่ถูกจำกัดแล้ว"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ส่วนตัว"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"งาน"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"มุมมองส่วนตัว"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"ดูงาน"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"แชร์ด้วยแอปงานไม่ได้"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"แชร์ด้วยแอปส่วนตัวไม่ได้"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"ผู้ดูแลระบบไอทีบล็อกการแชร์ระหว่างโปรไฟล์ส่วนตัวและโปรไฟล์งาน"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"เข้าถึงแอปงานไม่ได้"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"ผู้ดูแลระบบไอทีไม่อนุญาตให้คุณดูเนื้อหาส่วนตัวในแอปงาน"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"เข้าถึงแอปส่วนตัวไม่ได้"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"ผู้ดูแลระบบไอทีไม่อนุญาตให้คุณดูเนื้อหางานในแอปส่วนตัว"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"เปิดโปรไฟล์งานเพื่อแชร์เนื้อหา"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"เปิดโปรไฟล์งานเพื่อดูเนื้อหา"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"ไม่มีแอป"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"เปิด"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"บันทึกหรือเปิดเสียงในสายโทรศัพท์"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"อนุญาตให้แอปนี้ (เมื่อกำหนดให้เป็นแอปโทรออกเริ่มต้น) บันทึกหรือเปิดเสียงในสายโทรศัพท์ได้"</string>
</resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 53818ed..f244af0 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Pinamamahalaan ng iyong organisasyon ang device na ito, at maaari nitong subaybayan ang trapiko sa network. I-tap para sa mga detalye."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Binago ang mga setting ng lokasyon ng iyong admin"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"I-tap para makita ang iyong mga setting ng lokasyon."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Detector ng Bansa"</string>
+ <string name="location_service" msgid="2439187616018455546">"Serbisyo ng Lokasyon"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Serbisyo ng GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Serbisyo ng Notification ng Sensor"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Serbisyo ng Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Buburahin ang iyong device"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Hindi magamit ang admin app. Mabubura na ang iyong device.\n\nKung mayroon kang mga tanong, makipag-ugnayan sa admin ng iyong organisasyon."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Na-disable ng <xliff:g id="OWNER_APP">%s</xliff:g> ang pag-print."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Kukuha ng screenshot para sa ulat ng bug sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> segundo.</item>
<item quantity="other">Kukuha ng screenshot para sa ulat ng bug sa loob ng <xliff:g id="NUMBER_1">%d</xliff:g> na segundo.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Nakakuha ng screenshot kasama ng ulat ng bug"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Hindi nakakuha ng screenshot kasama ng ulat ng bug"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Silent mode"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Naka-OFF ang tunog"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Naka-ON ang sound"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"i-access ang mga dagdag na command ng provider ng lokasyon"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Nagbibigay-daan sa app na mag-access ng mga karagdagang command ng provider ng lokasyon. Maaari nitong bigyang-daan ang app na gambalain ang pagpapatakbo ng GPS o ng iba pang mga pinagmulan ng lokasyon."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"i-access lang ang tumpak na lokasyon sa foreground"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Makukuha lang ng app na ito ang iyong eksaktong lokasyon kapag nasa foreground ito. Naka-on at available dapat ang mga serbisyo ng lokasyon sa iyong device para magamit ng app ang mga ito. Posibleng lumakas ang pagkonsumo ng baterya dahil dito."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Makukuha ng app na ito ang iyong eksaktong lokasyon mula sa mga serbisyo ng lokasyon habang ginagamit ang app. Naka-on dapat ang mga serbisyo ng lokasyon para sa iyong device para makuha ng app ang lokasyon. Posibleng madagdagan ang paggamit ng baterya dahil dito."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"i-access lang ang tinatantyang lokasyon sa foreground"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Makukuha lang ng app na ito ang iyong tinatantyang lokasyon kapag nasa foreground ito. Naka-on at available dapat ang mga serbisyo ng lokasyon sa iyong device para magamit ng app ang mga ito."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Makukuha ng app na ito ang iyong tinantyang lokasyon mula sa mga serbisyo ng lokasyon habang ginagamit ang app. Naka-on dapat ang mga serbisyo ng lokasyon para sa iyong device para makuha ng app ang lokasyon."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"i-access ang lokasyon sa background"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Puwedeng i-access ng app na ito ang lokasyon habang tumatakbo sa background, bilang karagdagan sa access sa lokasyon sa foreground."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Maa-access ng app na ito ang lokasyon anumang oras, kahit habang hindi ginagamit ang app."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"baguhin ang mga setting ng iyong audio"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Pinapayagan ang app na baguhin ang mga pandaigdigang setting ng audio gaya ng volume at kung aling speaker ang ginagamit para sa output."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"mag-record ng audio"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Makakakuha ng mga larawan at makakapag-record ng mga video ang app na ito gamit ang camera anumang oras."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Bigyan ang isang application o serbisyo ng access sa mga camera ng system para kumuha ng mga larawan at video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ang privileged | system app na ito ay makakakuha ng mga larawan at makakapag-record ng mga video gamit ang isang camera ng system anumang oras. Nangangailangang may android.permission.CAMERA na pahintulot din ang app"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Payagan ang isang application o serbisyo na makatanggap ng mga callback tungkol sa pagbubukas o pagsasara ng mga camera device."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ang signature app na ito ay makakatanggap ng mga callback kapag binubuksan (ng anumang application package) o isinasara ng anumang camera device."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kontrolin ang pag-vibrate"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Pinapayagan ang app na kontrolin ang vibrator."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Pinapayagan ang app na ma-access ang naka-vibrate na status."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Pinapayagan ang app na iruta ang mga tawag nito sa pamamagitan ng system upang mapahusay ang karanasan sa pagtawag."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"tingnan at kontrolin ang mga tawag sa pamamagitan ng system."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Binibigyang-daan ang app na makita at makontrol ang mga kasalukuyang tawag sa device. Kabilang dito ang impormasyon gaya ng mga numero ng tawag para sa mga tawag at ang status ng mga tawag."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"ipagpatuloy ang isang tawag mula sa ibang app"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Pinapayagan ang app na ipagpatuloy ang isang tawag na sinimulan sa ibang app."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"basahin ang mga numero ng telepono"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Pinapayagan ang app na i-access ang mga numero ng telepono ng device."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"panatilihing naka-on ang screen ng sasakyan"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"pigilan ang tablet mula sa pag-sleep"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"pigilang mag-sleep ang iyong Android TV device"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"pigilan ang telepono mula sa paghinto"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Pinapayagan ang app na panatilihing naka-on ang screen ng sasakyan."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Pinapayagan ang app na pigilan ang tablet mula sa pag-sleep."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Nagbibigay-daan sa app na pigilang mag-sleep ang iyong Android TV device."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Pinapayagan ang app na pigilan ang telepono mula sa pag-sleep."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Subukang muli."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Walang naka-enroll na fingerprint."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Walang sensor ng fingerprint ang device na ito."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Pansamantalang na-disable ang sensor."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Daliri <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Hindi ma-verify ang mukha. Subukang muli."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Hindi mo pa nase-set up ang face unlock."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Hindi sinusuportahan ang face unlock sa device na ito."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Pansamantalang na-disable ang sensor."</string>
<string name="face_name_template" msgid="3877037340223318119">"Mukha <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Walang access sa internet ang mobile network"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Walang access sa internet ang network"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Hindi ma-access ang pribadong DNS server"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Nakakonekta"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Limitado ang koneksyon ng <xliff:g id="NETWORK_SSID">%1$s</xliff:g>"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"I-tap para kumonekta pa rin"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Lumipat sa <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Nakakonekta ang pag-debug ng USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"I-tap para i-off ang pag-debug ng USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Piliin upang i-disable ang debugging ng USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Nakakonekta ang wireless na pag-debug"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"I-tap para i-off ang wireless na pag-debug"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Piliin para i-disable ang wireless na pag-debug."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Naka-enable ang Test Harness Mode"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Mag-factory reset para i-disable ang Test Harness Mode."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Naka-enable ang serial console"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ang sinimulan sa background na serbisyo sa foreground mula sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> ay hindi magkakaroon ng pahintulot habang ginagamit sa mga R build sa hinaharap. Pakipuntahan ang go/r-bg-fgs-restriction at maghain ng bugreport."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lakasan ang volume nang lagpas sa inirerekomendang antas?\n\nMaaaring mapinsala ng pakikinig sa malakas na volume sa loob ng mahahabang panahon ang iyong pandinig."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gagamitin ang Shortcut sa Pagiging Accessible?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kapag naka-on ang shortcut, magsisimula ang isang feature ng pagiging naa-access kapag pinindot ang parehong button ng volume."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Bigyan ang <xliff:g id="SERVICE">%1$s</xliff:g> ng ganap na kontrol sa iyong device?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Kung io-on mo ang <xliff:g id="SERVICE">%1$s</xliff:g>, hindi gagamitin ng iyong device ang lock ng screen mo para pahusayin ang pag-encrypt ng data."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Naaangkop ang ganap na kontrol sa mga app na tumutulong sa mga pangangailangan mo sa accessibility, pero hindi sa karamihan ng mga app."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Tingnan at kontrolin ang screen"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Mababasa nito ang lahat ng content na nasa screen at makakapagpakita ito ng content sa iba pang app."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Tumingin at magsagawa ng mga pagkilos"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Masusubaybayan nito ang iyong mga pakikipag-ugayan sa isang app o hardware na sensor, at puwede itong makipag-ugnayan sa mga app para sa iyo."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Payagan"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Tanggihan"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"I-tap ang isang feature para simulan itong gamitin:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Pumili ng mga app na paggagamian ng button ng accessibility"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Pumili ng mga app na paggagamitan ng shortcut ng volume key"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Na-off ang <xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"I-edit ang mga shortcut"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Kanselahin"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Tapos na"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"I-off ang Shortcut"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Gamitin ang Shortcut"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Pag-invert ng Kulay"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Di-nakategorya"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ikaw ang magtatakda sa kahalagahan ng mga notification na ito."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Mahalaga ito dahil sa mga taong kasangkot."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Custom na notification ng app"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Payagan ang <xliff:g id="APP">%1$s</xliff:g> na gumawa ng bagong User sa <xliff:g id="ACCOUNT">%2$s</xliff:g> (mayroon nang User sa account na ito) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Payagan ang <xliff:g id="APP">%1$s</xliff:g> na gumawa ng bagong User sa <xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Magdagdag ng wika"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ng Accessibility"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar ng <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Inilagay ang <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> sa PINAGHIHIGPITANG bucket"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Trabaho"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Personal na view"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"View ng trabaho"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Hindi puwedeng magbahagi sa mga app para sa trabaho"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Hindi puwedeng magbahagi sa mga personal na app"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Na-block ng iyong IT admin ang pagbabahagi sa pagitan ng mga personal na profile at profile sa trabaho"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Hindi ma-access ang mga app para sa trabaho"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Hindi ka pinapayagan ng iyong IT admin na tingnan ang personal na content sa mga app para sa trabaho"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Hindi ma-access ang mga personal na app"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Hindi ka pinapayagan ng iyong IT admin na tingnan ang content ng trabaho sa mga personal na app"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"I-on ang profile sa trabaho para makapagbahagi ng content"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"I-on ang profile sa trabaho para tumingin ng content"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Walang available na app"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"I-on"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Mag-record o mag-play ng audio sa mga tawag sa telephony"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Papayagan ang app na ito na mag-record o mag-play ng audio sa mga tawag sa telephony kapag naitalaga bilang default na dialer application."</string>
</resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index 2e3bf3a..0cd1427 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Kuruluşunuz bu cihazı yönetmekte olup ağ trafiğini izleyebilir. Ayrıntılar için dokunun."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Konum ayarları, yöneticiniz tarafından değiştirildi"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Konum ayarlarınızı görmek için dokunun."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Ülke Algılayıcı"</string>
+ <string name="location_service" msgid="2439187616018455546">"Konum Hizmeti"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS Hizmeti"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensör Bildirim Hizmeti"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Alacakaranlık Hizmeti"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız silinecek"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Yönetim uygulaması kullanılamıyor. Cihazınız şimdi silinecek.\n\nSorularınız varsa kuruluşunuzun yöneticisine başvurun."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Yazdırma işlemi <xliff:g id="OWNER_APP">%s</xliff:g> tarafından devre dışı bırakıldı."</string>
@@ -245,6 +250,8 @@
<item quantity="other"><xliff:g id="NUMBER_1">%d</xliff:g> saniye içinde hata raporu ekran görüntüsü alınıyor.</item>
<item quantity="one">Hata raporu ekran görüntüsü <xliff:g id="NUMBER_0">%d</xliff:g> saniye içinde alınacak.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Hata raporunun ekran görüntüsü alındı"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Hata raporunun ekran görüntüsü alınamadı"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Sessiz mod"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Ses KAPALI"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Ses AÇIK"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"ek konum sağlayıcı komutlarına eriş"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Uygulamanın, ekstra konum sağlayıcı komutlarına erişmesine izin verir. Bu izin, uygulamanın GPS veya diğer konum kaynaklarının çalışmasını kesmesine olanak sağlayabilir."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"yalnızca ön planda kesin konuma erişme"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu uygulama yalnızca ön plandayken kesin konumunuzu alabilir. Uygulamanın bu hizmetleri kullanabilmesi için telefonunuzda bu konum hizmetleri açık ve kullanılabilir olmalıdır. Bu, pil tüketimini artırabilir."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu uygulama, uygulama kullanılırken konum hizmetlerinden kesin konum bilginizi alabilir. Uygulamanın konum bilginizi alabilmesi için cihazınızda konum hizmetlerinin açık olması gerekir. Bu durum, pil kullanımını artırabilir."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"yalnızca ön planda yaklaşık konuma erişme"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu uygulama, yalnızca ön planda çalışırken yaklaşık konum bilginizi alabilir. Uygulamanın kullanabilmesi için konum hizmetlerinin açılması ve cihazınızda kullanılabilir olması gerekir."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu uygulama, uygulama kullanılırken konum hizmetlerinden yaklaşık konum bilginizi alabilir. Uygulamanın konum bilginizi alabilmesi için cihazınızda konum hizmetlerinin açık olması gerekir."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"konum bilgisine arka planda eriş"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu uygulama ön plan konum erişimine ek olarak konum bilgisine arka planda çalışırken erişebilir."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu uygulama, uygulama kullanılmıyorken bile konum bilgisine her zaman erişebilir."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"ses ayarlarınızı değiştirin"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Uygulamaya ses düzeyi ve ses çıkışı için kullanılan hoparlör gibi genel ses ayarlarını değiştirme izni verir."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ses kaydet"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Bu uygulama, herhangi bir zamanda kamerayı kullanarak fotoğraf ve video çekebilir."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Bir uygulama veya hizmetin fotoğraf ve video çekmek için sistem kameralarına erişmesine izin verin"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ayrıcalık tanınmış bu | sistem uygulaması herhangi bir zamanda sistem kamerası kullanarak fotoğraf çekebilir ve video kaydedebilir. Uygulamanın da bu ayrıcalığa sahip olması için android.permission.CAMERA izni gerektirir"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Bir uygulama veya hizmetin açılıp kapatılan kamera cihazları hakkında geri çağırmalar almasına izin verin."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Bu imza uygulaması, herhangi bir kamera cihazı açıldığında (herhangi bir uygulama paketi tarafından) veya kapatıldığında geri çağırmalar alabilir."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"titreşimi denetleme"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Uygulamaya, titreşimi denetleme izni verir."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Uygulamanın titreşim durumuna erişimesine izni verir."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Uygulamanın, çağrı deneyimini iyileştirmek için çağrılarını sistem üzerinden yönlendirmesine olanak tanır."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"aramaları sistemde görüp denetleme."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Uygulamanın cihazda devam eden aramaları görmesini ve denetlemesini sağlar. Bu bilgiler arasında aramaların yapıldığı numaralar ve aramaların durumu gibi bilgiler yer alır."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"başka bir uygulamadaki çağrıya devam etme"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Uygulamanın, başka bir uygulamada başlatılan çağrıya devam etmesine izin verir."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"telefon numaralarını oku"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Uygulamaya, cihazınızın telefon numaralarına erişme izni verir."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"arabanın ekranını açık tutma"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"tabletin uykuya geçmesini önle"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV cihazınızın uyku moduna geçmesini önleme"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"telefonun uykuya geçmesini önleme"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Uygulamaya, arabanın ekranını açık tutmaya izin verir."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Uygulamaya, tabletin uykuya geçmesini önleme izni verir."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Uygulamaya, Android TV cihazınızın uyku moduna geçmesini önleme izni verir."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Uygulamaya, telefonun uykuya geçmesini önleme izni verir."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Tekrar deneyin."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Parmak izi kaydedilmedi."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Bu cihazda parmak izi sensörü yok."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Sensör geçici olarak devre dışı bırakıldı."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"<xliff:g id="FINGERID">%d</xliff:g>. parmak"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Yüz doğrulanamıyor. Tekrar deneyin."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Yüz tanıma kilidi ayarlamadınız."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Bu cihazda yüz tanıma kilidi desteklenmiyor"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Sensör geçici olarak devre dışı bırakıldı."</string>
<string name="face_name_template" msgid="3877037340223318119">"Yüz <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobil ağın internet bağlantısı yok"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Ağın internet bağlantısı yok"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Gizli DNS sunucusuna erişilemiyor"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Bağlandı"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> sınırlı bağlantıya sahip"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Yine de bağlanmak için dokunun"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> ağına geçildi"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB hata ayıklaması bağlandı"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB hata ayıklama işlevini kapatmak için dokunun"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB hata ayıklamasını devre dışı bırakmak için seçin."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Kablosuz hata ayıklama bağlı"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Kablosuz hata ayıklamayı kapatmak için dokunun"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Kablosuz hata ayıklamayı devre dışı bırakmak için seçin."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Test Bandı Modu etkin"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Test Bandı Modu\'nu devre dışı bırakmak için cihazı fabrika ayarlarına sıfırlayın."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Seri konsol etkinleştirildi"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> paketinden ön plan hizmetini başlatan arka plan, sonraki R derlemelerinde kullanım sırasında iznine sahip olmayacak. Lütfen go/r-bg-fgs-restriction sayfasına bakıp hata raporu girin."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ses seviyesi önerilen düzeyin üzerine yükseltilsin mi?\n\nUzun süre yüksek ses seviyesinde dinlemek işitme duyunuza zarar verebilir."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erişilebilirlik Kısayolu Kullanılsın mı?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Kısayol açıkken ses düğmelerinin ikisini birden 3 saniyeliğine basılı tutmanız bir erişilebilirlik özelliğini başlatır."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetinin cihazınızı tamamen kontrol etmesine izin veriyor musunuz?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"<xliff:g id="SERVICE">%1$s</xliff:g> hizmetini açarsanız cihazınız veri şifrelemeyi geliştirmek için ekran kilidinizi kullanmaz."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Erişebilirlik ihtiyaçlarınıza yardımcı olan uygulamalara tam kontrol verilmesi uygundur ancak diğer pek çok uygulama için uygun değildir."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekranı görüntüleme ve kontrol etme"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandaki tüm içeriği okuyabilir ve içeriği diğer uygulamaların üzerinde gösterebilir"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"İşlemleri görüntüleyin ve gerçekleştirin"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Bir uygulama veya donanım sensörüyle etkileşimlerinizi takip edebilir ve sizin adınıza uygulamalarla etkileşimde bulunabilir."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"İzin ver"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Reddet"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Kullanmaya başlamak için bir özelliğe dokunun:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Erişilebilirlik düğmesiyle kullanılacak uygulamaları seçin"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Ses tuşu kısayoluyla kullanılacak uygulamaları seçin"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> kapatıldı"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Kısayolları düzenle"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"İptal"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Bitti"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Kısayolu Kapat"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Kısayolu Kullan"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Rengi Ters Çevirme"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Kategorize edilmemiş"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Bu bildirimlerin önem derecesini ayarladınız."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Bu, dahil olan kişiler nedeniyle önemlidir."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Özel uygulama bildirimi"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> uygulamasının <xliff:g id="ACCOUNT">%2$s</xliff:g> hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi (bu hesaba sahip bir kullanıcı zaten var)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> uygulamasının <xliff:g id="ACCOUNT">%2$s</xliff:g> hesabına sahip yeni bir Kullanıcı eklemesine izin verilsin mi?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Dil ekleyin"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erişilebilirlik Menüsü"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının başlık çubuğu."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> KISITLANMIŞ gruba yerleştirildi"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Kişisel"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"İş"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Kişisel görünüm"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"İş görünümü"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"İş uygulamalarıyla paylaşılamıyor"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Kişisel uygulamalarla paylaşılamıyor"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"BT yöneticiniz kişisel profiler ile iş profilleri arasında paylaşımı engelledi"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"İş uygulamalarına erişilemiyor"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"BT yöneticiniz, kişisel içeriğinizi iş uygulamalarında görüntülemenize izin vermiyor"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Kişisel uygulamalara erişilemiyor"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"BT yöneticiniz, iş içeriğini kişisel uygulamalarda görüntülemenize izin vermiyor"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"İçerik paylaşmak için iş profilini açın"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"İçeriği görüntülemek için iş profilini açın"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Kullanılabilir uygulama yok"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Aç"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefon aramalarında sesi kaydet veya çal"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Varsayılan çevirici uygulaması olarak atandığında bu uygulamanın telefon aramalarında sesi kaydetmesine veya çalmasına izin verir."</string>
</resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 37bb5cd..a652b52 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -197,6 +197,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Адміністратор вашої організації контролює цей пристрій і відстежує мережевий трафік. Торкніться, щоб дізнатися більше."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Доступ до геоданих змінено адміністратором"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Натисніть, щоб переглянути доступ до геоданих."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Визначення країни"</string>
+ <string name="location_service" msgid="2439187616018455546">"Служби локації"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Сервіс GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Сервіс \"Сповіщення датчика\""</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Сервіс \"Сутінки\""</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"З вашого пристрою буде стерто всі дані"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Не можна запускати додаток для адміністраторів. Буде відновлено заводські налаштування пристрою.\n\nЯкщо у вас є запитання, зв’яжіться з адміністратором своєї організації."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Додаток <xliff:g id="OWNER_APP">%s</xliff:g> вимкнув друк."</string>
@@ -251,6 +256,8 @@
<item quantity="many">Знімок екрана для звіту про помилки буде зроблено через <xliff:g id="NUMBER_1">%d</xliff:g> секунд.</item>
<item quantity="other">Знімок екрана для звіту про помилки буде зроблено через <xliff:g id="NUMBER_1">%d</xliff:g> секунди.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Знімок екрана зі звітом про помилку зроблено"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Не вдалося зробити знімок екрана зі звітом про помилку"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Беззвуч. режим"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Звук ВИМК."</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Звук УВІМК."</string>
@@ -418,11 +425,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"отр. дост. до додат. команд пров. місцезн."</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Додаток отримуватиме доступ до додаткових команд постачальника геоданих. Можливе втручання додатка в роботу GPS чи інших джерел геоданих."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"отримувати доступ до даних про точне місцезнаходження лише в активному режимі"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Цей додаток може отримувати дані про ваше точне місцезнаходження лише в активному режимі. Щоб додаток міг використовувати Служби локації, вони мають бути доступні й увімкнені на вашому пристрої. Це може пришвидшити розряджання акумулятора."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Цей додаток може отримувати дані про ваше точне місцезнаходження від Служб локації, коли ви його використовуєте. Для цього на вашому пристрої має бути ввімкнено Служби локації. Це може підвищити використання заряду акумулятора."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"отримувати доступ до даних про приблизне місцезнаходження лише в активному режимі"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Цей додаток може отримувати дані про ваше приблизне місцезнаходження лише в активному режимі. Щоб додаток міг використовувати Служби локації, вони мають бути доступні й увімкнені на вашому пристрої."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Цей додаток може отримувати дані про ваше приблизне місцезнаходження від Служб локації, коли ви його використовуєте. Для цього на вашому пристрої має бути ввімкнено Служби локації."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"доступ до геоданих у фоновому режимі"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Цей додаток може отримувати дані про місцезнаходження, коли його запущено не лише в активному, а й у фоновому режимі."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Цей додаток може будь-коли отримувати дані про ваше місцезнаходження, навіть якщо ви його не використовуєте."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"змінювати налаштув-ня звуку"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Дозволяє програмі змінювати загальні налаштування звуку, як-от гучність і динамік, який використовується для виводу сигналу."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"запис-ти аудіо"</string>
@@ -435,6 +442,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Цей додаток може будь-коли робити фотографії та записувати відео за допомогою камери."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Дозволити додатку або сервісу отримувати доступ до системних камер, робити фото й записувати відео"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Цей пріоритетний | системний додаток може будь-коли робити фото й записувати відео, використовуючи камеру системи. Додатку потрібен дозвіл android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Дозволити додатку або сервісу отримувати зворотні виклики щодо відкриття чи закриття камер."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Цей додаток для підпису може отримувати зворотні виклики, коли будь-яка камера відкривається (з указанням пакета додатка) чи закривається."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"контролювати вібросигнал"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Дозволяє програмі контролювати вібросигнал."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Надає додатку доступ до стану вібрації."</string>
@@ -448,13 +457,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Дозволяє додатку маршрутизувати виклики через систему, щоб було зручніше телефонувати."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"Переглядати виклики через систему й керувати ними."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Додаток може переглядати поточні виклики на пристрої та керувати ними. Це стосується такої інформації, як номери та стан викликів."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"продовжувати виклик з іншого додатка"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Додаток може продовжувати виклик, початий в іншому додатку."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"переглядати номери телефону"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Надає додаткам доступ до номерів телефону на пристрої."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"залишати екран автомобіля ввімкненим"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"не доп.перехід пристр.в реж.сну"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"не допускати перехід пристрою Android TV в режим сну"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"Вимкнення режиму сну"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Дозволяє додатку залишати екран автомобіля ввімкненим."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Дозволяє програмі не допускати перехід планшетного ПК у режим сну."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Дозволяє додатку не допускати перехід пристрою Android TV в режим сну."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Дозволяє програмі не допускати перехід телефону в режим сну."</string>
@@ -552,8 +567,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Повторіть спробу."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Відбитки пальців не зареєстровано."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"На цьому пристрої немає сканера відбитків пальців."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Датчик тимчасово вимкнено."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Відбиток пальця <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -597,8 +611,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Не вдається перевірити обличчя. Повторіть спробу."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Ви не налаштували Фейсконтроль"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"На цьому пристрої не підтримується Фейсконтроль."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Датчик тимчасово вимкнено."</string>
<string name="face_name_template" msgid="3877037340223318119">"Обличчя <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1293,7 +1306,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Мобільна мережа не має доступу до Інтернету"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Мережа не має доступу до Інтернету"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Немає доступу до приватного DNS-сервера"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Підключено"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"Підключення до мережі <xliff:g id="NETWORK_SSID">%1$s</xliff:g> обмежено"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Натисніть, щоб усе одно підключитися"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Пристрій перейшов на мережу <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1358,6 +1370,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Налагодження USB підключено"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Торкніться, щоб вимкнути налагоджувач USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Виберіть, щоб вимкнути налагодження за USB"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Бездротове налагодження підключено"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Натисніть, щоб вимкнути бездротове налагодження"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Виберіть, щоб вимкнути бездротове налагодження."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Увімкнено режим автоматизованого тестування"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Щоб вимкнути режим автоматизованого тестування, відновіть заводські налаштування."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Послідовну консоль увімкнено"</string>
@@ -1665,10 +1680,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Активний сервіс пакета <xliff:g id="PACKAGENAME">%1$s</xliff:g>, запущений у фоновому режимі, не матиме дозволу \"Коли додаток використовується\" в майбутніх складаннях R. Перегляньте go/r-bg-fgs-restriction і надішліть звіт про помилки."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Збільшити гучність понад рекомендований рівень?\n\nЯкщо слухати надто гучну музику тривалий час, можна пошкодити слух."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Використовувати швидке ввімкнення?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Якщо цей засіб увімкнено, ви можете активувати спеціальні можливості, утримуючи обидві кнопки гучності протягом трьох секунд."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Надати сервісу <xliff:g id="SERVICE">%1$s</xliff:g> повний доступ до вашого пристрою?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Якщо ви ввімкнете сервіс <xliff:g id="SERVICE">%1$s</xliff:g>, дані на пристрої не захищатимуться екраном блокування."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Повний доступ доречний для додатків, які надають спеціальні можливості, але його не варто відкривати для більшості інших додатків."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Перегляд і контроль екрана"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Цей сервіс може переглядати всі дані на екрані й показувати вміст над іншими додатками."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Переглянути й виконати дії"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Цей сервіс може відстежувати вашу взаємодію з додатком чи апаратним датчиком, а також взаємодіяти з додатками від вашого імені."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Дозволити"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Заборонити"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Натисніть функцію, щоб почати використовувати її:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Виберіть додатки, які хочете використовувати з кнопкою спеціальних можливостей"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Виберіть додатки, які хочете використовувати з клавішами гучності"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"Сервіс <xliff:g id="SERVICE_NAME">%s</xliff:g> вимкнено"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Редагувати засоби"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Скасувати"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Готово"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Вимкнути ярлик"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Використовувати ярлик"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Інверсія кольорів"</string>
@@ -1909,6 +1936,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Без категорії"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Ви вказуєте пріоритет цих сповіщень."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Важливе з огляду на учасників."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Користувацьке сповіщення додатка"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Дозволити додатку <xliff:g id="APP">%1$s</xliff:g> створити нового користувача з обліковим записом <xliff:g id="ACCOUNT">%2$s</xliff:g> (користувач із таким обліковим записом уже існує)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Дозволити додатку <xliff:g id="APP">%1$s</xliff:g> створити нового користувача з обліковим записом <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Додати мову"</string>
@@ -2084,22 +2112,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спеціальних можливостей"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Смуга із субтитрами для додатка <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" додано в сегмент з обмеженнями"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Особисте"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Робоче"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Особистий перегляд"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Робочий перегляд"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Не можна надсилати дані робочим додаткам"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Не можна надсилати дані особистим додаткам"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Ваш ІТ-адміністратор заблокував обмін даними між особистим і робочим профілями"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Немає доступу до робочих додатків"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Ваш ІТ-адміністратор не дозволив переглядати особистий контент в робочих додатках"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Немає доступу до особистих додатків"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Ваш ІТ-адміністратор не дозволив переглядати робочий контент в особистих додатках"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Увімкніть робочий профіль, щоб ділитися контентом"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Увімкніть робочий профіль, щоб переглядати контент"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Немає доступних додатків"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Увімкнути"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Записувати й відтворювати звук під час викликів"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Дозволяє цьому додатку записувати й відтворювати звук під час викликів, коли його вибрано додатком для дзвінків за умовчанням."</string>
</resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index f2157bd..9221210 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -191,8 +191,13 @@
<string name="device_ownership_relinquished" msgid="4080886992183195724">"منتظم نے ذاتی استعمال کے لیے آلہ کو دستبردار کیا ہے"</string>
<string name="network_logging_notification_title" msgid="554983187553845004">"آلہ زیر انتظام ہے"</string>
<string name="network_logging_notification_text" msgid="1327373071132562512">"آپ کی تنظیم اس آلے کا نظم کرتی ہے اور وہ نیٹ ورک ٹریفک کی نگرانی کر سکتی ہے۔ تفاصیل کیلئے تھپتھپائیں۔"</string>
- <string name="location_changed_notification_title" msgid="4119726617105166830">"آپ کے منتظم نے مقام کی ترتیبات تبدیل کر دی"</string>
+ <string name="location_changed_notification_title" msgid="4119726617105166830">"آپ کے منتظم نے مقام کی ترتیبات تبدیل کر دیں"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"اپنے مقام کی ترتیبات دیکھنے کے لیے تھپتھپائیں۔"</string>
+ <string name="country_detector" msgid="7023275114706088854">"ملک کا ڈیٹیکٹر"</string>
+ <string name="location_service" msgid="2439187616018455546">"مقام کی سروس"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS سروس"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"سینسر نوٹیفکیشن سروس"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"شفقی سروس"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"آپ کا آلہ صاف کر دیا جائے گا"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"منتظم کی ایپ استعمال نہیں کی جا سکتی۔ آپ کا آلہ اب مٹا دیا جائے گا۔\n\nاگر آپ کے سوالات ہیں تو اپنی تنظیم کے منتظم سے رابطہ کریں۔"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> نے پرنٹنگ کو غیر فعال کر دیا ہے۔"</string>
@@ -245,6 +250,8 @@
<item quantity="other">بگ رپورٹ کیلئے <xliff:g id="NUMBER_1">%d</xliff:g> سیکنڈز میں اسکرین شاٹ لیا جائے گا۔</item>
<item quantity="one">بگ رپورٹ کیلئے <xliff:g id="NUMBER_0">%d</xliff:g> سیکنڈ میں اسکرین شاٹ لیا جائے گا۔</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"بگ رپورٹ کے ساتھ لیا گیا اسکرین شاٹ"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"بگ رپورٹ کے ساتھ اسکرین شاٹ لینے میں ناکام"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"خاموش وضع"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"آواز آف ہے"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"آواز آن ہے"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"اضافی مقام فراہم کنندہ کی کمانڈز تک رسائی حاصل کریں"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"ایپ کو اضافی مقام فراہم کنندہ کی کمانڈز تک رسائی حاصل کرنے کی اجازت دیتی ہے۔ یہ ایپ کو GPS یا دوسرے مقام کے مآخذ کے عمل کے ساتھ مداخلت کرنے کی اجازت دے سکتی ہے۔"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"صرف پیش منظر میں درست مقام تک رسائی حاصل کریں"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"یہ ایپ جب پس منظر میں ہوتی ہے تبھی یہ آپ کا صحیح مقام حاصل کر سکتی ہے۔ ایپ کو مقام کی سروسز کو استعمال کرنے کیلئے اِن کا آپ کے آلہ پر دستیاب ہونا اور آن ہونا ضروری ہے۔ اس سے بیٹری کی کھپت میں اضافہ ہو سکتا ہے۔"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"یہ ایپ جب استعمال میں ہوتی ہے تو مقام کی سروسز سے آپ کا درست مقام حاصل کر سکتی ہے۔ ایپ کی مدد سے مقام تک پہنچنے کے لیے آپ کے آلے میں مقام سروسز کا آن ہونا ضروری ہے۔ اس سے بیٹری کے استعمال میں اضافہ ہو سکتا ہے۔"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"صرف پیش منظر میں تخمینی مقام تک رسائی"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"یہ ایپ جب پس منظر میں ہوتی ہے تبھی یہ آپ کا تخمینی مقام حاصل کر سکتی ہے۔ ایپ کو مقام کی سروسز کو استعمال کرنے کیلئے ان کا آپ کے آلہ پر دستیاب ہونا اور آن ہونا ضروری ہے۔"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"یہ ایپ جب استعمال میں ہوتی ہے تو مقام کی سروسز سے آپ کا تخمینی مقام حاصل کر سکتی ہے۔ ایپ کی مدد سے مقام تک پہنچنے کے لیے آپ کے آلے میں مقام سروسز کا آن ہونا ضروری ہے۔"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"پس منظر میں مقام کی رسائی حاصل کریں"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"یہ ایپ پیش منظر کے مقام تک رسائی کے ساتھ ساتھ، پس منظر میں چلتے ہوئے مقام تک رسائی حاصل کر سکتی ہے۔"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"یہ ایپ استعمال میں نہ ہونے کے با وجود کسی بھی وقت مقام تک رسائی حاصل کر سکتی ہے۔"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"اپنے آڈیو کی ترتیبات کو تبدیل کریں"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"ایپ کو مجموعی آڈیو ترتیبات جیسے والیوم اور آؤٹ پٹ کیلئے جو اسپیکر استعمال ہوتا ہے اس میں ترمیم کرنے کی اجازت دیتا ہے۔"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"آڈیو ریکارڈ کریں"</string>
@@ -429,6 +436,10 @@
<string name="permdesc_camera" msgid="1354600178048761499">"یہ ایپ کسی بھی وقت کیمرا استعمال کرتے ہوئے تصاویر لے سکتی ہے اور ویڈیوز ریکارڈ کر سکتی ہے۔"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"ایپلیکیشن یا سروس کو سسٹم کے کیمرے تک رسائی حاصل کرنے کی اجازت دیتا ہے تاکہ وہ تصاویر لیں اور ویڈیوز ریکارڈ کریں۔"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"یہ مراعات یافتہ سسٹم ایپ کسی بھی وقت ایک سسٹم کیمرا استعمال کرتے ہوئے تصاویر اور ویڈیوز ریکارڈ کر سکتی ہے۔ ایپ کے پاس android.permission.CAMERA کے ليے بھی اجازت ہونا ضروری ہے۔"</string>
+ <!-- no translation found for permlab_cameraOpenCloseListener (5548732769068109315) -->
+ <skip />
+ <!-- no translation found for permdesc_cameraOpenCloseListener (5860322671003213710) -->
+ <skip />
<string name="permlab_vibrate" msgid="8596800035791962017">"ارتعاش کو کنٹرول کریں"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"ایپ کو وائبریٹر کنٹرول کرنے کی اجازت دیتا ہے۔"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"ایپ کو وائبریٹر اسٹیٹ تک رسائی حاصل کرنے کی اجازت دیتا ہے۔"</string>
@@ -442,13 +453,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"کالںگ کا تجربہ بہتر بنانے کے لیے سسٹم کے ذریعہ ایپ کو کالز روٹ کرنے کی اجازت دیتا ہے۔"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"سسٹم کے ذریعے کالز دیکھیں اور کنٹرول کریں۔"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"ایپ کو آلہ پر جاری کالز دیکھنے اور کنٹرول کرنے کی اجازت دیں۔ اس میں کالز کیلئے کال نمبرز اور کالز کی حالت جیسی معلومات شامل ہیں۔"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"دوسری ایپ کی کال جاری رکھیں"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"ایپ کو دوسری ایپ میں شروع کردہ کال کو جاری رکھنے کی اجازت ملتی ہے۔"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"فون نمبرز پڑھیں"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"ایپ کو آلہ کے فون نمبرز تک رسائی کرنے دیتا ہے۔"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"کار کی اسکرین آن رکھیں"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ٹیبلیٹ کو سلیپ وضع میں جانے سے روکیں"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"اپنے Android TV کو سلیپ وضع میں جانے سے روکیں"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"فون کو سلیپ وضع میں جانے سے روکیں"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"ایپ کو کار کی اسکرین آن رکھنے کی اجازت دیتا ہے۔"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"ایپ کو ٹیبلیٹ کو سلیپ وضع میں جانے سے روکنے کی اجازت دیتا ہے"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"ایپ کو آپ کے Android TV آلہ کو سلیپ وضع میں جانے سے روکنے کی اجازت دیتا ہے۔"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"ایپ کو فون کو سلیپ وضع میں جانے سے روکنے کی اجازت دیتا ہے"</string>
@@ -546,8 +563,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"دوبارہ کوشش کریں۔"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"کوئی فنگر پرنٹ مندرج شدہ نہیں ہے۔"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"اس آلہ میں فنگر پرنٹ سینسر نہیں ہے۔"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"سینسر عارضی طور غیر فعال ہے۔"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"انگلی <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +607,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"چہرے کی توثیق نہیں کی جا سکی۔ پھر آزمائيں۔"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"آپ نے بذریعہ چہرہ غیر مقفل کرنے کو سیٹ نہیں کیا ہے۔"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"اس آلہ پر چہرے کے ذریعے غیر مقفل کرنا تعاون یافتہ نہیں ہے۔"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"سینسر عارضی طور غیر فعال ہے۔"</string>
<string name="face_name_template" msgid="3877037340223318119">"چہرہ <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1268,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"موبائل نیٹ ورک کو انٹرنیٹ تک رسائی حاصل نہیں ہے"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"نیٹ ورک کو انٹرنیٹ تک رسائی حاصل نہیں ہے"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"نجی DNS سرور تک رسائی حاصل نہیں کی جا سکی"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"منسلک ہے"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> کی کنیکٹوٹی محدود ہے"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"بہر حال منسلک کرنے کے لیے تھپتھپائیں"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> پر سوئچ ہو گیا"</string>
@@ -1318,6 +1332,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB ڈیبگ کرنا مربوط ہو گیا"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB ڈیبگنگ آف کرنے کے لیے تھپتھپائیں"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB ڈیبگ کرنے کو غیر فعال کرنے کیلئے منتخب کریں۔"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"وائرلیس ڈیبگنگ منسلک ہے"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"وائرلیس ڈیبگنگ آف کرنے کے لیے تھپتھپائیں"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"وائرلیس ڈیبگنگ کرنے کو غیر فعال کرنے کے ليے منتخب کریں۔"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"ٹیسٹ ہارنیس موڈ فعال ہے"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"ٹیسٹ ہارنیس موڈ غیر فعال کرنے کے لیے فیکٹری ری سیٹ کریں۔"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"شمار کونسول فعال ہے"</string>
@@ -1621,10 +1638,29 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"پس منظر <xliff:g id="PACKAGENAME">%1$s</xliff:g> سے شروع کی گئی پیش منظر کی سروس کو مستقبل کے R بلڈز میں استعمال کے دوران اجازت نہیں ہوگی۔ براہ کرم go/r-bg-fgs-restriction دیکھیں اور بگ رپورٹ دائر کریں۔"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"والیوم کو تجویز کردہ سطح سے زیادہ کریں؟\n\nزیادہ وقت تک اونچی آواز میں سننے سے آپ کی سماعت کو نقصان پہنچ سکتا ہے۔"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ایکسیسبیلٹی شارٹ کٹ استعمال کریں؟"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"شارٹ کٹ آن ہونے پر، 3 سیکنڈ تک دونوں والیوم بٹنز کو دبانے سے ایک ایکسیسبیلٹی خصوصیت شروع ہو جائے گی۔"</string>
+ <!-- no translation found for accessibility_enable_service_title (3931558336268541484) -->
+ <skip />
+ <!-- no translation found for accessibility_enable_service_encryption_warning (8603532708618236909) -->
+ <skip />
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"مکمل کنٹرول ان ایپس کے لیے مناسب ہے جو ایکسیسبیلٹی کی ضروریات میں آپ کی مدد کرتی ہیں، لیکن زیادہ تر ایپس کیلئے مناسب نہیں۔"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"اسکرین کو دیکھیں اور کنٹرول کریں"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"یہ تمام مواد کو اسکرین پر پڑھ اور دیگر ایپس پر مواد کو ڈسپلے کر سکتا ہے۔"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"کارروائیاں دیکھیں اور انجام دیں"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"یہ آپ کے تعاملات کو ایپ یا ہارڈویئر سینسر کے ذریعے ٹریک کر سکتا ہے، اور آپ کی طرف سے ایپ کے ساتھ تعمل کر سکتا ہے۔"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"اجازت دیں"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"مسترد کریں"</string>
+ <!-- no translation found for accessibility_select_shortcut_menu_title (6002726538854613272) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_button_title (2062625107544922685) -->
+ <skip />
+ <!-- no translation found for accessibility_edit_shortcut_menu_volume_title (2831697927653841895) -->
+ <skip />
+ <!-- no translation found for accessibility_uncheck_legacy_item_warning (8047830891064817447) -->
<skip />
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"شارٹ کٹس میں ترمیم کریں"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"منسوخ کریں"</string>
+ <!-- no translation found for done_accessibility_shortcut_menu_button (3668407723770815708) -->
+ <skip />
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"شارٹ کٹ آف کریں"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"شارٹ کٹ استعمال کریں"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"رنگوں کی تقلیب"</string>
@@ -1845,6 +1881,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"غیر زمرہ بند"</string>
<string name="importance_from_user" msgid="2782756722448800447">"ان اطلاعات کی اہمیت آپ مقرر کرتے ہیں۔"</string>
<string name="importance_from_person" msgid="4235804979664465383">"اس میں موجود لوگوں کی وجہ سے یہ اہم ہے۔"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"حسب ضرورت ایپ کی اطلاع"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> کو <xliff:g id="ACCOUNT">%2$s</xliff:g> کے ساتھ ایک نیا صارف بنانے کی اجازت دیں (اس اکاؤنٹ کے ساتھ ایک صارف پہلے سے موجود ہے) ؟"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="ACCOUNT">%2$s</xliff:g> کے ساتھ نئے صارف کو تخلیق کرنے کے لیے <xliff:g id="APP">%1$s</xliff:g> کو اجازت دیں ؟"</string>
<string name="language_selection_title" msgid="52674936078683285">"ایک زبان شامل کریں"</string>
@@ -2016,22 +2053,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ایکسیسبیلٹی مینو"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> کی کیپشن بار۔"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> کو پابند کردہ بکٹ میں رکھ دیا گیا ہے"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"ذاتی"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"دفتر"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"ذاتی ملاحظہ"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"دفتری ملاحظہ"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"ورک ایپس کے ساتھ اشتراک نہیں کر سکتے"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"ذاتی ایپس کے ساتھ اشتراک نہیں کر سکتے"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"آپ کے IT منتظم نے ذاتی اور دفتری پروفائلز کے درمیان اشتراک کرنے کو مسدود کر دیا"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"دفتری ایپس تک رسائی حاصل نہیں کی جا سکتی"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"آپ کا IT منتظم آپ کو دفتری ایپس میں ذاتی مواد دیکھنے کی اجازت نہیں دیتا ہے"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"ذاتی ایپس تک رسائی حاصل نہیں کی جا سکتی"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"آپ کا IT منتظم آپ کو ذاتی ایپس میں دفتری مواد دیکھنے کی اجازت نہیں دیتا ہے"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"مواد کا اشتراک کرنے کے لیے دفتری پروفائل آن کریں"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"مواد دیکھنے کے ليے دفتری پروفائل آن کریں"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"کوئی ایپ دستیاب نہیں"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"آن کریں"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"ٹیلیفون کالز میں آڈیو ریکارڈ کریں یا چلائیں"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"اس ایپ کو، جب ڈیفالٹ ڈائلر ایپلیکیشن کے بطور تفویض کیا جاتا ہے، تو ٹیلیفون کالز میں آڈیو ریکارڈ کرنے یا چلانے کی اجازت دیتا ہے۔"</string>
</resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index ee5a7d2..a655a84 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tashkilotingiz bu qurilmani boshqaradi va tarmoq trafigini nazorat qilishi mumkin. Tafsilotlar uchun bosing."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Joylashuv sozlamalari administratoringiz tomonidan oʻzgartirildi"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Joylashuv sozlamalarini koʻrish uchun bosing."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Mamlakatni aniqlash"</string>
+ <string name="location_service" msgid="2439187616018455546">"Joylashuvni aniqlash xizmati"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS xizmati"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Sensorli bildirishnoma xizmati"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight xizmati"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Qurilmangizdagi ma’lumotlar o‘chirib tashlanadi"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Administrator ilovasini ishlatib bo‘lmaydi. Qurilmada barcha ma’lumotlar o‘chirib tashlanadi.\n\nSavollaringiz bo‘lsa, administrator bilan bog‘laning."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Chop etish funksiyasi <xliff:g id="OWNER_APP">%s</xliff:g> tomonidan faolsizlantirilgan."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Xatoliklar hisoboti uchun skrinshot <xliff:g id="NUMBER_1">%d</xliff:g> soniyadan so‘ng olinadi.</item>
<item quantity="one">Xatoliklar hisoboti uchun skrinshot <xliff:g id="NUMBER_0">%d</xliff:g> soniyadan so‘ng olinadi.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Xatoliklar hisoboti bilan skrinshot olindi"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Xatoliklar hisoboti bilan skrinshot olinmadi"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Ovozsiz rejim"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Tovush o‘chirilgan"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"YONIQ"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"qo‘shimcha manzillarga kirish buyruqlari"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ilovaga qo‘shimcha joylashuv xizmati buyruqlaridan foydalanishga ruxsat beradi. Uning yordamida ilova GPS yoki boshqa joylashuv ma’lumoti manbalarining ishlashiga xalaqit qilishi mumkin."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"aniq joylashuv axborotini olishga faqat old fonda ruxsat"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Bu ilova faqat fon rejimida aniq joylashuv axborotingizdan foydalanishi mumkin. Ilova joylashuv xizmatlaridan foydalana olishi uchun ular qurilmangizda yoniq turishi va ishlashi kerak. Bunda batareya sarfi oshishi mumkin."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Bu ilova ishlayotganida u joylashuvni aniqlash xizmatidan aniq joylashuv axborotini olishi mumkin. Ilova joylashuv axborotidan foydalana olishi uchun qurilmangizda joylashuvni aniqlash xizmati yoqilishi kerak. Bunda batareya quvvati tezroq sarflanishi mumkin."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"taxminiy joylashuv axborotini olishga faqat old fonda ruxsat"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Bu ilova faqat fon rejimida taxminiy joylashuv axborotingizdan foydalanishi mumkin. Ilova joylashuv xizmatlaridan foydalana olishi uchun ular avtomobilingizda yoniq boʻlishi va ishlashi kerak."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Bu ilova ishlayotganida u joylashuvni aniqlash xizmatidan taxminiy joylashuv axborotini olishi mumkin. Ilova joylashuv axborotidan foydalana olishi uchun qurilmangizda joylashuvni aniqlash xizmati yoqilishi kerak."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"fonda joylashuv axborotidan foydalanish"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Bu ilova joylashuv axborotidan orqa fonda ham, old fonda ham foydalanishi mumkin."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Bu ilova ishlamayotganida ham istalgan vaqt joylashuv axborotidan foydalanishi mumkin."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"audio sozlamalaringizni o‘zgartirish"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ilovalarga tovush va ovoz chiqarish uchun foydalaniladigan karnay kabi global audio sozlamalarini o‘zgartirish uchun ruxsat beradi."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ovoz yozib olish"</string>
@@ -429,9 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Bu ilova xohlagan vaqtda kamera orqali suratga olishi va video yozib olishi mumkin."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Ilova yoki xizmatga tizim kamerasi orqali surat va videolar olishga ruxsat berish"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Bu imtiyozli | tizim ilovasi istalgan vaqtda tizim kamerasi orqali surat va videolar olishi mumkin. Ilovada android.permission.CAMERA ruxsati ham yoqilgan boʻlishi talab qilinadi"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Ilova yoki xizmatga kamera qurilmalari ochilayotgani yoki yopilayotgani haqida qayta chaqiruvlar qabul qilishi uchun ruxsat berish."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Bu imzo ilovasi har qanday kamera qurilmasi ochilayotganda (istalgan ilova paketi tarafidan) yoki yopilayotganda qayta chaqiruvlar qabul qilishi mumkin."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"tebranishni boshqarish"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Ilova tebranishli signallarni boshqarishi mumkin."</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ilovaga tebranish holatiga kirish ruxsatini beradi."</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ilovaga tebranish holatini aniqlash ruxsatini beradi."</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"telefon raqamlariga tog‘ridan to‘g‘ri qo‘ng‘iroq qilish"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"Ilovaga sizning yordamingizsiz telefonga qo‘ng‘iroq qilish imkonini beradi. Bu kutilmagan qo‘ng‘iroqlarni amalga oshirishi yoki ortiqcha to‘lovlarni yuzaga keltirishi mumkin. Shunga e’tibor qilinki, u favqulodda telefon raqamlariga qo‘ng‘iroqlar qilishga ruxsat bermaydi. Zararli ilovalar sizdan so‘ramasdan qo‘ng‘iroqlarni amalga oshirib, pulingizni sarflashi mumkin."</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"IMS qo‘ng‘iroq xizmatiga kirish"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Ilova aloqa sifatini yaxshilash maqsadida chaqiruvlarni tizim orqali yo‘naltirishi mumkin."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"tizim orqali chaqiruvlarni tekshirish va boshqarish."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Ilovaga qurilmadagi amaldagi chaqiruvlarni tekshirish va boshqarish imkonini beradi. Shuningdek, chaqiruvlar holati va kiruvchi-chiquvchi chaqiruv raqamlari axborotiga ham ruxsat beradi."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"chaqiruvni boshqa ilovada davom ettirish"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Ilovaga boshqa ilovada boshlangan chaqiruvni davom ettirish imkon beradi"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"telefon raqamlarini o‘qish"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Ilovaga qurilmaning telefon raqamlaridan foydalanishiga ruxsat beradi."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"avtomobil ekranini yoniq holatda saqlab turish"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"planshetni uyquga ketishiga yo‘l qo‘ymaslik"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"Android TV qurilmasining uyqu rejimiga kirishining oldini olish"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"telefonni uxlashiga yo‘l qo‘ymaslik"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Ilova avtomobil ekranini yoniq holatda saqlaydi."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Ilova planshetning uyqu rejimiga o‘tib qolishining oldini olishi mumkin."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Ilovaga Android TV qurilmangizning uyqu rejimiga oʻtishining oldini olish huquqini beradi."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Ilova telefonning uyqu rejimiga o‘tib qolishining oldini olishi mumkin."</string>
@@ -1251,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mobil tarmoq internetga ulanmagan"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Tarmoq internetga ulanmagan"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Xususiy DNS server ishlamayapti"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Ulandi"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> nomli tarmoqda aloqa cheklangan"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Baribir ulash uchun bosing"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"<xliff:g id="NETWORK_TYPE">%1$s</xliff:g> tarmog‘iga ulanildi"</string>
@@ -1316,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"USB orqali nosozliklarni aniqlash"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"USB orqali nosozliklarni aniqlashni faolsizlantirish uchun bosing"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"USB orqali nosozliklarni tuzatishni o‘chirib qo‘yish uchun bosing."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Simsiz tarmoq nosozliklari faqat ulangan tarmoqda aniqlanadi"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Simsiz tarmoqdagi nosozliklar aniqlanishini faolsizlantirish uchun bosing"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Simsiz tarmoqdagi nosozliklar aniqlanishini faolsizlantirish uchun bosing."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Xavfsizlik sinovi rejimi yoqildi"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Xavfsizlik sinovi rejimini faolsizlantirish uchun zavod sozlamalariga qaytaring."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Davomiy port terminali yoqildi"</string>
@@ -1619,9 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fonda faol <xliff:g id="PACKAGENAME">%1$s</xliff:g> xizmatini ishga tushirish uchun kelgusi R nashrlarida ishlatilayotganda ruxsat berish imkoniyati boʻlmaydi. go/r-bg-fgs-restriction sahifasiga kiring va xatolik hisobotini yuboring."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Tovush balandligi tavsiya etilgan darajadan ham yuqori qilinsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Tezkor ishga tushirishdan foydalanilsinmi?"</string>
- <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Maxsus imkoniyatlar funksiyasidan foydalanish uchun u yoniqligida ikkala ovoz balandligini boshqarish tugmasini 3 soniya bosib turing."</string>
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Maxsus imkoniyatlar funksiyasidan foydalanish uchun u yoniqligida ikkala tovush tugmasini 3 soniya bosib turing."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"<xliff:g id="SERVICE">%1$s</xliff:g> xizmatiga qurilmangizni boshqarish uchun toʻliq ruxsat berilsinmi?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Agar <xliff:g id="SERVICE">%1$s</xliff:g> xizmatini yoqsangiz, qurilmangiz maʼlumotlarni shifrlashni kuchaytirish uchun ekran qulfidan foydalanmaydi."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Toʻliq nazorat maxsus imkoniyatlar bilan ishlovchi ilovalar uchun mos, lekin barcha ilovalar uchun emas."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Ekranni ochish va boshqarish"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Ekrandagi barcha kontentni oʻqishi va kontentni boshqa ilovalar ustida ochishi mumkin."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Harakatlarni koʻrish va bajarish"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ilova yoki qurilma sensori bilan munosabatlaringizni kuzatishi hamda sizning nomingizdan ilovalar bilan ishlashi mumkin."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Ruxsat"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Rad etish"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Funksiyadan foydalanish uchun ustiga bosing:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Maxsus imkoniyatlar tugmasi bilan foydalanish uchun ilovalarni tanlang"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Tovush balandligi tugmasi bilan foydalanish uchun ilovalarni tanlang"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> faolsizlantirildi"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Tezkor tugmalarni tahrirlash"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Bekor qilish"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"OK"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Tezkor ishga tushirishni o‘chirib qo‘yish"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Tezkor ishga tushirishdan foydalanish"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ranglarni akslantirish"</string>
@@ -1842,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Turkumlanmagan"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Siz ushbu bildirishnomalarning muhimligini belgilagansiz."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Bu odamlar siz uchun muhim."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Maxsus ilova bildirishnomasi"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"<xliff:g id="APP">%1$s</xliff:g> ilovasiga <xliff:g id="ACCOUNT">%2$s</xliff:g> hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi (bunday hisobdagi foydalanuvchi allaqachon mavjud) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"<xliff:g id="APP">%1$s</xliff:g> ilovasiga <xliff:g id="ACCOUNT">%2$s</xliff:g> hisobi bilan yangi foydalanuvchi yaratishiga ruxsat berilsinmi ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Til qoʻshish"</string>
@@ -2013,14 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Maxsus imkoniyatlar menyusi"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> taglavhalar paneli."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> cheklangan turkumga joylandi"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Shaxsiy"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Ish"</string>
- <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ishchi ilovalarga ulashilmaydi"</string>
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Shaxsiy rejim"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Ishchi rejim"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ishga oid ilovalarga ulashilmaydi"</string>
<string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Shaxsiy ilovalarga ulashilmaydi"</string>
- <string name="resolver_cant_share_cross_profile_explanation" msgid="3536237105241882679">"Shaxsiy va ishchi ilovalararo axborot ulashish AT administratori tomonidan taqiqlangan"</string>
- <string name="resolver_turn_on_work_apps" msgid="8987359079870455469">"Ishchi ilovalarni yoqish"</string>
- <string name="resolver_turn_on_work_apps_explanation" msgid="6322467455509618928">"Ishchi ilova va kontaktlarni ochish uchun ishchi ilovalarni yoqing"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Shaxsiy va ishga oid profillararo axborot ulashish AT administratori tomonidan taqiqlangan"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ishga oid ilovalardan foydalanish imkonsiz"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"AT administratori ishga oid ilovalarda shaxsiy maʼlumotlarni ochishni taqiqlagan"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Shaxsiy ilovalardan foydalanish imkonsiz"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"AT administratori shaxsiy ilovalarda ishga oid kontentni ochishni taqiqlagan"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Kontentni ulashish uchun ishchi profilni yoqing"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Kontentni ochish uchun ishchi profilni yoqing"</string>
<string name="resolver_no_apps_available" msgid="7710339903040989654">"Mos ilova topilmadi"</string>
- <string name="resolver_no_apps_available_explanation" msgid="4662694431121196560">"Hech qanday ilova topilmadi"</string>
- <string name="resolver_switch_on_work" msgid="8294542702883688533">"Ishchi rejimni yoqish"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Yoqish"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Telefondagi suhbatlarni yozib olish va ularni ijro qilish"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Bu ilova chaqiruvlar uchun asosiy ilova sifatida tayinlanganda u telefon chaqiruvlarida suhbatlarni yozib olish va shu audiolarni ijro etish imkonini beradi."</string>
</resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index 1a8a275..412a7b7 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Tổ chức của bạn sẽ quản lý thiết bị này và có thể theo dõi lưu lượng truy cập mạng. Nhấn để biết chi tiết."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Quản trị viên của bạn đã thay đổi các tùy chọn cài đặt vị trí"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Nhấn để xem các tùy chọn cài đặt vị trí của bạn."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Trình phát hiện quốc gia"</string>
+ <string name="location_service" msgid="2439187616018455546">"Dịch vụ vị trí"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Dịch vụ GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Dịch vụ Thông báo của cảm biến"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Dịch vụ Twilight"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Thiết bị của bạn sẽ bị xóa"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Không thể sử dụng ứng dụng quản trị. Thiết bị của bạn sẽ bị xóa ngay bây giờ.\n\nHãy liên hệ với quản trị viên của tổ chức nếu bạn có thắc mắc."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> đã tắt tính năng in."</string>
@@ -245,6 +250,8 @@
<item quantity="other">Sẽ chụp ảnh màn hình để báo cáo lỗi sau <xliff:g id="NUMBER_1">%d</xliff:g> giây.</item>
<item quantity="one">Sẽ chụp ảnh màn hình để báo cáo lỗi sau <xliff:g id="NUMBER_0">%d</xliff:g> giây.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Đã chụp được ảnh màn hình báo cáo lỗi"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Không chụp được ảnh màn hình báo cáo lỗi"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Chế độ im lặng"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Âm thanh TẮT"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Âm thanh BẬT"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"truy cập vào các lệnh của nhà cung cấp vị trí bổ sung"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Cho phép ứng dụng truy cập vào các lệnh của nhà cung cấp vị trí bổ sung. Điều này có thể cho phép ứng dụng can thiệp vào hoạt động của Hệ thống định vị toàn cầu (GPS) hoặc các nguồn vị trí khác."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"chỉ truy cập vị trí chính xác trong nền trước"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Ứng dụng này chỉ có thể nhận thông tin vị trí chính xác của bạn khi mở trên màn hình. Để ứng dụng có thể sử các dụng dịch vụ vị trí, thiết bị của bạn phải có các dịch vụ này và dịch vụ ở trạng thái bật. Hoạt động này có thể tăng mức tiêu thụ pin."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Khi bạn dùng ứng dụng này, ứng dụng có thể nhận được thông tin vị trí chính xác của bạn từ dịch vụ vị trí. Bạn phải bật dịch vụ vị trí trên thiết bị của mình thì ứng dụng mới nhận được thông tin vị trí. Việc này có thể làm tăng mức sử dụng pin."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"chỉ truy cập thông tin vị trí gần đúng khi ứng dụng mở trên màn hình"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Ứng dụng này chỉ có thể nhận được thông tin vị trí gần đúng của bạn khi mở trên màn hình. Để ứng dụng có thể dùng các dịch vụ vị trí này, thiết bị của bạn phải có các dịch vụ này và dịch vụ ở trạng thái bật."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Khi bạn dùng ứng dụng này, ứng dụng có thể nhận được thông tin vị trí gần đúng của bạn từ dịch vụ vị trí. Bạn phải bật dịch vụ vị trí trên thiết bị của mình thì ứng dụng mới nhận được thông tin vị trí."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"truy cập vào vị trí trong nền"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Ngoài quyền truy cập vào thông tin vị trí khi mở trên màn hình, ứng dụng này còn có thể truy cập vào thông tin vị trí khi đang chạy trong nền."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Ứng dụng này có thể truy cập vào thông tin vị trí bất cứ lúc nào, ngay cả khi bạn không dùng ứng dụng đó."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"thay đổi cài đặt âm thanh của bạn"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Cho phép ứng dụng sửa đổi cài đặt âm thanh chung chẳng hạn như âm lượng và loa nào được sử dụng cho thiết bị ra."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"ghi âm"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Ứng dụng này có thể chụp ảnh và quay video bằng máy ảnh bất cứ lúc nào."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Cho phép một ứng dụng hoặc dịch vụ truy cập vào máy ảnh hệ thống để chụp ảnh và quay video"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Ứng dụng hệ thống/đặc quyền này có thể dùng máy ảnh hệ thống để chụp ảnh và quay video bất cứ lúc nào. Ngoài ra, ứng dụng này cũng cần có quyền android.permission.CAMERA"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Cho phép một ứng dụng hoặc dịch vụ nhận lệnh gọi lại khi các thiết bị máy ảnh đang được mở/đóng."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Ứng dụng chữ ký này có thể nhận các lệnh gọi lại khi có bất kỳ thiết bị máy ảnh nào đang được mở (bằng gói ứng dụng) hoặc đóng."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"kiểm soát rung"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Cho phép ứng dụng kiểm soát bộ rung."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Cho phép ứng dụng truy cập vào trạng thái bộ rung."</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Cho phép ứng dụng định tuyến cuộc gọi thông qua hệ thống nhằm cải thiện trải nghiệm gọi điện."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"xem và kiểm soát cuộc gọi thông qua hệ thống."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Cho phép ứng dụng xem và kiểm soát cuộc gọi đến trên thiết bị. Ứng dụng sẽ xem và kiểm soát các thông tin như số điện thoại của các cuộc gọi và trạng thái cuộc gọi."</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"tiếp tục cuộc gọi từ một ứng dụng khác"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Cho phép ứng dụng tiếp tục cuộc gọi được bắt đầu trong một ứng dụng khác."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"đọc số điện thoại"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Cho phép ứng dụng truy cập số điện thoại của thiết bị."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"duy trì trạng thái bật của màn hình ô tô"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"ngăn máy tính bảng chuyển sang chế độ ngủ"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"ngăn thiết bị Android TV chuyển sang chế độ ngủ"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"ngăn điện thoại chuyển sang chế độ ngủ"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Cho phép ứng dụng này duy trì trạng thái bật của màn hình ô tô."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Cho phép ứng dụng ngăn máy tính bảng chuyển sang chế độ ngủ."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Cho phép ứng dụng ngăn thiết bị Android TV chuyển sang chế độ ngủ."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Cho phép ứng dụng ngăn điện thoại chuyển sang chế độ ngủ."</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Thử lại."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Chưa đăng ký vân tay."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Thiết bị này không có cảm biến vân tay."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Đã tạm thời tắt cảm biến."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Ngón tay <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Không thể xác minh khuôn mặt. Hãy thử lại."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Bạn chưa thiết lập tính năng mở khóa bằng khuôn mặt."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"Thiết bị này không hỗ trợ tính năng mở khóa bằng khuôn mặt."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Đã tạm thời tắt cảm biến."</string>
<string name="face_name_template" msgid="3877037340223318119">"Khuôn mặt <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Mạng di động không có quyền truy cập Internet"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Mạng không có quyền truy cập Internet"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Không thể truy cập máy chủ DNS riêng tư"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Đã kết nối"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> có khả năng kết nối giới hạn"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Nhấn để tiếp tục kết nối"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Đã chuyển sang <xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Đã kết nối chế độ gỡ lỗi qua USB"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Nhấn để tắt chế độ gỡ lỗi qua USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Chọn để tắt chế độ gỡ lỗi qua USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Đã kết nối tính năng gỡ lỗi không dây"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Nhấn để tắt tính năng gỡ lỗi không dây"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Chọn để tắt tính năng gỡ lỗi không dây."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Đã bật Chế độ khai thác kiểm thử"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Khôi phục cài đặt gốc để tắt Chế độ khai thác kiểm thử."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"Đã bật bảng điều khiển cổng nối tiếp"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Dịch vụ trên nền trước đã bắt đầu ở nền từ <xliff:g id="PACKAGENAME">%1$s</xliff:g> sẽ không có quyền khi đang sử dụng trong các bản dựng R trong tương lai. Vui lòng xem go/r-bg-fgs-restriction và gửi báo cáo lỗi."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bạn tăng âm lượng lên quá mức khuyên dùng?\n\nViệc nghe ở mức âm lượng cao trong thời gian dài có thể gây tổn thương thính giác của bạn."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sử dụng phím tắt Hỗ trợ tiếp cận?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Khi phím tắt này đang bật, thao tác nhấn cả hai nút âm lượng trong 3 giây sẽ mở tính năng hỗ trợ tiếp cận."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Cho phép <xliff:g id="SERVICE">%1$s</xliff:g> toàn quyền kiểm soát thiết bị của bạn?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Nếu bạn bật <xliff:g id="SERVICE">%1$s</xliff:g>, thiết bị của bạn sẽ không dùng phương thức khóa màn hình để tăng cường mã hóa dữ liệu."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Bạn chỉ nên cấp toàn quyền kiểm soát cho những ứng dụng trợ giúp mình khi cần hỗ trợ tiếp cận, chứ không nên cấp cho hầu hết các ứng dụng."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Xem và điều khiển màn hình"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Dịch vụ này có thể đọc toàn bộ nội dung trên màn hình và hiển thị nội dung trên các ứng dụng khác."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Xem và thực hiện hành động"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Dịch vụ này có thể theo dõi các hoạt động tương tác của bạn với một ứng dụng hoặc bộ cảm biến phần cứng, cũng như có thể thay mặt bạn tương tác với các ứng dụng."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Cho phép"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Từ chối"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Nhấn vào một tính năng để bắt đầu sử dụng:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Chọn ứng dụng để dùng với nút hỗ trợ tiếp cận"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Chọn ứng dụng để dùng với phím tắt là phím âm lượng"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> đã bị tắt"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Chỉnh sửa phím tắt"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Hủy"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Xong"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Tắt phím tắt"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sử dụng phím tắt"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Đảo màu"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Chưa được phân loại"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Bạn đặt tầm quan trọng của các thông báo này."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Thông báo này quan trọng vì những người có liên quan."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Thông báo tùy chỉnh cho ứng dụng"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Cho phép <xliff:g id="APP">%1$s</xliff:g> tạo người dùng mới bằng <xliff:g id="ACCOUNT">%2$s</xliff:g> (đã tồn tại người dùng có tài khoản này)?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Cho phép <xliff:g id="APP">%1$s</xliff:g> tạo người dùng mới bằng <xliff:g id="ACCOUNT">%2$s</xliff:g>?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Thêm ngôn ngữ"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Trình đơn Hỗ trợ tiếp cận"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Thanh phụ đề của <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Đã đưa <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> vào bộ chứa BỊ HẠN CHẾ"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Cá nhân"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Cơ quan"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Chế độ xem cá nhân"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Chế độ xem công việc"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Không thể chia sẻ với các ứng dụng công việc"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Không thể chia sẻ với các ứng dụng cá nhân"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Quản trị viên CNTT của bạn đã chặn hoạt động chia sẻ giữa các hồ sơ cá nhân và công việc"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Không thể truy cập vào các ứng dụng công việc"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Quản trị viên CNTT của bạn không cho phép bạn xem nội dung cá nhân trong các ứng dụng công việc"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Không thể truy cập vào các ứng dụng cá nhân"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Quản trị viên CNTT của bạn không cho phép bạn xem nội dung công việc trong các ứng dụng cá nhân"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Bật hồ sơ công việc để chia sẻ nội dung"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Bật hồ sơ công việc để xem nội dung"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Không có ứng dụng nào"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Bật"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Ghi âm hoặc phát âm thanh trong cuộc gọi điện thoại"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Cho phép ứng dụng này ghi âm hoặc phát âm thanh trong cuộc gọi điện thoại khi được chỉ định làm ứng dụng trình quay số mặc định."</string>
</resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 2339a44..51cfe09 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"贵单位会管理该设备,且可能会监控网络流量。点按即可了解详情。"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"您的管理员已更改位置信息设置"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"点按即可查看您的位置信息设置。"</string>
+ <string name="country_detector" msgid="7023275114706088854">"国家/地区检测器"</string>
+ <string name="location_service" msgid="2439187616018455546">"位置信息服务"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS 服务"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"传感器通知服务"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight 服务"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"系统将清空您的设备"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"无法使用管理应用,系统现在将清空您的设备。\n\n如有疑问,请与您所在单位的管理员联系。"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"“<xliff:g id="OWNER_APP">%s</xliff:g>”已停用打印功能。"</string>
@@ -245,6 +250,8 @@
<item quantity="other">系统将在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒后对错误报告进行截屏。</item>
<item quantity="one">系统将在 <xliff:g id="NUMBER_0">%d</xliff:g> 秒后对错误报告进行截屏。</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"已截取错误报告的屏幕截图"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"无法截取错误报告的屏幕截图"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"静音模式"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"声音已关闭"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"声音已开启"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"获取额外的位置信息提供程序命令"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允许该应用使用其他的位置信息提供程序命令。此权限使该应用可以干扰GPS或其他位置信息源的运作。"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"只能在前台获取精确的位置信息"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"此应用只有在前台运行时才能获取您的精确位置信息。您的设备必须支持并开启位置信息服务,此应用才能使用这些服务。这可能会增加耗电量。"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"当您使用此应用时,此应用可以通过位置信息服务获取您的确切位置信息。您必须开启设备的位置信息服务,此应用才能获取位置信息。这可能会增加耗电量。"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"只有在前台运行时才能获取大致位置信息"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"此应用只有在前台运行时才能获取您的大致位置信息。您的设备必须支持并开启位置信息服务,此应用才能使用这些服务。"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"当您使用此应用时,此应用可以通过位置信息服务获取您的大致位置信息。您必须开启设备的位置信息服务,此应用才能获取位置信息。"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在后台使用位置信息"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"此应用不仅在前台运行时可以获取位置信息,在后台运行时也能获取位置信息。"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"即使您并未使用此应用,此应用也可以随时访问位置信息。"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"更改您的音频设置"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允许该应用修改全局音频设置,例如音量和用于输出的扬声器。"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"录音"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"此应用可随时使用相机拍摄照片和录制视频。"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"要拍照或录制视频,请允许应用或服务访问系统相机"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"获取访问权限后,这个系统应用就随时可以使用系统相机拍照及录制视频。另外,应用还需要获取 android.permission.CAMERA 权限"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允许应用或服务接收与打开或关闭摄像头设备有关的回调。"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"此签名应用可在任何摄像头设备(被某些应用软件包)打开或关闭时接收相应回调。"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"控制振动"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"允许应用控制振动器。"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"允许该应用访问振动器状态。"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"允许该应用通过系统转接来电,以改善通话体验。"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"查看并控制通过系统拨打的电话。"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"允许应用查看并控制设备上正在进行的通话,其中包括通话号码和通话状态等信息。"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"继续进行来自其他应用的通话"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"允许该应用继续进行在其他应用中发起的通话。"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"读取电话号码"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"允许该应用访问设备上的电话号码。"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"使车载显示屏保持开启状态"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"阻止平板电脑进入休眠状态"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"阻止 Android TV 设备进入休眠状态"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"防止手机休眠"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"允许该应用使车载显示屏保持开启状态。"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"允许应用阻止平板电脑进入休眠状态。"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"允许应用阻止 Android TV 设备进入休眠状态。"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"允许应用阻止手机进入休眠状态。"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"请重试。"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未注册任何指纹。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"此设备没有指纹传感器。"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"传感器已暂时停用。"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"无法验证人脸,请重试。"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"您尚未设置人脸解锁。"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"此设备不支持人脸解锁。"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"传感器已暂时停用。"</string>
<string name="face_name_template" msgid="3877037340223318119">"面孔 <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"此移动网络无法访问互联网"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"此网络无法访问互联网"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"无法访问私人 DNS 服务器"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"已连接"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> 的连接受限"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"点按即可继续连接"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"已切换至<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"已连接到 USB 调试"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"点按即可关闭 USB 调试"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"选择即可停用 USB 调试功能。"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"已连接到无线调试"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"点按即可关闭无线调试功能"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"选择即可停用无线调试功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"自动化测试框架模式已启用"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"恢复出厂设置以停用自动化测试框架模式。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已启用序列控制台"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"在未来的 R 版本中,在后台启动的 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 中的前台服务将不具有仅在使用时授予的权限。请访问 go/r-bg-fgs-restriction 并提交错误报告。"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要将音量调高到建议的音量以上吗?\n\n长时间保持高音量可能会损伤听力。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用无障碍快捷方式吗?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"启用这项快捷方式后,同时按下两个音量按钮 3 秒钟即可启动无障碍功能。"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允许<xliff:g id="SERVICE">%1$s</xliff:g>完全控制您的设备吗?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您开启<xliff:g id="SERVICE">%1$s</xliff:g>,您的设备将无法使用屏幕锁定功能来增强数据加密效果。"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"对于能满足您的无障碍功能需求的应用,可授予其完全控制权限;但对大部分应用来说,都不适合授予此权限。"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"查看和控制屏幕"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"此功能可以读出屏幕上的所有内容,并在其他应用上层显示内容。"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"查看及执行操作"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"此功能可以跟踪您与应用或硬件传感器的互动,并代表您与应用互动。"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允许"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒绝"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"点按相应功能即可开始使用:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"选择可通过“无障碍”按钮使用的应用"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"选择可通过音量键快捷方式使用的应用"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"已关闭<xliff:g id="SERVICE_NAME">%s</xliff:g>"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"修改快捷方式"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"取消"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"关闭快捷方式"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快捷方式"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"颜色反转"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"未分类"</string>
<string name="importance_from_user" msgid="2782756722448800447">"这些通知的重要程度由您来设置。"</string>
<string name="importance_from_person" msgid="4235804979664465383">"这条通知涉及特定的人,因此被归为重要通知。"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"自定义应用通知"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"允许<xliff:g id="APP">%1$s</xliff:g>使用 <xliff:g id="ACCOUNT">%2$s</xliff:g>(目前已有用户使用此帐号)创建新用户吗?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"允许<xliff:g id="APP">%1$s</xliff:g>使用 <xliff:g id="ACCOUNT">%2$s</xliff:g> 创建新用户吗?"</string>
<string name="language_selection_title" msgid="52674936078683285">"添加语言"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"无障碍功能菜单"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>的标题栏。"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已被放入受限存储分区"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"个人"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"工作"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"个人视图"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"工作视图"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"无法与工作应用共享数据"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"无法与个人应用共享数据"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"您的 IT 管理员已禁止个人资料和工作资料之间的共享"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"无法访问工作应用"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"您的 IT 管理员不允许您在工作应用中查看个人内容"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"无法访问个人应用"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"您的 IT 管理员不允许您在个人应用中查看工作内容"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"若想共享内容,请开启工作资料"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"若想查看内容,请开启工作资料"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"没有可用的应用"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"开启"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"录制或播放电话通话音频"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"允许此应用在被指定为默认拨号器应用时录制或播放电话通话音频。"</string>
</resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index 94783a0..a6027c3 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"您的機構會管理此裝置,並可能會監控網絡流量。輕按即可瞭解詳情。"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"您的管理員變更了位置設定"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"輕按即可查看位置設定。"</string>
+ <string name="country_detector" msgid="7023275114706088854">"國家/地區偵測器"</string>
+ <string name="location_service" msgid="2439187616018455546">"定位服務"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS 服務"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"感應器通知服務"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"暮光服務"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"您的裝置將被清除"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理員應用程式。系統會現在清除您的裝置。\n\n如有任何疑問,請聯絡您的機構管理員。"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」暫停了列印。"</string>
@@ -245,6 +250,8 @@
<item quantity="other">系統將在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
<item quantity="one">系統將在 <xliff:g id="NUMBER_0">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"已為錯誤報告擷取螢幕截圖"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"無法為錯誤報告擷取螢幕截圖"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"靜音模式"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"關閉音效"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"音效已開啟"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"接收額外的位置提供者指令"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允許應用程式存取額外的位置提供者指令。這項設定可能會使應用程式干擾 GPS 或其他位置來源的運作。"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"只在前景存取精確位置"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"此應用程式只可在前景執行時獲取您的確實位置資訊。您的裝置必須支援並已啟用定位服務,應用程式才能使用此功能。不過,這樣做可能會增加耗電量。"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"使用此應用程式時,應用程式可透過定位服務獲取您的精確位置。您的裝置必須開啟定位服務,才能讓應用程式獲取位置。這可能會增加電池用量。"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"只在前景存取大概位置"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"此應用程式只可在前景執行時獲取您的大概位置資訊。您的裝置必須支援並已啟用定位服務,應用程式才能使用此功能。"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"使用此應用程式時,應用程式可透過定位服務獲取您的大概位置。您的裝置必須開啟定位服務,才能讓應用程式獲取位置。"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在背景存取位置資訊"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"此應用程式除了可在前景存取位置資訊外,亦可在背景中存取位置。"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"即使您不使用此應用程式,它仍可隨時存取位置。"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"更改音效設定"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允許應用程式修改全域音頻設定,例如音量和用於輸出的喇叭。"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"錄製音效"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"此應用程式可以隨時使用相機拍照和攝錄。"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"允許應用程式或服務存取系統相機來拍照和攝錄"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"這個獲特別權限的系統應用程式可以在任何時候使用系統相機來拍照和攝錄。此外,應用程式亦需要 android.permission.CAMERA 權限"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允許應用程式或服務接收相機裝置開啟或關閉的相關回電。"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"當任何相機裝置在開啟 (由應用程式套件) 或關閉時,此簽名應用程式就能接收回電。"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"控制震動"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"允許應用程式控制震動。"</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"允許應用程式存取震動狀態。"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"允許應用程式透過系統轉接來電,以改善通話體驗。"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"透過系統查看和控制通話。"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"允許應用程式查看和控制裝置上正在進行的通話,當中包括通話號碼和通話狀態等資訊。"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"繼續進行來自其他應用程式的通話"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"允許應用程式繼續進行在其他應用程式中開始的通話。"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"讀取電話號碼"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"允許應用程式存取裝置上的電話號碼。"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"保持汽車螢幕開啟"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"防止平板電腦進入休眠狀態"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"防止 Android TV 裝置進入休眠狀態"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"防止手機進入休眠狀態"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"允許應用程式保持汽車螢幕開啟。"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"允許應用程式防止平板電腦進入休眠狀態。"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"允許應用程式防止 Android TV 裝置進入休眠狀態。"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"允許應用程式防止手機進入休眠狀態。"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"再試一次。"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未註冊任何指紋"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"此裝置沒有指紋感應器。"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"感應器已暫時停用。"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"無法驗證臉孔。請再試一次。"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"您尚未設定「臉孔解鎖」。"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"此裝置不支援「臉孔解鎖」。"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"感應器已暫時停用。"</string>
<string name="face_name_template" msgid="3877037340223318119">"臉孔 <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"流動網絡並未連接互聯網"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"網絡並未連接互聯網"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"無法存取私人 DNS 伺服器"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"已連接"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g>連線受限"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"仍要輕按以連結至此網絡"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"已切換至<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"已連接 USB 偵錯工具"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"輕按即可關閉 USB 偵錯功能"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"選取即可停用 USB 偵錯。"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"已連接無線偵錯"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"輕按即可關閉無線偵錯功能"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"選取即可停用無線偵錯功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"已啟用測試工具模式"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"請將裝置回復原廠設定,以停用測試工具模式。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已啟用序列控制器"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"從「<xliff:g id="PACKAGENAME">%1$s</xliff:g>」啟動前景服務的背景將不會在未來的 R 版本中提供「僅在使用此應用程式時允許」權限。請參閱 go/r-bg-fgs-restriction,提交錯誤報告。"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量 (比建議的音量更大聲) 嗎?\n\n長時間聆聽高分貝音量可能會導致您的聽力受損。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙功能快速鍵嗎?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用快速鍵後,同時按住音量按鈕 3 秒便可啟用無障礙功能。"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要允許 <xliff:g id="SERVICE">%1$s</xliff:g> 完全控制您的裝置嗎?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果您開啟 <xliff:g id="SERVICE">%1$s</xliff:g>,裝置將無法使用螢幕鎖定功能加強資料加密。"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"為您提供所需無障礙功能的應用程式有權完全控制您的裝置,但大部分應用程式均沒有此權限。"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"查看和控制螢幕"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"這項功能可以讀出螢幕上的所有內容,並透過其他應用程式顯示內容。"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"查看和執行動作"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"這項功能會追蹤您與應用程式或硬件感應器的互動,並代表您直接與應用程式互動。"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允許"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒絕"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"輕按即可開始使用所需功能:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"選擇要配搭無障礙功能按鈕使用的應用程式"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"選擇要配搭音量快速鍵功能使用的應用程式"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"<xliff:g id="SERVICE_NAME">%s</xliff:g> 已關閉"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"編輯捷徑"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"取消"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"關閉快速鍵"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用快速鍵"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"未分類"</string>
<string name="importance_from_user" msgid="2782756722448800447">"您可以設定這些通知的重要性。"</string>
<string name="importance_from_person" msgid="4235804979664465383">"列為重要的原因:涉及的人。"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"自訂應用程式通知"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"要允許 <xliff:g id="APP">%1$s</xliff:g> 使用 <xliff:g id="ACCOUNT">%2$s</xliff:g> 建立新使用者 (此帳戶目前已有此使用者) 嗎?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"要允許 <xliff:g id="APP">%1$s</xliff:g> 使用 <xliff:g id="ACCOUNT">%2$s</xliff:g> 建立新使用者嗎?"</string>
<string name="language_selection_title" msgid="52674936078683285">"新增語言"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙功能選單"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明列。"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已納入受限制的儲存區"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"個人"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"公司"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"個人檢視模式"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"工作檢視模式"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"無法與工作應用程式分享"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"無法與個人應用程式分享"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"您的 IT 管理員已封鎖個人和工作設定檔之間的分享功能"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"無法存取工作應用程式"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"您的 IT 管理員不允許您以工作應用程式檢視個人內容"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"無法存取個人應用程式"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"您的 IT 管理員不允許您以個人應用程式檢視工作內容"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"開啟工作設定檔以分享內容"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"開啟工作設定檔以檢視內容"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"沒有可用的應用程式"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"開啟"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"在電話通話中錄音或播放音訊"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"如將此應用程式指定為預設撥號器應用程式,則允許應用程式在電話通話中錄音或播放音訊。"</string>
</resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index f3da0d8..53b26ac 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"貴機構會管理這個裝置,且可能監控網路流量。輕觸即可瞭解詳情。"</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"你的管理員變更了位置資訊設定"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"輕觸即可查看位置資訊設定。"</string>
+ <string name="country_detector" msgid="7023275114706088854">"國家/地區偵測器"</string>
+ <string name="location_service" msgid="2439187616018455546">"定位服務"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"GNSS 服務"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"感應器通知服務"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Twilight 服務"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"你的裝置資料將遭到清除"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理應用程式,系統現在將清除你裝置中的資料。\n\n如有任何問題,請與貴機構的管理員聯絡。"</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」已停用列印功能。"</string>
@@ -245,6 +250,8 @@
<item quantity="other">系統將在 <xliff:g id="NUMBER_1">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
<item quantity="one">系統將在 <xliff:g id="NUMBER_0">%d</xliff:g> 秒後擷取錯誤報告的螢幕畫面。</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"已拍攝錯誤報告的螢幕截圖"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"無法拍攝錯誤報告的螢幕截圖"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"靜音模式"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"音效已關閉"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"音效已開啟"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"接收額外的位置提供者指令"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"允許應用程式存取額外位置資訊提供者指令。這項設定可能會造成應用程式干擾 GPS 或其他位置資訊來源的運作。"</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"僅可在前景中取得精確位置"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"這個應用程式只能在前景執行時取得你的確切位置。你必須在裝置上開啟定位服務,這個應用程式才能取得定位資訊。請注意,這麼做可能會增加耗電量。"</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"只有在你使用時,這個應用程式才能透過定位服務取得你的精確位置。你必須在裝置上開啟定位服務,這個應用程式才能取得位置資訊。這麼做可能會增加電池用量。"</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"僅可在前景中取得概略位置"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"這個應用程式只能在前景執行時取得你的概略位置。你必須在裝置上開啟定位服務,這個應用程式才能取得定位資訊。"</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"只有在你使用時,這個應用程式才能透過定位服務取得你的概略位置。你必須在裝置上開啟定位服務,這個應用程式才能取得位置資訊。"</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"在背景存取位置資訊"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"這個應用程式在前景和背景執行時,皆可取得位置資訊。"</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"這個應用程式隨時都能取得位置資訊 (包括未使用應用程式時)。"</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"變更音訊設定"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"允許應用程式修改全域音訊設定,例如音量和用來輸出的喇叭。"</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"錄製音訊"</string>
@@ -429,9 +436,11 @@
<string name="permdesc_camera" msgid="1354600178048761499">"這個應用程式隨時可使用相機拍照及錄影。"</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"如要拍照或錄影,請允許應用程式或服務存取系統攝影機"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"取得存取權後,這個系統應用程式就隨時可以使用系統攝影機拍照及錄影。此外,你也必須將 android.permission.CAMERA 權限授予這個應用程式"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"允許應用程式或服務接收相機裝置開啟或關閉的相關回呼。"</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"當任何相機裝置在開啟 (由應用程式套件) 或關閉時,這個簽名應用程式就能接收回呼。"</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"控制震動"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"允許應用程式控制震動。"</string>
- <string name="permdesc_vibrator_state" msgid="7050024956594170724">"允許應用程式存取震動狀態。"</string>
+ <string name="permdesc_vibrator_state" msgid="7050024956594170724">"允許應用程式存取震動功能狀態。"</string>
<string name="permlab_callPhone" msgid="1798582257194643320">"直接撥打電話號碼"</string>
<string name="permdesc_callPhone" msgid="5439809516131609109">"允許應用程式自行撥打電話,但可能產生非預期的費用或撥打非預期的電話。注意:這項權限不允許應用程式撥打緊急電話。惡意應用程式可能利用此功能擅自撥打電話,增加你不必要的額外支出。"</string>
<string name="permlab_accessImsCallService" msgid="442192920714863782">"存取 IMS 撥號服務"</string>
@@ -442,13 +451,19 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"允許應用程式透過系統接通來電,以改善通話品質。"</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"查看及控管透過系統撥打的電話。"</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"允許應用程式查看及控管在裝置上撥出的電話,包括撥打的電話號碼和通話狀態等資訊。"</string>
+ <!-- no translation found for permlab_exemptFromAudioRecordRestrictions (1164725468350759486) -->
+ <skip />
+ <!-- no translation found for permdesc_exemptFromAudioRecordRestrictions (2425117015896871976) -->
+ <skip />
<string name="permlab_acceptHandover" msgid="2925523073573116523">"繼續進行來自其他應用程式的通話"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"允許應用程式繼續進行在其他應用程式中發起的通話。"</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"讀取電話號碼"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"允許應用程式存取裝置上的電話號碼資料。"</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"讓車輛螢幕保持開啟"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"防止平板電腦進入休眠狀態"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"防止 Android TV 裝置進入休眠狀態"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"防止手機進入待命狀態"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"允許應用程式讓車輛螢幕保持開啟。"</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"允許應用程式防止平板電腦進入休眠狀態。"</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"允許應用程式防止 Android TV 裝置進入休眠狀態。"</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"允許應用程式防止手機進入休眠狀態。"</string>
@@ -546,8 +561,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"請再試一次。"</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"未登錄任何指紋。"</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"這個裝置沒有指紋感應器。"</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"感應器已暫時停用。"</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"手指 <xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +605,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"無法驗證臉孔,請再試一次。"</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"你尚未設定人臉解鎖功能。"</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"這個裝置不支援人臉解鎖功能。"</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"感應器已暫時停用。"</string>
<string name="face_name_template" msgid="3877037340223318119">"臉孔 <xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1266,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"這個行動網路沒有網際網路連線"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"這個網路沒有網際網路連線"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"無法存取私人 DNS 伺服器"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"已連線"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"<xliff:g id="NETWORK_SSID">%1$s</xliff:g> 的連線能力受限"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"輕觸即可繼續連線"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"已切換至<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1330,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"已連接 USB 偵錯工具"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"輕觸即可關閉 USB 偵錯功能"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"選取這個選項以停用 USB 偵錯功能。"</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"無線偵錯已連線"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"輕觸即可關閉無線偵錯功能"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"選取即可停用無線偵錯功能。"</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"測試控管工具模式已啟用"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"恢復原廠設定以停用測試控管工具模式。"</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"已啟用序列主控台"</string>
@@ -1621,10 +1636,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"來自「<xliff:g id="PACKAGENAME">%1$s</xliff:g>」的背景啟動前景服務不會具備未來 R 版本的使用狀態權限。請前往 go/r-bg-fgs-restriction 並提交錯誤報告。"</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量,比建議的音量更大聲嗎?\n\n長時間聆聽高分貝音量可能會使你的聽力受損。"</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙捷徑嗎?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"啟用捷徑功能,只要同時按下兩個音量按鈕 3 秒,就能啟動無障礙功能。"</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"要將裝置的完整控制權授予「<xliff:g id="SERVICE">%1$s</xliff:g>」嗎?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"如果你開啟「<xliff:g id="SERVICE">%1$s</xliff:g>」,裝置將無法使用螢幕鎖定功能強化資料加密。"</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"如果你有無障礙服務需求,可以將完整控制權授予具有相關功能的應用程式,但請勿將完整控制權授予大多數的應用程式。"</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"查看及控制螢幕"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"可讀取螢幕上的所有內容及在其他應用程式上顯示內容。"</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"查看及執行動作"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"可追蹤你與應用程式或硬體感應器的互動,並代表你與應用程式進行互動。"</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"允許"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"拒絕"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"輕觸即可開始使用所需功能:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"選擇要搭配無障礙工具按鈕使用的應用程式"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"選擇要搭配音量快速鍵功能使用的應用程式"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"「<xliff:g id="SERVICE_NAME">%s</xliff:g>」已關閉"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"編輯捷徑"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"取消"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"完成"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"停用捷徑"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"使用捷徑"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"色彩反轉"</string>
@@ -1845,6 +1872,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"未分類"</string>
<string name="importance_from_user" msgid="2782756722448800447">"這些通知的重要性由你決定。"</string>
<string name="importance_from_person" msgid="4235804979664465383">"這則通知涉及特定人士,因此被歸為重要通知。"</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"自訂應用程式通知"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"要允許「<xliff:g id="APP">%1$s</xliff:g>」替 <xliff:g id="ACCOUNT">%2$s</xliff:g> (這個帳戶目前已有使用者) 建立新使用者嗎?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"要允許「<xliff:g id="APP">%1$s</xliff:g>」替 <xliff:g id="ACCOUNT">%2$s</xliff:g> 建立新使用者嗎?"</string>
<string name="language_selection_title" msgid="52674936078683285">"新增語言"</string>
@@ -2016,22 +2044,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙選單"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明文字列。"</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"已將「<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>」移入受限制的值區"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"個人"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"工作"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"個人檢視模式"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"工作檢視模式"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"無法與工作應用程式分享"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"無法與個人應用程式分享"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"你的 IT 管理員已封鎖個人和工作資料夾之間的分享功能"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"無法存取工作應用程式"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"你的 IT 管理員不允許你使用工作應用程式查看個人內容"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"無法存取個人應用程式"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"你的 IT 管理員不允許你使用個人應用程式查看工作內容"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"你必須開啟工作資料夾才能分享內容"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"你必須開啟工作資料夾才能查看內容"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"沒有可用的應用程式"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"開啟"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"在通話期間錄製或播放音訊"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"將這個應用程式指派為預設撥號應用程式時,允許應用程式在通話期間錄製或播放音訊。"</string>
</resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index d4a6c26..a1e3347 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -193,6 +193,11 @@
<string name="network_logging_notification_text" msgid="1327373071132562512">"Inhlangano yakho iphethe le divayisi futhi kungenzeka ingaqaphi ithrafikhi yenethiwekhi. Thephela imininingwane."</string>
<string name="location_changed_notification_title" msgid="4119726617105166830">"Izilungiselelo zendawo zishintshwe umphathi wakho"</string>
<string name="location_changed_notification_text" msgid="198907268219396399">"Thepha ukuze ubone izilungiselelo zakho zendawo."</string>
+ <string name="country_detector" msgid="7023275114706088854">"Isitholi Sezwe"</string>
+ <string name="location_service" msgid="2439187616018455546">"Isevisi Yendawo"</string>
+ <string name="gnss_service" msgid="8907781262179951385">"Isevisi ye-GNSS"</string>
+ <string name="sensor_notification_service" msgid="7474531979178682676">"Isevisi Yesaziso Senzwa"</string>
+ <string name="twilight_service" msgid="8964898045693187224">"Isevisi Yangovivi"</string>
<string name="factory_reset_warning" msgid="6858705527798047809">"Idivayisi yakho izosulwa"</string>
<string name="factory_reset_message" msgid="2657049595153992213">"Uhlelo lokusebenza lomlawuli alikwazi ukusetshenziswa. Idivayisi yakho manje izosuswa.\n\nUma unemibuzo, xhumana nomlawuli wezinhlangano zakho."</string>
<string name="printing_disabled_by" msgid="3517499806528864633">"Ukuphrinta kukhutshazwe nge-<xliff:g id="OWNER_APP">%s</xliff:g>."</string>
@@ -245,6 +250,8 @@
<item quantity="one">Ithathela umbiko wesiphazamisi isithombe-skrini kumasekhondi angu-<xliff:g id="NUMBER_1">%d</xliff:g>.</item>
<item quantity="other">Ithathela umbiko wesiphazamisi isithombe-skrini kumasekhondi angu-<xliff:g id="NUMBER_1">%d</xliff:g>.</item>
</plurals>
+ <string name="bugreport_screenshot_success_toast" msgid="7986095104151473745">"Isithombe-skrini sithathwe nombiko wesiphazamisi"</string>
+ <string name="bugreport_screenshot_failure_toast" msgid="6736320861311294294">"Yehlulekile ukuthatha isithombe-skrini nombiko wesiphazamisi"</string>
<string name="global_action_toggle_silent_mode" msgid="8464352592860372188">"Imodi ethulile"</string>
<string name="global_action_silent_mode_on_status" msgid="2371892537738632013">"Umsindo UVALIWE"</string>
<string name="global_action_silent_mode_off_status" msgid="6608006545950920042">"Umsindo UVULIWE"</string>
@@ -412,11 +419,11 @@
<string name="permlab_accessLocationExtraCommands" msgid="5162339812057983988">"finyelela kweminye imiyalo yokunikeza indawo"</string>
<string name="permdesc_accessLocationExtraCommands" msgid="355369611979907967">"Ivumela uhlelo lokusebenza ukufinyelela imiyalo eyengeziwe yabahlinzeki bendawo. Lokhu kungase kuvumele uhlelo lokusebenza ukuthi liphazamisane nomsebenzi we-GPS noma eminye imithombo yendawo."</string>
<string name="permlab_accessFineLocation" msgid="6426318438195622966">"finyelela indawo eqondile kuphela phambili"</string>
- <string name="permdesc_accessFineLocation" msgid="9221079523494157324">"Lolu hlelo lokusebenza lungakutholela indawo eqondile kuphela uma liphambili. Amasevisi endawo kufanele avulwe futhi atholakale kudivayisi yakho ukuze uhlelo lokusebenza lukwazi ukuwasebenzisa. Lokhu kungakhulisa ukusebenza kwebhethri."</string>
+ <string name="permdesc_accessFineLocation" msgid="6732174080240016335">"Lolu hlelo lokusebenza lungakwazi ukuthola indawo yakho yangempela kusuka kumasevisi wendawo ngenkathi uhlelo lokusebenza lusebenza. Amasevisi wendawo wedivayisi yakho kufanele avulwe ukuze uhlelo lokusebenza luthole indawo. Lokhu kungase kukhulise ukusetshenziswa kwebhethri."</string>
<string name="permlab_accessCoarseLocation" msgid="1561042925407799741">"finyelela indawo enembile kuphela engaphambili"</string>
- <string name="permdesc_accessCoarseLocation" msgid="4826281078353537786">"Lolu hlelo lokusebenza lungakutholela indawo enembile kuphela uma ingaphambili. Amasevisi endawo kumele avulwe futhi atholakale kudivayisi yakho ukuze uhlelo lokusebenza lukwazi ukuwasebenzisa."</string>
+ <string name="permdesc_accessCoarseLocation" msgid="778521847873199160">"Lolu hlelo lokusebenza lungakwazi ukuthola cishe indawo yakho yangempela kusuka kumasevisi wendawo ngenkathi uhlelo lokusebenza lusebenza. Amasevisi wendawo wedivayisi yakho kufanele avulwe ukuze uhlelo lokusebenza luthole indawo."</string>
<string name="permlab_accessBackgroundLocation" msgid="1721164702777366138">"finyelela kundawo ngemuva"</string>
- <string name="permdesc_accessBackgroundLocation" msgid="623676842127558197">"Lolu hlelo lokusebenza lungafinyelela indawo ngenkathi isebenza ngasemuva, ngokungeziwe ekufinyeleleni kwendawo yangaphambili."</string>
+ <string name="permdesc_accessBackgroundLocation" msgid="8264885066095638105">"Lolu hlelo lokusebenza lungakwazi ukufinyelela indawo noma nini, ngisho noma uhlelo lokusebenza lungasebenzi."</string>
<string name="permlab_modifyAudioSettings" msgid="6129039778010031815">"shintsha izilungiselelo zakho zomsindo"</string>
<string name="permdesc_modifyAudioSettings" msgid="8687227609663124921">"Ivumela uhlelo lokusebenza ukushintsha izilungiselelo zomsindo we-global njengevolomu nokuthi isiphi isipika esisetshenziselwa okukhiphayo."</string>
<string name="permlab_recordAudio" msgid="1208457423054219147">"qopha umsindo"</string>
@@ -429,6 +436,8 @@
<string name="permdesc_camera" msgid="1354600178048761499">"Lolu hlelo lokusebenza lungathatha izithombe futhi lirekhode amavidiyo lusebenzisa ikhamera noma kunini."</string>
<string name="permlab_systemCamera" msgid="3642917457796210580">"Vumela uhlelo lokusebenza noma isevisi ukufinyelela kumakhamera wesistimu ukuze uthathe izithombe namavidiyo"</string>
<string name="permdesc_systemCamera" msgid="544730545441964482">"Lolu hlelo lokusebenza lesistimu le-| lingathatha izithombe futhi lirekhode amavidiyo lisebenzisa ikhamera yesistimu noma kunini. Idinga imvume ye-android.permission.CAMERA permission ukuthi iphathwa uhlelo lokusebenza futhi"</string>
+ <string name="permlab_cameraOpenCloseListener" msgid="5548732769068109315">"Vumela uhlelo lokusebenza noma isevisi ukwamukela ukuphinda ufonelwe mayelana namadivayisi wekhamera avuliwe noma avaliwe."</string>
+ <string name="permdesc_cameraOpenCloseListener" msgid="5860322671003213710">"Lolu hlelo lokusebenza lesiginesha lungakwazi ukuthola ukuphinda ufonelwe uma noma iyiphi idivayisi yekhamera ivuliwe (ngephakheji yohlelo lokusebenza) noma ivaliwe."</string>
<string name="permlab_vibrate" msgid="8596800035791962017">"lawula ukudlidliza"</string>
<string name="permdesc_vibrate" msgid="8733343234582083721">"Ivumela uhlelo lokusebenza ukulawula isidlidlizi."</string>
<string name="permdesc_vibrator_state" msgid="7050024956594170724">"Ivumela uhlelo lokusebenza ukuthi lufinyelele kusimo sesidlidlizeli."</string>
@@ -442,13 +451,17 @@
<string name="permdesc_manageOwnCalls" msgid="4431178362202142574">"Ivumela uhlelo lokusebenza ukwenza imizila yamakholi ngesistimu ukuze ithuthukise umuzwa wokushaya."</string>
<string name="permlab_callCompanionApp" msgid="3654373653014126884">"bona futhi ulawule amakholi ngesistimu."</string>
<string name="permdesc_callCompanionApp" msgid="8474168926184156261">"Ivumela uhlelo lokusebenza ukubona nokulawula amakholi aqhubekayo kudivayisi. Lokhu kubandakanya ulwazi olufana nezinombolo zamakholi nesimo samakholi."</string>
+ <string name="permlab_exemptFromAudioRecordRestrictions" msgid="1164725468350759486">"khipha kusuka kwimikhawulo yokurekhoda umsindo"</string>
+ <string name="permdesc_exemptFromAudioRecordRestrictions" msgid="2425117015896871976">"Khipha uhlelo lokusebenza kwimikhawulo yokurekhoda umsindo."</string>
<string name="permlab_acceptHandover" msgid="2925523073573116523">"qhuba ikholi kusukela kolunye uhlelo lokusebenza"</string>
<string name="permdesc_acceptHandovers" msgid="7129026180128626870">"Ivumela uhlelo lokusebenza ukuze luqhube ikholi eqalwe kolunye uhlelo lokusebenza."</string>
<string name="permlab_readPhoneNumbers" msgid="5668704794723365628">"funda izinombolo zefoni"</string>
<string name="permdesc_readPhoneNumbers" msgid="7368652482818338871">"Ivumela uhlelo lokusebenza ukufinyelela izinombolo zefoni zedivayisi."</string>
+ <string name="permlab_wakeLock" product="automotive" msgid="1904736682319375676">"gcina isikrini semoto sivuliwe"</string>
<string name="permlab_wakeLock" product="tablet" msgid="1527660973931694000">"gwema ithebhulethi ukuba ingalali"</string>
<string name="permlab_wakeLock" product="tv" msgid="2856941418123343518">"gwema idivayisi yakho ye-Android TV ukuthi ingalali"</string>
<string name="permlab_wakeLock" product="default" msgid="569409726861695115">"gwema ifoni ukuba ingalali"</string>
+ <string name="permdesc_wakeLock" product="automotive" msgid="5995045369683254571">"Ivumela uhlelo lokusebenza ukuthi lugcine isikrini semoto sivuliwe."</string>
<string name="permdesc_wakeLock" product="tablet" msgid="2441742939101526277">"Ivumela uhlelo lokusebenza ukuthi linqande ithebulethi yakho ukuthi ilale."</string>
<string name="permdesc_wakeLock" product="tv" msgid="2329298966735118796">"Ivumela uhlelo lokusebenza ukugwema idivayisi yakho ye-Android TV ukuthi ingalali."</string>
<string name="permdesc_wakeLock" product="default" msgid="3689523792074007163">"Ivumela uhlelo lokusebenza ukuthi inqande ucingo ukuthi lulale."</string>
@@ -546,8 +559,7 @@
<string name="fingerprint_error_unable_to_process" msgid="1148553603490048742">"Zama futhi."</string>
<string name="fingerprint_error_no_fingerprints" msgid="8671811719699072411">"Azikho izigxivizo zeminwe ezibhalisiwe."</string>
<string name="fingerprint_error_hw_not_present" msgid="578914350967423382">"Le divayisi ayinayo inzwa yezigxivizo zeminwe."</string>
- <!-- no translation found for fingerprint_error_security_update_required (7750187320640856433) -->
- <skip />
+ <string name="fingerprint_error_security_update_required" msgid="7750187320640856433">"Inzwa ikhutshazwe okwesikhashana."</string>
<string name="fingerprint_name_template" msgid="8941662088160289778">"Umunwe ongu-<xliff:g id="FINGERID">%d</xliff:g>"</string>
<string-array name="fingerprint_error_vendor">
</string-array>
@@ -591,8 +603,7 @@
<string name="face_error_unable_to_process" msgid="5723292697366130070">"Ayikwazi ukuqinisekisa ubuso. Zama futhi."</string>
<string name="face_error_not_enrolled" msgid="7369928733504691611">"Awukakasethi i-face unlock."</string>
<string name="face_error_hw_not_present" msgid="1070600921591729944">"I-face unlock ayisekelwe kule divayisi."</string>
- <!-- no translation found for face_error_security_update_required (5076017208528750161) -->
- <skip />
+ <string name="face_error_security_update_required" msgid="5076017208528750161">"Inzwa ikhutshazwe okwesikhashana."</string>
<string name="face_name_template" msgid="3877037340223318119">"Ubuso be-<xliff:g id="FACEID">%d</xliff:g>"</string>
<string-array name="face_error_vendor">
</string-array>
@@ -1253,7 +1264,6 @@
<string name="mobile_no_internet" msgid="4014455157529909781">"Inethiwekhi yeselula ayinakho ukufinyelela kwe-inthanethi"</string>
<string name="other_networks_no_internet" msgid="6698711684200067033">"Inethiwekhi ayinakho ukufinyelela kwenethiwekhi"</string>
<string name="private_dns_broken_detailed" msgid="3709388271074611847">"Iseva eyimfihlo ye-DNS ayikwazi ukufinyelelwa"</string>
- <string name="captive_portal_logged_in_detailed" msgid="3897392681039344376">"Kuxhunyiwe"</string>
<string name="network_partial_connectivity" msgid="4791024923851432291">"I-<xliff:g id="NETWORK_SSID">%1$s</xliff:g> inokuxhumeka okukhawulelwe"</string>
<string name="network_partial_connectivity_detailed" msgid="5741329444564575840">"Thepha ukuze uxhume noma kunjalo"</string>
<string name="network_switch_metered" msgid="1531869544142283384">"Kushintshelwe ku-<xliff:g id="NETWORK_TYPE">%1$s</xliff:g>"</string>
@@ -1318,6 +1328,9 @@
<string name="adb_active_notification_title" msgid="408390247354560331">"Ukulungisa iphutha le-USB kuxhunyiwe"</string>
<string name="adb_active_notification_message" msgid="5617264033476778211">"Thepha ukuze uvale ukulungisa amaphutha kwe-USB"</string>
<string name="adb_active_notification_message" product="tv" msgid="6624498401272780855">"Khetha ukuvimbela ukulungisa iphutha le-USB."</string>
+ <string name="adbwifi_active_notification_title" msgid="6147343659168302473">"Ukulungisa amaphutha okungenantambo kuxhunyiwe"</string>
+ <string name="adbwifi_active_notification_message" msgid="930987922852867972">"Thepha ukuze ucishe ukulungisa amaphutha okungenantambo"</string>
+ <string name="adbwifi_active_notification_message" product="tv" msgid="8633421848366915478">"Khetha ukukhubaza ukulungisa amaphutha okungenantambo."</string>
<string name="test_harness_mode_notification_title" msgid="2282785860014142511">"Imodi yokuhlola i-harness inikwe amandla"</string>
<string name="test_harness_mode_notification_message" msgid="3039123743127958420">"Yenza ukusetha kabusha kwasekuqaleni ukuze ukhubaze imodi yokuqina yokuhlola."</string>
<string name="console_running_notification_title" msgid="6087888939261635904">"I-serial console inikwe amandla"</string>
@@ -1621,10 +1634,22 @@
<string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ingemuva eqalise isevisi yasemuva kusuka ku-<xliff:g id="PACKAGENAME">%1$s</xliff:g> ngeke ithole imvume yokusebenzisa yesikhathi ekwakheni kwe-R ezayo. Sicela ubone i-go/r-bg-fgs-restriction bese ufayele umbiko wesiphazamiso."</string>
<string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Khuphukisa ivolumu ngaphezu kweleveli enconyiwe?\n\nUkulalela ngevolumu ephezulu izikhathi ezide kungahle kulimaze ukuzwa kwakho."</string>
<string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sebenzisa isinqamuleli sokufinyelela?"</string>
- <!-- no translation found for accessibility_shortcut_toogle_warning (4161716521310929544) -->
- <skip />
+ <string name="accessibility_shortcut_toogle_warning" msgid="4161716521310929544">"Uma isinqamuleli sivuliwe, ukucindezela zombili izinkinobho zevolumu amasekhondi angu-3 kuzoqalisa isici sokufinyelela."</string>
+ <string name="accessibility_enable_service_title" msgid="3931558336268541484">"Vumela i-<xliff:g id="SERVICE">%1$s</xliff:g> ukuthola ukulawula okuphelele kwedivayisi yakho?"</string>
+ <string name="accessibility_enable_service_encryption_warning" msgid="8603532708618236909">"Uma uvula i-<xliff:g id="SERVICE">%1$s</xliff:g>, idivayisi yakho ngeke isebenzise ukukhiya kwakho kwesikrini sakho ukuthuthukisa ukubethelwa kwedatha."</string>
+ <string name="accessibility_service_warning_description" msgid="291674995220940133">"Ukulawula okugcwele kulungele izinhlelo zokusebenza ezikusiza ngezidingo zokufinyelela, kodwa hhayi izinhlelo zokusebenza eziningi."</string>
+ <string name="accessibility_service_screen_control_title" msgid="190017412626919776">"Buka futhi ulawule isikrini"</string>
+ <string name="accessibility_service_screen_control_description" msgid="6946315917771791525">"Singafunda konke okuqukethwe esikrinini futhi sibonise okuqukethwe kwezinye izinhlelo zokusebenza."</string>
+ <string name="accessibility_service_action_perform_title" msgid="779670378951658160">"Buka uphinde wenze izenzo"</string>
+ <string name="accessibility_service_action_perform_description" msgid="2718852014003170558">"Ingalandela ukusebenzisana kwakho nohlelo lokusebenza noma inzwa yehadiwe, nokusebenzisana nezinhlelo zokusebenza engxenyeni yakho."</string>
+ <string name="accessibility_dialog_button_allow" msgid="2092558122987144530">"Vumela"</string>
+ <string name="accessibility_dialog_button_deny" msgid="4129575637812472671">"Phika"</string>
+ <string name="accessibility_select_shortcut_menu_title" msgid="6002726538854613272">"Thepha isici ukuqala ukusisebenzisa:"</string>
+ <string name="accessibility_edit_shortcut_menu_button_title" msgid="2062625107544922685">"Khetha izinhlelo zokusebenza ongazisebenzisa nenkinobho yokufinyeleleka"</string>
+ <string name="accessibility_edit_shortcut_menu_volume_title" msgid="2831697927653841895">"Khetha izinhlelo zokusebenza ongazisebenzisa nesinqamuleli sokhiye wevolumu"</string>
+ <string name="accessibility_uncheck_legacy_item_warning" msgid="8047830891064817447">"I-<xliff:g id="SERVICE_NAME">%s</xliff:g> ivaliwe"</string>
<string name="edit_accessibility_shortcut_menu_button" msgid="8885752738733772935">"Hlela izinqamuleli"</string>
- <string name="cancel_accessibility_shortcut_menu_button" msgid="1817413122335452474">"Khansela"</string>
+ <string name="done_accessibility_shortcut_menu_button" msgid="3668407723770815708">"Kwenziwe"</string>
<string name="disable_accessibility_shortcut" msgid="5806091378745232383">"Vala isinqamuleli"</string>
<string name="leave_accessibility_shortcut_on" msgid="6543362062336990814">"Sebenzisa isinqamuleli"</string>
<string name="color_inversion_feature_name" msgid="326050048927789012">"Ukuguqulwa kombala"</string>
@@ -1845,6 +1870,7 @@
<string name="default_notification_channel_label" msgid="3697928973567217330">"Akufakwanga esigabeni"</string>
<string name="importance_from_user" msgid="2782756722448800447">"Usethe ukubaluleka kwalezi zaziso."</string>
<string name="importance_from_person" msgid="4235804979664465383">"Lokhu kubalulekile ngenxa yabantu ababandakanyekayo."</string>
+ <string name="notification_history_title_placeholder" msgid="7748630986182249599">"Isaziso sohlelo lokusebenza olungokwezifiso"</string>
<string name="user_creation_account_exists" msgid="2239146360099708035">"Vumela i-<xliff:g id="APP">%1$s</xliff:g> ukuthi idale umsebenzisi omusha nge-<xliff:g id="ACCOUNT">%2$s</xliff:g> (Umsebenzisi onale akhawunti usevele ukhona) ?"</string>
<string name="user_creation_adding" msgid="7305185499667958364">"Vumela i-<xliff:g id="APP">%1$s</xliff:g> ukuthi idale umsebenzisi omusha nge-<xliff:g id="ACCOUNT">%2$s</xliff:g> ?"</string>
<string name="language_selection_title" msgid="52674936078683285">"Engeza ulwimi"</string>
@@ -2016,22 +2042,27 @@
<string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Imenyu yokufinyeleleka"</string>
<string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ibha yamazwibela we-<xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
<string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"I-<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ifakwe kubhakede LOKUKHAWULELWE"</string>
+ <!-- no translation found for conversation_single_line_name_display (8958948312915255999) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_one_to_one (1980753619726908614) -->
+ <skip />
+ <!-- no translation found for conversation_title_fallback_group_chat (456073374993104303) -->
+ <skip />
<string name="resolver_personal_tab" msgid="2051260504014442073">"Okomuntu siqu"</string>
<string name="resolver_work_tab" msgid="2690019516263167035">"Umsebenzi"</string>
- <!-- no translation found for resolver_cant_share_with_work_apps (7539495559434146897) -->
- <skip />
- <!-- no translation found for resolver_cant_share_with_personal_apps (8020581735267157241) -->
- <skip />
- <!-- no translation found for resolver_cant_share_cross_profile_explanation (3536237105241882679) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps (8987359079870455469) -->
- <skip />
- <!-- no translation found for resolver_turn_on_work_apps_explanation (6322467455509618928) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available (7710339903040989654) -->
- <skip />
- <!-- no translation found for resolver_no_apps_available_explanation (4662694431121196560) -->
- <skip />
- <!-- no translation found for resolver_switch_on_work (8294542702883688533) -->
- <skip />
+ <string name="resolver_personal_tab_accessibility" msgid="5739524949153091224">"Ukubuka komuntu siqu"</string>
+ <string name="resolver_work_tab_accessibility" msgid="4753168230363802734">"Ukubuka komsebenzi"</string>
+ <string name="resolver_cant_share_with_work_apps" msgid="7539495559434146897">"Ayikwazi ukwabelana ngezinhlelo zokusebenza zomsebenzi"</string>
+ <string name="resolver_cant_share_with_personal_apps" msgid="8020581735267157241">"Ayikwazi ukwabelana ngezinhlelo zokusebenza zomuntu siqu"</string>
+ <string name="resolver_cant_share_cross_profile_explanation" msgid="5556640604460901386">"Umphathi wakho we-IT uvimbe ukwabelana phakathi kwamaphrofayela womuntu siqu nawomsebenzi"</string>
+ <string name="resolver_cant_access_work_apps" msgid="375634344111233790">"Ayikwazi ukufinyelela izinhlelo zokusebenza zomsebenzi"</string>
+ <string name="resolver_cant_access_work_apps_explanation" msgid="3958762224516867388">"Umphathi wakho we-IT akakuvumeli ukuthi ubuke okuqukethwe komuntu siqu kuzinhlelo zokusebenza zomsebenzi"</string>
+ <string name="resolver_cant_access_personal_apps" msgid="1953215925406474177">"Ayikwazi ukufinyelela izinhlelo zomuntu siqu"</string>
+ <string name="resolver_cant_access_personal_apps_explanation" msgid="1725572276741281136">"Umphathi wakho we-IT akakuvumeli ukuthi ubuke okuqukethwe komsebenzi kuzinhlelo zokusebenza zomuntu siqu"</string>
+ <string name="resolver_turn_on_work_apps_share" msgid="619263911204978175">"Vula iphrofayela yomsebenzi ukwabelana nokuqukethwe"</string>
+ <string name="resolver_turn_on_work_apps_view" msgid="3073389230905543680">"Vula iphrofayela yomsebenzi ukubuka okuqukethwe"</string>
+ <string name="resolver_no_apps_available" msgid="7710339903040989654">"Azikho izinhlelo zokusebenza ezitholakalayo"</string>
+ <string name="resolver_switch_on_work" msgid="2873009160846966379">"Vula"</string>
+ <string name="permlab_accessCallAudio" msgid="1682957511874097664">"Rekhoda noma dlala umsindo kumakholi ocingo"</string>
+ <string name="permdesc_accessCallAudio" msgid="8448360894684277823">"Ivumela lolu hlelo lokusebenza, uma lunikezwe njengohlelo lokusebenza oluzenzakalelayo lokudayela, ukuze kurekhodwe noma kudlalwe umsindo kumakholi ocingo."</string>
</resources>
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 26024ed..6f4c32a 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -425,6 +425,8 @@
<string name="country_detector">Country Detector</string>
<!-- Feature Id for Location service. [CHAR LIMIT=NONE]-->
<string name="location_service">Location Service</string>
+ <!-- Feature Id for Gnss service. [CHAR LIMIT=NONE]-->
+ <string name="gnss_service">GNSS Service</string>
<!-- Feature Id for Sensor Notification service. [CHAR LIMIT=NONE]-->
<string name="sensor_notification_service">Sensor Notification Service</string>
<!-- Feature Id for Twilight service. [CHAR LIMIT=NONE]-->
@@ -1124,17 +1126,17 @@
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_accessFineLocation">access precise location only in the foreground</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_accessFineLocation">This app can get your exact location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them. This may increase battery consumption.</string>
+ <string name="permdesc_accessFineLocation">This app can get your precise location from location services while the app is in use. Location services for your device must be turned on for the app to get location. This may increase battery usage.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_accessCoarseLocation">access approximate location only in the foreground</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_accessCoarseLocation">This app can get your approximate location only when it is in the foreground. Location services must be turned on and available on your device for the app to be able to use them.</string>
+ <string name="permdesc_accessCoarseLocation">This app can get your approximate location from location services while the app is in use. Location services for your device must be turned on for the app to get location.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_accessBackgroundLocation">access location in the background</string>
<!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
- <string name="permdesc_accessBackgroundLocation">This app can access location while running in the background, in addition to foreground location access.</string>
+ <string name="permdesc_accessBackgroundLocation">This app can access location at any time, even while the app is not in use.</string>
<!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
<string name="permlab_modifyAudioSettings">change your audio settings</string>
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 8d51a60..b039af3 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -54,6 +54,7 @@
"android.test.mock",
"framework-atb-backward-compatibility",
"framework",
+ "icing-java-proto-lite",
"ext",
"framework-res",
],
diff --git a/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java b/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java
new file mode 100644
index 0000000..a56f0ab
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/AppSearchDocumentTest.java
@@ -0,0 +1,263 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.protobuf.ByteString;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+@SmallTest
+public class AppSearchDocumentTest {
+ private static final byte[] sByteArray1 = new byte[]{(byte) 1, (byte) 2, (byte) 3};
+ private static final byte[] sByteArray2 = new byte[]{(byte) 4, (byte) 5, (byte) 6};
+ private static final AppSearchDocument sDocumentProperties1 = new AppSearchDocument
+ .Builder("sDocumentProperties1", "sDocumentPropertiesSchemaType1")
+ .build();
+ private static final AppSearchDocument sDocumentProperties2 = new AppSearchDocument
+ .Builder("sDocumentProperties2", "sDocumentPropertiesSchemaType2")
+ .build();
+
+ @Test
+ public void testDocumentEquals_Identical() {
+ AppSearchDocument document1 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setTtlMillis(1L)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .build();
+ AppSearchDocument document2 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setTtlMillis(1L)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .build();
+ assertThat(document1).isEqualTo(document2);
+ assertThat(document1.hashCode()).isEqualTo(document2.hashCode());
+ }
+
+ @Test
+ public void testDocumentEquals_DifferentOrder() {
+ AppSearchDocument document1 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .build();
+
+ // Create second document with same parameter but different order.
+ AppSearchDocument document2 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .build();
+ assertThat(document1).isEqualTo(document2);
+ assertThat(document1.hashCode()).isEqualTo(document2.hashCode());
+ }
+
+ @Test
+ public void testDocumentEquals_Failure() {
+ AppSearchDocument document1 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .build();
+
+ // Create second document with same order but different value.
+ AppSearchDocument document2 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("longKey1", 1L, 2L, 4L) // Different
+ .build();
+ assertThat(document1).isNotEqualTo(document2);
+ assertThat(document1.hashCode()).isNotEqualTo(document2.hashCode());
+ }
+
+ @Test
+ public void testDocumentEquals_Failure_RepeatedFieldOrder() {
+ AppSearchDocument document1 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("booleanKey1", true, false, true)
+ .build();
+
+ // Create second document with same order but different value.
+ AppSearchDocument document2 = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("booleanKey1", true, true, false) // Different
+ .build();
+ assertThat(document1).isNotEqualTo(document2);
+ assertThat(document1.hashCode()).isNotEqualTo(document2.hashCode());
+ }
+
+ @Test
+ public void testDocumentGetSingleValue() {
+ AppSearchDocument document = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setScore(1)
+ .setTtlMillis(1L)
+ .setScore(1)
+ .setProperty("longKey1", 1L)
+ .setProperty("doubleKey1", 1.0)
+ .setProperty("booleanKey1", true)
+ .setProperty("stringKey1", "test-value1")
+ .setProperty("byteKey1", sByteArray1)
+ .setProperty("documentKey1", sDocumentProperties1)
+ .build();
+ assertThat(document.getUri()).isEqualTo("uri1");
+ assertThat(document.getTtlMillis()).isEqualTo(1L);
+ assertThat(document.getSchemaType()).isEqualTo("schemaType1");
+ assertThat(document.getCreationTimestampMillis()).isEqualTo(5);
+ assertThat(document.getScore()).isEqualTo(1);
+ assertThat(document.getPropertyLong("longKey1")).isEqualTo(1L);
+ assertThat(document.getPropertyDouble("doubleKey1")).isEqualTo(1.0);
+ assertThat(document.getPropertyBoolean("booleanKey1")).isTrue();
+ assertThat(document.getPropertyString("stringKey1")).isEqualTo("test-value1");
+ assertThat(document.getPropertyBytes("byteKey1"))
+ .asList().containsExactly((byte) 1, (byte) 2, (byte) 3);
+ assertThat(document.getPropertyDocument("documentKey1")).isEqualTo(sDocumentProperties1);
+ }
+
+ @Test
+ public void testDocumentGetArrayValues() {
+ AppSearchDocument document = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .build();
+
+ assertThat(document.getUri()).isEqualTo("uri1");
+ assertThat(document.getSchemaType()).isEqualTo("schemaType1");
+ assertThat(document.getPropertyLongArray("longKey1")).asList().containsExactly(1L, 2L, 3L);
+ assertThat(document.getPropertyDoubleArray("doubleKey1")).usingExactEquality()
+ .containsExactly(1.0, 2.0, 3.0);
+ assertThat(document.getPropertyBooleanArray("booleanKey1")).asList()
+ .containsExactly(true, false, true);
+ assertThat(document.getPropertyStringArray("stringKey1")).asList()
+ .containsExactly("test-value1", "test-value2", "test-value3");
+ assertThat(document.getPropertyBytesArray("byteKey1")).asList()
+ .containsExactly(sByteArray1, sByteArray2);
+ assertThat(document.getPropertyDocumentArray("documentKey1")).asList()
+ .containsExactly(sDocumentProperties1, sDocumentProperties2);
+ }
+
+ @Test
+ public void testDocumentGetValues_DifferentTypes() {
+ AppSearchDocument document = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setScore(1)
+ .setProperty("longKey1", 1L)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .build();
+
+ // Get a value for a key that doesn't exist
+ assertThat(document.getPropertyDouble("doubleKey1")).isEqualTo(0.0);
+ assertThat(document.getPropertyDoubleArray("doubleKey1")).isNull();
+
+ // Get a value with a single element as an array and as a single value
+ assertThat(document.getPropertyLong("longKey1")).isEqualTo(1L);
+ assertThat(document.getPropertyLongArray("longKey1")).asList().containsExactly(1L);
+
+ // Get a value with multiple elements as an array and as a single value
+ assertThat(document.getPropertyString("stringKey1")).isEqualTo("test-value1");
+ assertThat(document.getPropertyStringArray("stringKey1")).asList()
+ .containsExactly("test-value1", "test-value2", "test-value3");
+
+ // Get a value of the wrong type
+ assertThat(document.getPropertyDouble("longKey1")).isEqualTo(0.0);
+ assertThat(document.getPropertyDoubleArray("longKey1")).isNull();
+ }
+
+ @Test
+ public void testDocumentInvalid() {
+ AppSearchDocument.Builder builder = new AppSearchDocument.Builder("uri1", "schemaType1");
+ assertThrows(
+ IllegalArgumentException.class, () -> builder.setProperty("test", new boolean[]{}));
+ }
+
+ @Test
+ public void testDocumentProtoPopulation() {
+ AppSearchDocument document = new AppSearchDocument.Builder("uri1", "schemaType1")
+ .setCreationTimestampMillis(5L)
+ .setScore(1)
+ .setTtlMillis(1L)
+ .setProperty("longKey1", 1L)
+ .setProperty("doubleKey1", 1.0)
+ .setProperty("booleanKey1", true)
+ .setProperty("stringKey1", "test-value1")
+ .setProperty("byteKey1", sByteArray1)
+ .setProperty("documentKey1", sDocumentProperties1)
+ .build();
+
+ // Create the Document proto. Need to sort the property order by key.
+ DocumentProto.Builder documentProtoBuilder = DocumentProto.newBuilder()
+ .setUri("uri1")
+ .setSchema("schemaType1")
+ .setCreationTimestampMs(5L)
+ .setScore(1)
+ .setTtlMs(1L);
+ HashMap<String, PropertyProto.Builder> propertyProtoMap = new HashMap<>();
+ propertyProtoMap.put("longKey1",
+ PropertyProto.newBuilder().setName("longKey1").addInt64Values(1L));
+ propertyProtoMap.put("doubleKey1",
+ PropertyProto.newBuilder().setName("doubleKey1").addDoubleValues(1.0));
+ propertyProtoMap.put("booleanKey1",
+ PropertyProto.newBuilder().setName("booleanKey1").addBooleanValues(true));
+ propertyProtoMap.put("stringKey1",
+ PropertyProto.newBuilder().setName("stringKey1").addStringValues("test-value1"));
+ propertyProtoMap.put("byteKey1",
+ PropertyProto.newBuilder().setName("byteKey1").addBytesValues(
+ ByteString.copyFrom(sByteArray1)));
+ propertyProtoMap.put("documentKey1",
+ PropertyProto.newBuilder().setName("documentKey1")
+ .addDocumentValues(sDocumentProperties1.getProto()));
+ List<String> sortedKey = new ArrayList<>(propertyProtoMap.keySet());
+ Collections.sort(sortedKey);
+ for (int i = 0; i < sortedKey.size(); i++) {
+ documentProtoBuilder.addProperties(propertyProtoMap.get(sortedKey.get(i)));
+ }
+ assertThat(document.getProto()).isEqualTo(documentProtoBuilder.build());
+ }
+}
diff --git a/core/tests/coretests/src/android/app/appsearch/AppSearchEmailTest.java b/core/tests/coretests/src/android/app/appsearch/AppSearchEmailTest.java
new file mode 100644
index 0000000..6aa16cc
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/AppSearchEmailTest.java
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+
+@SmallTest
+public class AppSearchEmailTest {
+
+ @Test
+ public void testBuildEmailAndGetValue() {
+ AppSearchEmail email = new AppSearchEmail.Builder("uri")
+ .setFrom("FakeFromAddress")
+ .setCc("CC1", "CC2")
+ // Score and Property are mixed into the middle to make sure DocumentBuilder's
+ // methods can be interleaved with EmailBuilder's methods.
+ .setScore(1)
+ .setProperty("propertyKey", "propertyValue1", "propertyValue2")
+ .setSubject("subject")
+ .setBody("EmailBody")
+ .build();
+
+ assertThat(email.getUri()).isEqualTo("uri");
+ assertThat(email.getFrom()).isEqualTo("FakeFromAddress");
+ assertThat(email.getTo()).isNull();
+ assertThat(email.getCc()).asList().containsExactly("CC1", "CC2");
+ assertThat(email.getBcc()).isNull();
+ assertThat(email.getScore()).isEqualTo(1);
+ assertThat(email.getPropertyString("propertyKey")).isEqualTo("propertyValue1");
+ assertThat(email.getPropertyStringArray("propertyKey")).asList().containsExactly(
+ "propertyValue1", "propertyValue2");
+ assertThat(email.getSubject()).isEqualTo("subject");
+ assertThat(email.getBody()).isEqualTo("EmailBody");
+ }
+}
diff --git a/core/tests/coretests/src/android/app/appsearch/AppSearchSchemaTest.java b/core/tests/coretests/src/android/app/appsearch/AppSearchSchemaTest.java
new file mode 100644
index 0000000..a250172
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/AppSearchSchemaTest.java
@@ -0,0 +1,166 @@
+/*
+ * 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.app.appsearch;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+import static org.testng.Assert.expectThrows;
+
+import android.app.appsearch.AppSearchSchema.PropertyConfig;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.android.icing.proto.IndexingConfig.TokenizerType;
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
+import com.google.android.icing.proto.TermMatchType;
+
+import org.junit.Test;
+
+@SmallTest
+public class AppSearchSchemaTest {
+ @Test
+ public void testGetProto_Email() {
+ AppSearchSchema emailSchema = new AppSearchSchema.Builder("Email")
+ .addProperty(new AppSearchSchema.PropertyConfig.Builder("subject")
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .build()
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder("body")
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .build()
+ ).build();
+
+ SchemaTypeConfigProto expectedEmailProto = SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("Email")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("subject")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ com.google.android.icing.proto.IndexingConfig.newBuilder()
+ .setTokenizerType(TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ )
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("body")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ com.google.android.icing.proto.IndexingConfig.newBuilder()
+ .setTokenizerType(TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ )
+ ).build();
+
+ assertThat(emailSchema.getProto()).isEqualTo(expectedEmailProto);
+ }
+
+ @Test
+ public void testGetProto_MusicRecording() {
+ AppSearchSchema musicRecordingSchema = new AppSearchSchema.Builder("MusicRecording")
+ .addProperty(new AppSearchSchema.PropertyConfig.Builder("artist")
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_REPEATED)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .build()
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder("pubDate")
+ .setDataType(PropertyConfig.DATA_TYPE_INT64)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_NONE)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_NONE)
+ .build()
+ ).build();
+
+ SchemaTypeConfigProto expectedMusicRecordingProto = SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("MusicRecording")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("artist")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.REPEATED)
+ .setIndexingConfig(
+ com.google.android.icing.proto.IndexingConfig.newBuilder()
+ .setTokenizerType(TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ )
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("pubDate")
+ .setDataType(PropertyConfigProto.DataType.Code.INT64)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ com.google.android.icing.proto.IndexingConfig.newBuilder()
+ .setTokenizerType(TokenizerType.Code.NONE)
+ .setTermMatchType(TermMatchType.Code.UNKNOWN)
+ )
+ ).build();
+
+ assertThat(musicRecordingSchema.getProto()).isEqualTo(expectedMusicRecordingProto);
+ }
+
+ @Test
+ public void testInvalidEnums() {
+ PropertyConfig.Builder builder = new AppSearchSchema.PropertyConfig.Builder("test");
+ assertThrows(IllegalArgumentException.class, () -> builder.setDataType(99));
+ assertThrows(IllegalArgumentException.class, () -> builder.setCardinality(99));
+ }
+
+ @Test
+ public void testMissingFields() {
+ PropertyConfig.Builder builder = new AppSearchSchema.PropertyConfig.Builder("test");
+ Exception e = expectThrows(IllegalSchemaException.class, builder::build);
+ assertThat(e).hasMessageThat().contains("Missing field: dataType");
+
+ builder.setDataType(PropertyConfig.DATA_TYPE_DOCUMENT);
+ e = expectThrows(IllegalSchemaException.class, builder::build);
+ assertThat(e).hasMessageThat().contains("Missing field: schemaType");
+
+ builder.setSchemaType("TestType");
+ e = expectThrows(IllegalSchemaException.class, builder::build);
+ assertThat(e).hasMessageThat().contains("Missing field: cardinality");
+
+ builder.setCardinality(PropertyConfig.CARDINALITY_REPEATED);
+ builder.build();
+ }
+
+ @Test
+ public void testDuplicateProperties() {
+ AppSearchSchema.Builder builder = new AppSearchSchema.Builder("Email")
+ .addProperty(new AppSearchSchema.PropertyConfig.Builder("subject")
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .build()
+ ).addProperty(new AppSearchSchema.PropertyConfig.Builder("subject")
+ .setDataType(PropertyConfig.DATA_TYPE_STRING)
+ .setCardinality(PropertyConfig.CARDINALITY_OPTIONAL)
+ .setIndexingType(PropertyConfig.INDEXING_TYPE_PREFIXES)
+ .setTokenizerType(PropertyConfig.TOKENIZER_TYPE_PLAIN)
+ .build()
+ );
+
+ Exception e = expectThrows(IllegalSchemaException.class, builder::build);
+ assertThat(e).hasMessageThat().contains("Property defined more than once: subject");
+ }
+}
diff --git a/core/tests/coretests/src/android/app/appsearch/SearchResultsTest.java b/core/tests/coretests/src/android/app/appsearch/SearchResultsTest.java
new file mode 100644
index 0000000..67cc53c
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/SearchResultsTest.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.SearchResultProto;
+
+import org.junit.Test;
+
+@SmallTest
+public class SearchResultsTest {
+
+ @Test
+ public void testSearchResultsEqual() {
+ final String uri = "testUri";
+ final String schemaType = "testSchema";
+ SearchResultProto.ResultProto result1 = SearchResultProto.ResultProto.newBuilder()
+ .setDocument(DocumentProto.newBuilder()
+ .setUri(uri)
+ .setSchema(schemaType)
+ .build())
+ .build();
+ SearchResultProto searchResults1 = SearchResultProto.newBuilder()
+ .addResults(result1)
+ .build();
+ SearchResults res1 = new SearchResults(searchResults1);
+ SearchResultProto.ResultProto result2 = SearchResultProto.ResultProto.newBuilder()
+ .setDocument(DocumentProto.newBuilder()
+ .setUri(uri)
+ .setSchema(schemaType)
+ .build())
+ .build();
+ SearchResultProto searchResults2 = SearchResultProto.newBuilder()
+ .addResults(result2)
+ .build();
+ SearchResults res2 = new SearchResults(searchResults2);
+ assertThat(res1.toString()).isEqualTo(res2.toString());
+ }
+
+ @Test
+ public void buildSearchSpecWithoutTermMatchType() {
+ assertThrows(RuntimeException.class, () -> SearchSpec.newBuilder()
+ .setSchemaTypes("testSchemaType")
+ .build());
+ }
+}
diff --git a/core/tests/coretests/src/android/app/appsearch/SnippetTest.java b/core/tests/coretests/src/android/app/appsearch/SnippetTest.java
new file mode 100644
index 0000000..3103708
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/SnippetTest.java
@@ -0,0 +1,200 @@
+/*
+ * 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.app.appsearch;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.filters.SmallTest;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.SnippetMatchProto;
+import com.google.android.icing.proto.SnippetProto;
+
+import org.junit.Test;
+
+@SmallTest
+public class SnippetTest {
+
+ // TODO(sidchhabra): Add tests for Double and Long Snippets.
+ @Test
+ public void testSingleStringSnippet() {
+
+ final String propertyKeyString = "content";
+ final String propertyValueString = "A commonly used fake word is foo.\n"
+ + " Another nonsense word that’s used a lot\n"
+ + " is bar.\n";
+ final String uri = "uri1";
+ final String schemaType = "schema1";
+ final String searchWord = "foo";
+ final String exactMatch = "foo";
+ final String window = "is foo";
+
+ // Building the SearchResult received from query.
+ PropertyProto property = PropertyProto.newBuilder()
+ .setName(propertyKeyString)
+ .addStringValues(propertyValueString)
+ .build();
+ DocumentProto documentProto = DocumentProto.newBuilder()
+ .setUri(uri)
+ .setSchema(schemaType)
+ .addProperties(property)
+ .build();
+ SnippetProto snippetProto = SnippetProto.newBuilder()
+ .addEntries(SnippetProto.EntryProto.newBuilder()
+ .setPropertyName(propertyKeyString)
+ .addSnippetMatches(SnippetMatchProto.newBuilder()
+ .setValuesIndex(0)
+ .setExactMatchPosition(29)
+ .setExactMatchBytes(3)
+ .setWindowPosition(26)
+ .setWindowBytes(6)
+ .build())
+ .build())
+ .build();
+ SearchResultProto.ResultProto resultProto = SearchResultProto.ResultProto.newBuilder()
+ .setDocument(documentProto)
+ .setSnippet(snippetProto)
+ .build();
+ SearchResultProto searchResultProto = SearchResultProto.newBuilder()
+ .addResults(resultProto)
+ .build();
+ SearchResults searchResults = new SearchResults(searchResultProto);
+
+ // Making ResultReader and getting Snippet values.
+ while (searchResults.hasNext()) {
+ SearchResults.Result result = searchResults.next();
+ MatchInfo match = result.getMatchInfo().get(0);
+ assertThat(match.getPropertyPath()).isEqualTo(propertyKeyString);
+ assertThat(match.getFullText()).isEqualTo(propertyValueString);
+ assertThat(match.getExactMatch()).isEqualTo(exactMatch);
+ assertThat(match.getSnippet()).isEqualTo(window);
+ }
+ }
+
+ // TODO(sidchhabra): Add tests for Double and Long Snippets.
+ @Test
+ public void testNoSnippets() {
+
+ final String propertyKeyString = "content";
+ final String propertyValueString = "A commonly used fake word is foo.\n"
+ + " Another nonsense word that’s used a lot\n"
+ + " is bar.\n";
+ final String uri = "uri1";
+ final String schemaType = "schema1";
+ final String searchWord = "foo";
+ final String exactMatch = "foo";
+ final String window = "is foo";
+
+ // Building the SearchResult received from query.
+ PropertyProto property = PropertyProto.newBuilder()
+ .setName(propertyKeyString)
+ .addStringValues(propertyValueString)
+ .build();
+ DocumentProto documentProto = DocumentProto.newBuilder()
+ .setUri(uri)
+ .setSchema(schemaType)
+ .addProperties(property)
+ .build();
+ SearchResultProto.ResultProto resultProto = SearchResultProto.ResultProto.newBuilder()
+ .setDocument(documentProto)
+ .build();
+ SearchResultProto searchResultProto = SearchResultProto.newBuilder()
+ .addResults(resultProto)
+ .build();
+ SearchResults searchResults = new SearchResults(searchResultProto);
+
+ while (searchResults.hasNext()) {
+ SearchResults.Result result = searchResults.next();
+ assertThat(result.getMatchInfo()).isEqualTo(null);
+ }
+ }
+
+ @Test
+ public void testMultipleStringSnippet() {
+ final String searchWord = "Test";
+
+ // Building the SearchResult received from query.
+ PropertyProto property1 = PropertyProto.newBuilder()
+ .setName("sender.name")
+ .addStringValues("Test Name Jr.")
+ .build();
+ PropertyProto property2 = PropertyProto.newBuilder()
+ .setName("sender.email")
+ .addStringValues("TestNameJr@gmail.com")
+ .build();
+ DocumentProto documentProto = DocumentProto.newBuilder()
+ .setUri("uri1")
+ .setSchema("schema1")
+ .addProperties(property1)
+ .addProperties(property2)
+ .build();
+ SnippetProto snippetProto = SnippetProto.newBuilder()
+ .addEntries(
+ SnippetProto.EntryProto.newBuilder()
+ .setPropertyName("sender.name")
+ .addSnippetMatches(
+ SnippetMatchProto.newBuilder()
+ .setValuesIndex(0)
+ .setExactMatchPosition(0)
+ .setExactMatchBytes(4)
+ .setWindowPosition(0)
+ .setWindowBytes(9)
+ .build())
+ .build())
+ .addEntries(
+ SnippetProto.EntryProto.newBuilder()
+ .setPropertyName("sender.email")
+ .addSnippetMatches(
+ SnippetMatchProto.newBuilder()
+ .setValuesIndex(0)
+ .setExactMatchPosition(0)
+ .setExactMatchBytes(20)
+ .setWindowPosition(0)
+ .setWindowBytes(20)
+ .build())
+ .build()
+ )
+ .build();
+ SearchResultProto.ResultProto resultProto = SearchResultProto.ResultProto.newBuilder()
+ .setDocument(documentProto)
+ .setSnippet(snippetProto)
+ .build();
+ SearchResultProto searchResultProto = SearchResultProto.newBuilder()
+ .addResults(resultProto)
+ .build();
+ SearchResults searchResults = new SearchResults(searchResultProto);
+
+ // Making ResultReader and getting Snippet values.
+ while (searchResults.hasNext()) {
+ SearchResults.Result result = searchResults.next();
+
+ MatchInfo match1 = result.getMatchInfo().get(0);
+ assertThat(match1.getPropertyPath()).isEqualTo("sender.name");
+ assertThat(match1.getFullText()).isEqualTo("Test Name Jr.");
+ assertThat(match1.getExactMatch()).isEqualTo("Test");
+ assertThat(match1.getSnippet()).isEqualTo("Test Name");
+
+ MatchInfo match2 = result.getMatchInfo().get(1);
+ assertThat(match2.getPropertyPath()).isEqualTo("sender.email");
+ assertThat(match2.getFullText()).isEqualTo("TestNameJr@gmail.com");
+ assertThat(match2.getExactMatch()).isEqualTo("TestNameJr@gmail.com");
+ assertThat(match2.getSnippet()).isEqualTo("TestNameJr@gmail.com");
+ }
+ }
+}
diff --git a/core/tests/coretests/src/android/app/appsearch/impl/CustomerDocumentTest.java b/core/tests/coretests/src/android/app/appsearch/impl/CustomerDocumentTest.java
new file mode 100644
index 0000000..b29483c
--- /dev/null
+++ b/core/tests/coretests/src/android/app/appsearch/impl/CustomerDocumentTest.java
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.app.appsearch.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.annotation.NonNull;
+import android.app.appsearch.AppSearchDocument;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Test;
+
+/**
+ * Tests that {@link AppSearchDocument} and {@link AppSearchDocument.Builder} are extendable by
+ * developers.
+ *
+ * <p>This class is intentionally in a different package than {@link AppSearchDocument} to make sure
+ * there are no package-private methods required for external developers to add custom types.
+ */
+@SmallTest
+public class CustomerDocumentTest {
+
+ private static byte[] sByteArray1 = new byte[]{(byte) 1, (byte) 2, (byte) 3};
+ private static byte[] sByteArray2 = new byte[]{(byte) 4, (byte) 5, (byte) 6};
+ private static AppSearchDocument sDocumentProperties1 = new AppSearchDocument
+ .Builder("sDocumentProperties1", "sDocumentPropertiesSchemaType1")
+ .build();
+ private static AppSearchDocument sDocumentProperties2 = new AppSearchDocument
+ .Builder("sDocumentProperties2", "sDocumentPropertiesSchemaType2")
+ .build();
+
+ @Test
+ public void testBuildCustomerDocument() {
+ CustomerDocument customerDocument = new CustomerDocument.Builder("uri1")
+ .setScore(1)
+ .setCreationTimestampMillis(0)
+ .setProperty("longKey1", 1L, 2L, 3L)
+ .setProperty("doubleKey1", 1.0, 2.0, 3.0)
+ .setProperty("booleanKey1", true, false, true)
+ .setProperty("stringKey1", "test-value1", "test-value2", "test-value3")
+ .setProperty("byteKey1", sByteArray1, sByteArray2)
+ .setProperty("documentKey1", sDocumentProperties1, sDocumentProperties2)
+ .build();
+
+ assertThat(customerDocument.getUri()).isEqualTo("uri1");
+ assertThat(customerDocument.getSchemaType()).isEqualTo("customerDocument");
+ assertThat(customerDocument.getScore()).isEqualTo(1);
+ assertThat(customerDocument.getCreationTimestampMillis()).isEqualTo(0L);
+ assertThat(customerDocument.getPropertyLongArray("longKey1")).asList()
+ .containsExactly(1L, 2L, 3L);
+ assertThat(customerDocument.getPropertyDoubleArray("doubleKey1")).usingExactEquality()
+ .containsExactly(1.0, 2.0, 3.0);
+ assertThat(customerDocument.getPropertyBooleanArray("booleanKey1")).asList()
+ .containsExactly(true, false, true);
+ assertThat(customerDocument.getPropertyStringArray("stringKey1")).asList()
+ .containsExactly("test-value1", "test-value2", "test-value3");
+ assertThat(customerDocument.getPropertyBytesArray("byteKey1")).asList()
+ .containsExactly(sByteArray1, sByteArray2);
+ assertThat(customerDocument.getPropertyDocumentArray("documentKey1")).asList()
+ .containsExactly(sDocumentProperties1, sDocumentProperties2);
+ }
+
+ /**
+ * An example document type for test purposes, defined outside of
+ * {@link android.app.appsearch.AppSearch} (the way an external developer would define it).
+ */
+ private static class CustomerDocument extends AppSearchDocument {
+ private CustomerDocument(AppSearchDocument document) {
+ super(document);
+ }
+
+ public static class Builder extends AppSearchDocument.Builder<CustomerDocument.Builder> {
+ private Builder(@NonNull String uri) {
+ super(uri, "customerDocument");
+ }
+
+ @Override
+ public CustomerDocument build() {
+ return new CustomerDocument(super.build());
+ }
+ }
+ }
+}
diff --git a/core/tests/coretests/src/android/content/pm/ShortcutQueryWrapperTest.java b/core/tests/coretests/src/android/content/pm/ShortcutQueryWrapperTest.java
new file mode 100644
index 0000000..8f8488f
--- /dev/null
+++ b/core/tests/coretests/src/android/content/pm/ShortcutQueryWrapperTest.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright (C) 2020 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;
+
+import static org.junit.Assert.assertEquals;
+
+import android.content.ComponentName;
+import android.content.LocusId;
+import android.os.Parcel;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.android.collect.Lists;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(AndroidJUnit4.class)
+@Presubmit
+public class ShortcutQueryWrapperTest {
+
+ private static final long CHANGED_SINCE = TimeUnit.SECONDS.toMillis(1);
+ private static final String PACKAGE_NAME = "com.android.test";
+ private static final List<String> SHORTCUT_IDS = Lists.newArrayList("s1", "s2", "s3");
+ private static final List<LocusId> LOCUS_IDS = Lists.newArrayList(
+ new LocusId("id1"), new LocusId("id2"), new LocusId("id3"));
+ private static final ComponentName COMPONENT_NAME = new ComponentName(
+ PACKAGE_NAME, "ShortcutQueryTest");
+ private static final int QUERY_FLAG = LauncherApps.ShortcutQuery.FLAG_MATCH_ALL_KINDS;
+
+ private ShortcutQueryWrapper mShortcutQuery;
+
+ @Before
+ public void setUp() throws Exception {
+ mShortcutQuery = new ShortcutQueryWrapper(new LauncherApps.ShortcutQuery()
+ .setChangedSince(CHANGED_SINCE)
+ .setPackage(PACKAGE_NAME)
+ .setShortcutIds(SHORTCUT_IDS)
+ .setLocusIds(LOCUS_IDS)
+ .setActivity(COMPONENT_NAME)
+ .setQueryFlags(QUERY_FLAG));
+ }
+
+ @Test
+ public void testWriteAndReadFromParcel() {
+ Parcel p = Parcel.obtain();
+ mShortcutQuery.writeToParcel(p, 0);
+ p.setDataPosition(0);
+ ShortcutQueryWrapper q = ShortcutQueryWrapper.CREATOR.createFromParcel(p);
+ assertEquals("Changed since doesn't match!", CHANGED_SINCE, q.getChangedSince());
+ assertEquals("Package name doesn't match!", PACKAGE_NAME, q.getPackage());
+ assertEquals("Shortcut ids doesn't match", SHORTCUT_IDS, q.getShortcutIds());
+ assertEquals("Locus ids doesn't match", LOCUS_IDS, q.getLocusIds());
+ assertEquals("Component name doesn't match", COMPONENT_NAME, q.getActivity());
+ assertEquals("Query flag doesn't match", QUERY_FLAG, q.getQueryFlags());
+ p.recycle();
+ }
+}
diff --git a/core/tests/coretests/src/android/provider/SettingsProviderTest.java b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
index a5f5f67..4adbc91 100644
--- a/core/tests/coretests/src/android/provider/SettingsProviderTest.java
+++ b/core/tests/coretests/src/android/provider/SettingsProviderTest.java
@@ -220,62 +220,6 @@
assertEquals(null, Settings.Bookmarks.getIntentForShortcut(r, '*'));
}
- @MediumTest
- public void testParseProviderList() {
- ContentResolver r = getContext().getContentResolver();
-
- // We only accept "+value" and "-value"
- // Test adding a value
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test1");
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test1"));
-
- // Test adding a second value
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test2");
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test1"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test2"));
-
- // Test adding a third value
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test3");
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test1"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test2"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test3"));
-
- // Test deleting the first value in a 3 item list
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test1");
- assertFalse(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test1"));
-
- // Test deleting the middle value in a 3 item list
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test4");
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test2"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test3"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test4"));
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test3");
- assertFalse(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test3"));
-
- // Test deleting the last value in a 3 item list
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "+test5");
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test2"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test4"));
- assertTrue(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test5"));
- Settings.Secure.putString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test5");
- assertFalse(Settings.Secure.getString(r, Settings.Secure.LOCATION_PROVIDERS_ALLOWED)
- .contains("test5"));
- }
-
private boolean findUser(UserManager um, int userHandle) {
for (UserInfo user : um.getUsers()) {
if (user.id == userHandle) {
diff --git a/core/tests/coretests/src/android/text/EmojiTest.java b/core/tests/coretests/src/android/text/EmojiTest.java
index 7a42731..0aeeb74 100644
--- a/core/tests/coretests/src/android/text/EmojiTest.java
+++ b/core/tests/coretests/src/android/text/EmojiTest.java
@@ -83,12 +83,27 @@
{0x1FA70, 0x1FA73},
{0x1FA78, 0x1FA7A},
{0x1FA80, 0x1FA82},
- {0x1FA90, 0x1FA95}
+ {0x1FA90, 0x1FA95},
+ },
+ { // EMOJI 13
+ {0x1F6D6, 0x1F6D7},
+ {0x1F6FB, 0x1F6FC},
+ {0x1F90C, 0x1F90C},
+ {0x1F972, 0x1F972},
+ {0x1F977, 0x1F978},
+ {0x1F9A3, 0x1F9A4},
+ {0x1F9AB, 0x1F9AD},
+ {0x1F9CB, 0x1F9CB},
+ {0x1FA74, 0x1FA74},
+ {0x1FA83, 0x1FA86},
+ {0x1FA96, 0x1FAA8},
+ {0x1FAB0, 0x1FAB6},
+ {0x1FAC0, 0x1FAC2},
+ {0x1FAD0, 0x1FAD6},
}
};
final Bidi icuBidi = new Bidi(0 /* maxLength */, 0 /* maxRunCount */);
- icuBidi.setCustomClassifier(new AndroidBidi.EmojiBidiOverride());
for (int version = 0; version < data.length; version++) {
for (int row = 0; row < data[version].length; row++) {
@@ -125,6 +140,15 @@
{ // EMOJI 11
{0x1F9B5, 0x1F9B6},
{0x1F9B8, 0x1F9B9}
+ },
+ { // EMOJI 12
+ {0x1F90F, 0x1F90F},
+ {0x1F9BB, 0x1F9BB},
+ {0x1F9CD, 0x1F9CF},
+ },
+ { // EMOJI 13
+ {0x1F90C, 0x1F90C},
+ {0x1F977, 0x1F977}
}
};
for (int version = 0; version < data.length; version++) {
diff --git a/core/tests/coretests/src/android/widget/TextViewActivityTest.java b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
index a72be25..45d4b38 100644
--- a/core/tests/coretests/src/android/widget/TextViewActivityTest.java
+++ b/core/tests/coretests/src/android/widget/TextViewActivityTest.java
@@ -65,6 +65,7 @@
import android.app.Instrumentation;
import android.content.ClipData;
import android.content.ClipboardManager;
+import android.os.Bundle;
import android.support.test.uiautomator.UiDevice;
import android.text.InputType;
import android.text.Selection;
@@ -75,6 +76,7 @@
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
+import android.view.accessibility.AccessibilityNodeInfo;
import android.view.textclassifier.SelectionEvent;
import android.view.textclassifier.TextClassificationManager;
import android.view.textclassifier.TextClassifier;
@@ -358,6 +360,20 @@
}
@Test
+ public void testToolbarAppearsAccessibilityLongClick() throws Throwable {
+ final String text = "Toolbar appears after performing accessibility's ACTION_LONG_CLICK.";
+ mActivityRule.runOnUiThread(() -> {
+ final TextView textView = mActivity.findViewById(R.id.textview);
+ final Bundle args = new Bundle();
+ textView.performAccessibilityAction(AccessibilityNodeInfo.ACTION_LONG_CLICK, args);
+ });
+ mInstrumentation.waitForIdleSync();
+
+ sleepForFloatingToolbarPopup();
+ assertFloatingToolbarIsDisplayed();
+ }
+
+ @Test
public void testSelectionRemovedWhenNonselectableTextLosesFocus() throws Throwable {
final TextLinks.TextLink textLink = addLinkifiedTextToTextView(R.id.nonselectable_textview);
final int position = (textLink.getStart() + textLink.getEnd()) / 2;
diff --git a/graphics/java/android/graphics/Bitmap.java b/graphics/java/android/graphics/Bitmap.java
index f787759..5a4eef2 100644
--- a/graphics/java/android/graphics/Bitmap.java
+++ b/graphics/java/android/graphics/Bitmap.java
@@ -23,7 +23,6 @@
import android.annotation.Nullable;
import android.annotation.WorkerThread;
import android.compat.annotation.UnsupportedAppUsage;
-import android.content.res.ResourcesImpl;
import android.hardware.HardwareBuffer;
import android.os.Build;
import android.os.Parcel;
@@ -40,6 +39,7 @@
import libcore.util.NativeAllocationRegistry;
import java.io.OutputStream;
+import java.lang.ref.WeakReference;
import java.nio.Buffer;
import java.nio.ByteBuffer;
import java.nio.IntBuffer;
@@ -86,21 +86,15 @@
private int mWidth;
@UnsupportedAppUsage
private int mHeight;
+ private WeakReference<HardwareBuffer> mHardwareBuffer;
private boolean mRecycled;
private ColorSpace mColorSpace;
- /** @hide */
- public int mDensity = getDefaultDensity();
+ /*package*/ int mDensity = getDefaultDensity();
private static volatile int sDefaultDensity = -1;
- /** @hide Used only when ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD is true. */
- public static volatile int sPreloadTracingNumInstantiatedBitmaps;
-
- /** @hide Used only when ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD is true. */
- public static volatile long sPreloadTracingTotalBitmapsSize;
-
/**
* For backwards compatibility, allows the app layer to change the default
* density when running old apps.
@@ -164,17 +158,14 @@
Bitmap.class.getClassLoader(), nativeGetNativeFinalizer(), allocationByteCount);
}
registry.registerNativeAllocation(this, nativeBitmap);
-
- if (ResourcesImpl.TRACE_FOR_DETAILED_PRELOAD) {
- sPreloadTracingNumInstantiatedBitmaps++;
- long nativeSize = NATIVE_ALLOCATION_SIZE + allocationByteCount;
- sPreloadTracingTotalBitmapsSize += nativeSize;
- }
}
/**
* Return the pointer to the native object.
+ *
* @hide
+ * Must be public for access from android.graphics.pdf,
+ * but must not be called from outside the UI module.
*/
public long getNativeInstance() {
return mNativePtr;
@@ -377,6 +368,7 @@
nativeRecycle(mNativePtr);
mNinePatchChunk = null;
mRecycled = true;
+ mHardwareBuffer = null;
}
}
@@ -759,7 +751,12 @@
if (colorSpace == null) {
colorSpace = ColorSpace.get(ColorSpace.Named.SRGB);
}
- return nativeWrapHardwareBufferBitmap(hardwareBuffer, colorSpace.getNativeInstance());
+ Bitmap bitmap = nativeWrapHardwareBufferBitmap(hardwareBuffer,
+ colorSpace.getNativeInstance());
+ if (bitmap != null) {
+ bitmap.mHardwareBuffer = new WeakReference<HardwareBuffer>(hardwareBuffer);
+ }
+ return bitmap;
}
/**
@@ -1340,7 +1337,10 @@
* Populates a rectangle with the bitmap's optical insets.
*
* @param outInsets Rect to populate with optical insets
+ *
* @hide
+ * Must be public for access from android.graphics.drawable,
+ * but must not be called from outside the UI module.
*/
public void getOpticalInsets(@NonNull Rect outInsets) {
if (mNinePatchInsets == null) {
@@ -1350,7 +1350,11 @@
}
}
- /** @hide */
+ /**
+ * @hide
+ * Must be public for access from android.graphics.drawable,
+ * but must not be called from outside the UI module.
+ */
public NinePatch.InsetStruct getNinePatchInsets() {
return mNinePatchInsets;
}
@@ -1456,10 +1460,8 @@
* to {@link #reconfigure(int, int, Config)}, {@link #setPixel(int, int, int)},
* {@link #setPixels(int[], int, int, int, int, int, int)} and {@link #eraseColor(int)} will
* fail and throw an IllegalStateException.
- *
- * @hide
*/
- public void setImmutable() {
+ private void setImmutable() {
if (isMutable()) {
nativeSetImmutable(mNativePtr);
}
@@ -1603,6 +1605,8 @@
/**
* @hide
+ * Must be public for access from android.graphics.drawable,
+ * but must not be called from outside the UI module.
*/
@UnsupportedAppUsage
static public int scaleFromDensity(int size, int sdensity, int tdensity) {
@@ -2248,12 +2252,22 @@
*
* Note: the HardwareBuffer does *not* have an associated {@link ColorSpace}.
* To render this object the same as its rendered with this Bitmap, you
- * should also call {@link getColorSpace}.
+ * should also call {@link #getColorSpace()}.</p>
*
- * @hide
+ * Must not be modified while a wrapped Bitmap is accessing it. Doing so will
+ * result in undefined behavior.</p>
+ *
+ * @throws IllegalStateException if the bitmap's config is not {@link Config#HARDWARE}
+ * or if the bitmap has been recycled.
*/
- public HardwareBuffer getHardwareBuffer() {
- return nativeGetHardwareBuffer(mNativePtr);
+ public @NonNull HardwareBuffer getHardwareBuffer() {
+ checkRecycled("Can't getHardwareBuffer from a recycled bitmap");
+ HardwareBuffer hardwareBuffer = mHardwareBuffer == null ? null : mHardwareBuffer.get();
+ if (hardwareBuffer == null) {
+ hardwareBuffer = nativeGetHardwareBuffer(mNativePtr);
+ mHardwareBuffer = new WeakReference<HardwareBuffer>(hardwareBuffer);
+ }
+ return hardwareBuffer;
}
//////////// native methods
diff --git a/graphics/java/android/graphics/BitmapRegionDecoder.java b/graphics/java/android/graphics/BitmapRegionDecoder.java
index 34eba97..8d0f799 100644
--- a/graphics/java/android/graphics/BitmapRegionDecoder.java
+++ b/graphics/java/android/graphics/BitmapRegionDecoder.java
@@ -15,9 +15,11 @@
package android.graphics;
+import android.annotation.NonNull;
import android.compat.annotation.UnsupportedAppUsage;
import android.content.res.AssetManager;
import android.os.Build;
+import android.os.ParcelFileDescriptor;
import java.io.FileDescriptor;
import java.io.FileInputStream;
@@ -43,113 +45,156 @@
/**
* Create a BitmapRegionDecoder from the specified byte array.
- * Currently only the JPEG and PNG formats are supported.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
*
* @param data byte array of compressed image data.
* @param offset offset into data for where the decoder should begin
* parsing.
* @param length the number of bytes, beginning at offset, to parse
- * @param isShareable If this is true, then the BitmapRegionDecoder may keep a
- * shallow reference to the input. If this is false,
- * then the BitmapRegionDecoder will explicitly make a copy of the
- * input data, and keep that. Even if sharing is allowed,
- * the implementation may still decide to make a deep
- * copy of the input data. If an image is progressively encoded,
- * allowing sharing may degrade the decoding speed.
- * @return BitmapRegionDecoder, or null if the image data could not be decoded.
+ * @param isShareable This field has been ignored since
+ * {@link Build.VERSION_CODES#GINGERBREAD}.
+ * @throws IOException if the image format is not supported or can not be decoded.
+ * @deprecated In favor of {@link #newInstance(byte[], int, int)}
+ */
+ @Deprecated
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull byte[] data,
+ int offset, int length, boolean isShareable) throws IOException {
+ return newInstance(data, offset, length);
+ }
+
+ /**
+ * Create a BitmapRegionDecoder from the specified byte array.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
+ *
+ * @param data byte array of compressed image data.
+ * @param offset offset into data for where the decoder should begin
+ * parsing.
+ * @param length the number of bytes, beginning at offset, to parse
* @throws IOException if the image format is not supported or can not be decoded.
*/
- public static BitmapRegionDecoder newInstance(byte[] data,
- int offset, int length, boolean isShareable) throws IOException {
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull byte[] data,
+ int offset, int length) throws IOException {
if ((offset | length) < 0 || data.length < offset + length) {
throw new ArrayIndexOutOfBoundsException();
}
- return nativeNewInstance(data, offset, length, isShareable);
+ return nativeNewInstance(data, offset, length);
}
/**
* Create a BitmapRegionDecoder from the file descriptor.
* The position within the descriptor will not be changed when
* this returns, so the descriptor can be used again as is.
- * Currently only the JPEG and PNG formats are supported.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
*
* @param fd The file descriptor containing the data to decode
- * @param isShareable If this is true, then the BitmapRegionDecoder may keep a
- * shallow reference to the input. If this is false,
- * then the BitmapRegionDecoder will explicitly make a copy of the
- * input data, and keep that. Even if sharing is allowed,
- * the implementation may still decide to make a deep
- * copy of the input data. If an image is progressively encoded,
- * allowing sharing may degrade the decoding speed.
- * @return BitmapRegionDecoder, or null if the image data could not be decoded.
+ * @param isShareable This field has been ignored since
+ * {@link Build.VERSION_CODES#KITKAT}.
+ * @throws IOException if the image format is not supported or can not be decoded.
+ * @deprecated In favor of {@link #newInstance(ParcelFileDescriptor)}
+ */
+ @Deprecated
+ @NonNull
+ public static BitmapRegionDecoder newInstance(
+ @NonNull FileDescriptor fd, boolean isShareable) throws IOException {
+ return nativeNewInstance(fd);
+ }
+
+ /**
+ * Create a BitmapRegionDecoder from the file descriptor.
+ * The position within the descriptor will not be changed when
+ * this returns, so the descriptor can be used again as is.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
+ *
+ * @param pfd The parcel file descriptor containing the data to decode
* @throws IOException if the image format is not supported or can not be decoded.
*/
+ @NonNull
public static BitmapRegionDecoder newInstance(
- FileDescriptor fd, boolean isShareable) throws IOException {
- return nativeNewInstance(fd, isShareable);
+ @NonNull ParcelFileDescriptor pfd) throws IOException {
+ return nativeNewInstance(pfd.getFileDescriptor());
}
/**
* Create a BitmapRegionDecoder from an input stream.
* The stream's position will be where ever it was after the encoded data
* was read.
- * Currently only the JPEG and PNG formats are supported.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
*
* @param is The input stream that holds the raw data to be decoded into a
* BitmapRegionDecoder.
- * @param isShareable If this is true, then the BitmapRegionDecoder may keep a
- * shallow reference to the input. If this is false,
- * then the BitmapRegionDecoder will explicitly make a copy of the
- * input data, and keep that. Even if sharing is allowed,
- * the implementation may still decide to make a deep
- * copy of the input data. If an image is progressively encoded,
- * allowing sharing may degrade the decoding speed.
- * @return BitmapRegionDecoder, or null if the image data could not be decoded.
+ * @param isShareable This field has always been ignored.
* @throws IOException if the image format is not supported or can not be decoded.
+ * @deprecated In favor of {@link #newInstance(InputStream)}
*
- * <p class="note">Prior to {@link android.os.Build.VERSION_CODES#KITKAT},
+ * <p class="note">Prior to {@link Build.VERSION_CODES#KITKAT},
* if {@link InputStream#markSupported is.markSupported()} returns true,
* <code>is.mark(1024)</code> would be called. As of
- * {@link android.os.Build.VERSION_CODES#KITKAT}, this is no longer the case.</p>
+ * {@link Build.VERSION_CODES#KITKAT}, this is no longer the case.</p>
*/
- public static BitmapRegionDecoder newInstance(InputStream is,
+ @Deprecated
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull InputStream is,
boolean isShareable) throws IOException {
+ return newInstance(is);
+ }
+
+ /**
+ * Create a BitmapRegionDecoder from an input stream.
+ * The stream's position will be where ever it was after the encoded data
+ * was read.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
+ *
+ * @param is The input stream that holds the raw data to be decoded into a
+ * BitmapRegionDecoder.
+ * @throws IOException if the image format is not supported or can not be decoded.
+ */
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull InputStream is) throws IOException {
if (is instanceof AssetManager.AssetInputStream) {
return nativeNewInstance(
- ((AssetManager.AssetInputStream) is).getNativeAsset(),
- isShareable);
+ ((AssetManager.AssetInputStream) is).getNativeAsset());
} else {
// pass some temp storage down to the native code. 1024 is made up,
// but should be large enough to avoid too many small calls back
// into is.read(...).
byte [] tempStorage = new byte[16 * 1024];
- return nativeNewInstance(is, tempStorage, isShareable);
+ return nativeNewInstance(is, tempStorage);
}
}
/**
* Create a BitmapRegionDecoder from a file path.
- * Currently only the JPEG and PNG formats are supported.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
*
* @param pathName complete path name for the file to be decoded.
- * @param isShareable If this is true, then the BitmapRegionDecoder may keep a
- * shallow reference to the input. If this is false,
- * then the BitmapRegionDecoder will explicitly make a copy of the
- * input data, and keep that. Even if sharing is allowed,
- * the implementation may still decide to make a deep
- * copy of the input data. If an image is progressively encoded,
- * allowing sharing may degrade the decoding speed.
- * @return BitmapRegionDecoder, or null if the image data could not be decoded.
+ * @param isShareable This field has always been ignored.
+ * @throws IOException if the image format is not supported or can not be decoded.
+ * @deprecated In favor of {@link #newInstance(String)}
+ */
+ @Deprecated
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull String pathName,
+ boolean isShareable) throws IOException {
+ return newInstance(pathName);
+ }
+
+ /**
+ * Create a BitmapRegionDecoder from a file path.
+ * Currently only the JPEG, PNG, WebP and HEIF formats are supported.
+ *
+ * @param pathName complete path name for the file to be decoded.
* @throws IOException if the image format is not supported or can not be decoded.
*/
- public static BitmapRegionDecoder newInstance(String pathName,
- boolean isShareable) throws IOException {
+ @NonNull
+ public static BitmapRegionDecoder newInstance(@NonNull String pathName) throws IOException {
BitmapRegionDecoder decoder = null;
InputStream stream = null;
try {
stream = new FileInputStream(pathName);
- decoder = newInstance(stream, isShareable);
+ decoder = newInstance(stream);
} finally {
if (stream != null) {
try {
@@ -275,11 +320,11 @@
@UnsupportedAppUsage
private static native BitmapRegionDecoder nativeNewInstance(
- byte[] data, int offset, int length, boolean isShareable);
+ byte[] data, int offset, int length);
private static native BitmapRegionDecoder nativeNewInstance(
- FileDescriptor fd, boolean isShareable);
+ FileDescriptor fd);
private static native BitmapRegionDecoder nativeNewInstance(
- InputStream is, byte[] storage, boolean isShareable);
+ InputStream is, byte[] storage);
private static native BitmapRegionDecoder nativeNewInstance(
- long asset, boolean isShareable);
+ long asset);
}
diff --git a/graphics/java/android/graphics/LargeBitmap.java b/graphics/java/android/graphics/LargeBitmap.java
deleted file mode 100644
index 936c338..0000000
--- a/graphics/java/android/graphics/LargeBitmap.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2006 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.graphics;
-
-/**
- * LargeBitmap can be used to decode a rectangle region from an image.
- * LargeBimap is particularly useful when an original image is large and
- * you only need parts of the image.
- *
- * To create a LargeBitmap, call BitmapFactory.createLargeBitmap().
- * Given a LargeBitmap, users can call decodeRegion() repeatedly
- * to get a decoded Bitmap of the specified region.
- * @hide
- */
-public final class LargeBitmap {
- private long mNativeLargeBitmap;
- private boolean mRecycled;
-
- /* Private constructor that must received an already allocated native
- large bitmap int (pointer).
-
- This can be called from JNI code.
- */
- private LargeBitmap(long nativeLbm) {
- mNativeLargeBitmap = nativeLbm;
- mRecycled = false;
- }
-
- /**
- * Decodes a rectangle region in the image specified by rect.
- *
- * @param rect The rectangle that specified the region to be decode.
- * @param opts null-ok; Options that control downsampling.
- * inPurgeable is not supported.
- * @return The decoded bitmap, or null if the image data could not be
- * decoded.
- */
- public Bitmap decodeRegion(Rect rect, BitmapFactory.Options options) {
- checkRecycled("decodeRegion called on recycled large bitmap");
- if (rect.left < 0 || rect.top < 0 || rect.right > getWidth() || rect.bottom > getHeight())
- throw new IllegalArgumentException("rectangle is not inside the image");
- return nativeDecodeRegion(mNativeLargeBitmap, rect.left, rect.top,
- rect.right - rect.left, rect.bottom - rect.top, options);
- }
-
- /** Returns the original image's width */
- public int getWidth() {
- checkRecycled("getWidth called on recycled large bitmap");
- return nativeGetWidth(mNativeLargeBitmap);
- }
-
- /** Returns the original image's height */
- public int getHeight() {
- checkRecycled("getHeight called on recycled large bitmap");
- return nativeGetHeight(mNativeLargeBitmap);
- }
-
- /**
- * Frees up the memory associated with this large bitmap, and mark the
- * large bitmap as "dead", meaning it will throw an exception if decodeRegion(),
- * getWidth() or getHeight() is called.
- * This operation cannot be reversed, so it should only be called if you are
- * sure there are no further uses for the large bitmap. This is an advanced call,
- * and normally need not be called, since the normal GC process will free up this
- * memory when there are no more references to this bitmap.
- */
- public void recycle() {
- if (!mRecycled) {
- nativeClean(mNativeLargeBitmap);
- mRecycled = true;
- }
- }
-
- /**
- * Returns true if this large bitmap has been recycled.
- * If so, then it is an error to try use its method.
- *
- * @return true if the large bitmap has been recycled
- */
- public final boolean isRecycled() {
- return mRecycled;
- }
-
- /**
- * Called by methods that want to throw an exception if the bitmap
- * has already been recycled.
- */
- private void checkRecycled(String errorMessage) {
- if (mRecycled) {
- throw new IllegalStateException(errorMessage);
- }
- }
-
- protected void finalize() {
- recycle();
- }
-
- private static native Bitmap nativeDecodeRegion(long nativeLbm,
- int start_x, int start_y, int width, int height,
- BitmapFactory.Options options);
- private static native int nativeGetWidth(long nativeLbm);
- private static native int nativeGetHeight(long nativeLbm);
- private static native void nativeClean(long nativeLbm);
-}
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index ac2fd98..f7fc522 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -53,8 +53,6 @@
host: {
include_dirs: [
"external/vulkan-headers/include",
- "frameworks/native/libs/math/include",
- "frameworks/native/libs/ui/include",
],
cflags: [
"-Wno-unused-variable",
@@ -71,6 +69,10 @@
"libminikin",
],
+ static_libs: [
+ "libui-types",
+ ],
+
target: {
android: {
shared_libs: [
@@ -83,7 +85,6 @@
"libGLESv2",
"libGLESv3",
"libvulkan",
- "libui",
"libnativedisplay",
"libnativewindow",
"libprotobuf-cpp-lite",
@@ -348,6 +349,7 @@
"libstatspull",
"libstatssocket",
"libpdfium",
+ "libbinder_ndk",
],
static_libs: [
"libgif",
@@ -459,6 +461,7 @@
"service/GraphicsStatsService.cpp",
"thread/CommonPool.cpp",
"utils/GLUtils.cpp",
+ "utils/NdkUtils.cpp",
"utils/StringUtils.cpp",
"AutoBackendTextureRelease.cpp",
"DeferredLayerUpdater.cpp",
@@ -518,6 +521,7 @@
android: {
shared_libs: [
"libgui",
+ "libui",
],
}
},
diff --git a/libs/hwui/CanvasTransform.cpp b/libs/hwui/CanvasTransform.cpp
index 8c37d73..9d03ce5 100644
--- a/libs/hwui/CanvasTransform.cpp
+++ b/libs/hwui/CanvasTransform.cpp
@@ -22,7 +22,6 @@
#include <SkGradientShader.h>
#include <SkPaint.h>
#include <SkShader.h>
-#include <ui/ColorSpace.h>
#include <algorithm>
#include <cmath>
diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp
index a3d552f..be8f852 100644
--- a/libs/hwui/HardwareBitmapUploader.cpp
+++ b/libs/hwui/HardwareBitmapUploader.cpp
@@ -16,12 +16,7 @@
#include "HardwareBitmapUploader.h"
-#include "hwui/Bitmap.h"
-#include "renderthread/EglManager.h"
-#include "renderthread/VulkanManager.h"
-#include "thread/ThreadBase.h"
-#include "utils/TimeUtils.h"
-
+#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
@@ -29,11 +24,20 @@
#include <GrContext.h>
#include <SkCanvas.h>
#include <SkImage.h>
+#include <private/android/AHardwareBufferHelpers.h>
#include <utils/GLUtils.h>
+#include <utils/NdkUtils.h>
#include <utils/Trace.h>
#include <utils/TraceUtils.h>
+
#include <thread>
+#include "hwui/Bitmap.h"
+#include "renderthread/EglManager.h"
+#include "renderthread/VulkanManager.h"
+#include "thread/ThreadBase.h"
+#include "utils/TimeUtils.h"
+
namespace android::uirenderer {
class AHBUploader;
@@ -42,7 +46,7 @@
static sp<AHBUploader> sUploader = nullptr;
struct FormatInfo {
- PixelFormat pixelFormat;
+ AHardwareBuffer_Format bufferFormat;
GLint format, type;
VkFormat vkFormat;
bool isSupported = false;
@@ -71,10 +75,10 @@
}
bool uploadHardwareBitmap(const SkBitmap& bitmap, const FormatInfo& format,
- sp<GraphicBuffer> graphicBuffer) {
+ AHardwareBuffer* ahb) {
ATRACE_CALL();
beginUpload();
- bool result = onUploadHardwareBitmap(bitmap, format, graphicBuffer);
+ bool result = onUploadHardwareBitmap(bitmap, format, ahb);
endUpload();
return result;
}
@@ -93,7 +97,7 @@
virtual void onDestroy() = 0;
virtual bool onUploadHardwareBitmap(const SkBitmap& bitmap, const FormatInfo& format,
- sp<GraphicBuffer> graphicBuffer) = 0;
+ AHardwareBuffer* ahb) = 0;
virtual void onBeginUpload() = 0;
bool shouldTimeOutLocked() {
@@ -165,16 +169,16 @@
}
bool onUploadHardwareBitmap(const SkBitmap& bitmap, const FormatInfo& format,
- sp<GraphicBuffer> graphicBuffer) override {
+ AHardwareBuffer* ahb) override {
ATRACE_CALL();
EGLDisplay display = getUploadEglDisplay();
LOG_ALWAYS_FATAL_IF(display == EGL_NO_DISPLAY, "Failed to get EGL_DEFAULT_DISPLAY! err=%s",
uirenderer::renderthread::EglManager::eglErrorString());
- // We use an EGLImage to access the content of the GraphicBuffer
+ // We use an EGLImage to access the content of the buffer
// The EGL image is later bound to a 2D texture
- EGLClientBuffer clientBuffer = (EGLClientBuffer)graphicBuffer->getNativeBuffer();
+ EGLClientBuffer clientBuffer = (EGLClientBuffer)AHardwareBuffer_to_ANativeWindowBuffer(ahb);
AutoEglImage autoImage(display, clientBuffer);
if (autoImage.image == EGL_NO_IMAGE_KHR) {
ALOGW("Could not create EGL image, err =%s",
@@ -272,13 +276,13 @@
}
bool onUploadHardwareBitmap(const SkBitmap& bitmap, const FormatInfo& format,
- sp<GraphicBuffer> graphicBuffer) override {
+ AHardwareBuffer* ahb) override {
ATRACE_CALL();
std::lock_guard _lock{mLock};
- sk_sp<SkImage> image = SkImage::MakeFromAHardwareBufferWithData(mGrContext.get(),
- bitmap.pixmap(), reinterpret_cast<AHardwareBuffer*>(graphicBuffer.get()));
+ sk_sp<SkImage> image =
+ SkImage::MakeFromAHardwareBufferWithData(mGrContext.get(), bitmap.pixmap(), ahb);
return (image.get() != nullptr);
}
@@ -294,13 +298,17 @@
// Gralloc shouldn't let us create a USAGE_HW_TEXTURE if GLES is unable to consume it, so
// we don't need to double-check the GLES version/extension.
std::call_once(sOnce, []() {
- sp<GraphicBuffer> buffer = new GraphicBuffer(1, 1, PIXEL_FORMAT_RGBA_FP16,
- GraphicBuffer::USAGE_HW_TEXTURE |
- GraphicBuffer::USAGE_SW_WRITE_NEVER |
- GraphicBuffer::USAGE_SW_READ_NEVER,
- "tempFp16Buffer");
- status_t error = buffer->initCheck();
- hasFP16Support = !error;
+ AHardwareBuffer_Desc desc = {
+ .width = 1,
+ .height = 1,
+ .layers = 1,
+ .format = AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT,
+ .usage = AHARDWAREBUFFER_USAGE_CPU_READ_NEVER |
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER |
+ AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,
+ };
+ UniqueAHardwareBuffer buffer = allocateAHardwareBuffer(desc);
+ hasFP16Support = buffer != nullptr;
});
return hasFP16Support;
@@ -314,7 +322,7 @@
[[fallthrough]];
// ARGB_4444 is upconverted to RGBA_8888
case kARGB_4444_SkColorType:
- formatInfo.pixelFormat = PIXEL_FORMAT_RGBA_8888;
+ formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
formatInfo.format = GL_RGBA;
formatInfo.type = GL_UNSIGNED_BYTE;
formatInfo.vkFormat = VK_FORMAT_R8G8B8A8_UNORM;
@@ -323,25 +331,25 @@
formatInfo.isSupported = HardwareBitmapUploader::hasFP16Support();
if (formatInfo.isSupported) {
formatInfo.type = GL_HALF_FLOAT;
- formatInfo.pixelFormat = PIXEL_FORMAT_RGBA_FP16;
+ formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT;
formatInfo.vkFormat = VK_FORMAT_R16G16B16A16_SFLOAT;
} else {
formatInfo.type = GL_UNSIGNED_BYTE;
- formatInfo.pixelFormat = PIXEL_FORMAT_RGBA_8888;
+ formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
formatInfo.vkFormat = VK_FORMAT_R8G8B8A8_UNORM;
}
formatInfo.format = GL_RGBA;
break;
case kRGB_565_SkColorType:
formatInfo.isSupported = true;
- formatInfo.pixelFormat = PIXEL_FORMAT_RGB_565;
+ formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;
formatInfo.format = GL_RGB;
formatInfo.type = GL_UNSIGNED_SHORT_5_6_5;
formatInfo.vkFormat = VK_FORMAT_R5G6B5_UNORM_PACK16;
break;
case kGray_8_SkColorType:
formatInfo.isSupported = usingGL;
- formatInfo.pixelFormat = PIXEL_FORMAT_RGBA_8888;
+ formatInfo.bufferFormat = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
formatInfo.format = GL_LUMINANCE;
formatInfo.type = GL_UNSIGNED_BYTE;
formatInfo.vkFormat = VK_FORMAT_R8G8B8A8_UNORM;
@@ -394,28 +402,27 @@
}
SkBitmap bitmap = makeHwCompatible(format, sourceBitmap);
- sp<GraphicBuffer> buffer = new GraphicBuffer(
- static_cast<uint32_t>(bitmap.width()), static_cast<uint32_t>(bitmap.height()),
- format.pixelFormat,
- GraphicBuffer::USAGE_HW_TEXTURE | GraphicBuffer::USAGE_SW_WRITE_NEVER |
- GraphicBuffer::USAGE_SW_READ_NEVER,
- std::string("Bitmap::allocateHardwareBitmap pid [") + std::to_string(getpid()) +
- "]");
-
- status_t error = buffer->initCheck();
- if (error < 0) {
- ALOGW("createGraphicBuffer() failed in GraphicBuffer.create()");
+ AHardwareBuffer_Desc desc = {
+ .width = static_cast<uint32_t>(bitmap.width()),
+ .height = static_cast<uint32_t>(bitmap.height()),
+ .layers = 1,
+ .format = format.bufferFormat,
+ .usage = AHARDWAREBUFFER_USAGE_CPU_READ_NEVER | AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER |
+ AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE,
+ };
+ UniqueAHardwareBuffer ahb = allocateAHardwareBuffer(desc);
+ if (!ahb) {
+ ALOGW("allocateHardwareBitmap() failed in AHardwareBuffer_allocate()");
return nullptr;
- }
+ };
createUploader(usingGL);
- if (!sUploader->uploadHardwareBitmap(bitmap, format, buffer)) {
+ if (!sUploader->uploadHardwareBitmap(bitmap, format, ahb.get())) {
return nullptr;
}
- return Bitmap::createFrom(buffer->toAHardwareBuffer(), bitmap.colorType(),
- bitmap.refColorSpace(), bitmap.alphaType(),
- Bitmap::computePalette(bitmap));
+ return Bitmap::createFrom(ahb.get(), bitmap.colorType(), bitmap.refColorSpace(),
+ bitmap.alphaType(), Bitmap::computePalette(bitmap));
}
void HardwareBitmapUploader::initialize() {
diff --git a/libs/hwui/Readback.cpp b/libs/hwui/Readback.cpp
index 39900e6..0dea354 100644
--- a/libs/hwui/Readback.cpp
+++ b/libs/hwui/Readback.cpp
@@ -18,7 +18,6 @@
#include <sync/sync.h>
#include <system/window.h>
-#include <ui/GraphicBuffer.h>
#include "DeferredLayerUpdater.h"
#include "Properties.h"
@@ -28,6 +27,7 @@
#include "renderthread/VulkanManager.h"
#include "utils/Color.h"
#include "utils/MathUtils.h"
+#include "utils/NdkUtils.h"
#include "utils/TraceUtils.h"
using namespace android::uirenderer::renderthread;
@@ -54,8 +54,7 @@
return CopyResult::SourceEmpty;
}
- std::unique_ptr<AHardwareBuffer, decltype(&AHardwareBuffer_release)> sourceBuffer(
- rawSourceBuffer, AHardwareBuffer_release);
+ UniqueAHardwareBuffer sourceBuffer{rawSourceBuffer};
AHardwareBuffer_Desc description;
AHardwareBuffer_describe(sourceBuffer.get(), &description);
if (description.usage & AHARDWAREBUFFER_USAGE_PROTECTED_CONTENT) {
diff --git a/libs/hwui/RecordingCanvas.cpp b/libs/hwui/RecordingCanvas.cpp
index dc467c4..a31f2a5 100644
--- a/libs/hwui/RecordingCanvas.cpp
+++ b/libs/hwui/RecordingCanvas.cpp
@@ -134,7 +134,7 @@
static const auto kType = Type::Concat44;
Concat44(const SkScalar m[16]) { memcpy(colMajor, m, sizeof(colMajor)); }
SkScalar colMajor[16];
- void draw(SkCanvas* c, const SkMatrix&) const { c->experimental_concat44(colMajor); }
+ void draw(SkCanvas* c, const SkMatrix&) const { c->concat44(colMajor); }
};
struct Concat final : Op {
static const auto kType = Type::Concat;
@@ -448,14 +448,13 @@
};
struct DrawVertices final : Op {
static const auto kType = Type::DrawVertices;
- DrawVertices(const SkVertices* v, int bc, SkBlendMode m, const SkPaint& p)
- : vertices(sk_ref_sp(const_cast<SkVertices*>(v))), boneCount(bc), mode(m), paint(p) {}
+ DrawVertices(const SkVertices* v, SkBlendMode m, const SkPaint& p)
+ : vertices(sk_ref_sp(const_cast<SkVertices*>(v))), mode(m), paint(p) {}
sk_sp<SkVertices> vertices;
- int boneCount;
SkBlendMode mode;
SkPaint paint;
void draw(SkCanvas* c, const SkMatrix&) const {
- c->drawVertices(vertices, pod<SkVertices::Bone>(this), boneCount, mode, paint);
+ c->drawVertices(vertices, mode, paint);
}
};
struct DrawAtlas final : Op {
@@ -686,11 +685,8 @@
void* pod = this->push<DrawPoints>(count * sizeof(SkPoint), mode, count, paint);
copy_v(pod, points, count);
}
-void DisplayListData::drawVertices(const SkVertices* vertices, const SkVertices::Bone bones[],
- int boneCount, SkBlendMode mode, const SkPaint& paint) {
- void* pod = this->push<DrawVertices>(boneCount * sizeof(SkVertices::Bone), vertices, boneCount,
- mode, paint);
- copy_v(pod, bones, boneCount);
+void DisplayListData::drawVertices(const SkVertices* vertices, SkBlendMode mode, const SkPaint& paint) {
+ this->push<DrawVertices>(0, vertices, mode, paint);
}
void DisplayListData::drawAtlas(const SkImage* atlas, const SkRSXform xforms[], const SkRect texs[],
const SkColor colors[], int count, SkBlendMode xfermode,
@@ -933,19 +929,11 @@
const SkPaint* paint) {
fDL->drawImage(SkImage::MakeFromBitmap(bm), x, y, paint, BitmapPalette::Unknown);
}
-void RecordingCanvas::onDrawBitmapNine(const SkBitmap& bm, const SkIRect& center, const SkRect& dst,
- const SkPaint* paint) {
- fDL->drawImageNine(SkImage::MakeFromBitmap(bm), center, dst, paint);
-}
void RecordingCanvas::onDrawBitmapRect(const SkBitmap& bm, const SkRect* src, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint) {
fDL->drawImageRect(SkImage::MakeFromBitmap(bm), src, dst, paint, constraint,
BitmapPalette::Unknown);
}
-void RecordingCanvas::onDrawBitmapLattice(const SkBitmap& bm, const SkCanvas::Lattice& lattice,
- const SkRect& dst, const SkPaint* paint) {
- fDL->drawImageLattice(SkImage::MakeFromBitmap(bm), lattice, dst, paint, BitmapPalette::Unknown);
-}
void RecordingCanvas::drawImage(const sk_sp<SkImage>& image, SkScalar x, SkScalar y,
const SkPaint* paint, BitmapPalette palette) {
@@ -1007,9 +995,8 @@
fDL->drawPoints(mode, count, pts, paint);
}
void RecordingCanvas::onDrawVerticesObject(const SkVertices* vertices,
- const SkVertices::Bone bones[], int boneCount,
SkBlendMode mode, const SkPaint& paint) {
- fDL->drawVertices(vertices, bones, boneCount, mode, paint);
+ fDL->drawVertices(vertices, mode, paint);
}
void RecordingCanvas::onDrawAtlas(const SkImage* atlas, const SkRSXform xforms[],
const SkRect texs[], const SkColor colors[], int count,
diff --git a/libs/hwui/RecordingCanvas.h b/libs/hwui/RecordingCanvas.h
index 7eb1ce3..b6461dc 100644
--- a/libs/hwui/RecordingCanvas.h
+++ b/libs/hwui/RecordingCanvas.h
@@ -120,8 +120,7 @@
void drawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode,
const SkPaint&);
void drawPoints(SkCanvas::PointMode, size_t, const SkPoint[], const SkPaint&);
- void drawVertices(const SkVertices*, const SkVertices::Bone bones[], int boneCount, SkBlendMode,
- const SkPaint&);
+ void drawVertices(const SkVertices*, SkBlendMode, const SkPaint&);
void drawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int,
SkBlendMode, const SkRect*, const SkPaint*);
void drawShadowRec(const SkPath&, const SkDrawShadowRec&);
@@ -183,9 +182,6 @@
void onDrawTextBlob(const SkTextBlob*, SkScalar, SkScalar, const SkPaint&) override;
void onDrawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint*) override;
- void onDrawBitmapLattice(const SkBitmap&, const Lattice&, const SkRect&,
- const SkPaint*) override;
- void onDrawBitmapNine(const SkBitmap&, const SkIRect&, const SkRect&, const SkPaint*) override;
void onDrawBitmapRect(const SkBitmap&, const SkRect*, const SkRect&, const SkPaint*,
SrcRectConstraint) override;
@@ -206,8 +202,7 @@
void onDrawPatch(const SkPoint[12], const SkColor[4], const SkPoint[4], SkBlendMode,
const SkPaint&) override;
void onDrawPoints(PointMode, size_t count, const SkPoint pts[], const SkPaint&) override;
- void onDrawVerticesObject(const SkVertices*, const SkVertices::Bone bones[], int boneCount,
- SkBlendMode, const SkPaint&) override;
+ void onDrawVerticesObject(const SkVertices*, SkBlendMode, const SkPaint&) override;
void onDrawAtlas(const SkImage*, const SkRSXform[], const SkRect[], const SkColor[], int,
SkBlendMode, const SkRect*, const SkPaint*) override;
void onDrawShadowRec(const SkPath&, const SkDrawShadowRec&) override;
diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp
index 56d951c..df463e2 100644
--- a/libs/hwui/hwui/Bitmap.cpp
+++ b/libs/hwui/hwui/Bitmap.cpp
@@ -33,7 +33,6 @@
#ifndef _WIN32
#include <binder/IServiceManager.h>
#endif
-#include <ui/PixelFormat.h>
#include <SkCanvas.h>
#include <SkImagePriv.h>
diff --git a/libs/hwui/hwui/Bitmap.h b/libs/hwui/hwui/Bitmap.h
index b8b5994..b6e1536 100644
--- a/libs/hwui/hwui/Bitmap.h
+++ b/libs/hwui/hwui/Bitmap.h
@@ -71,6 +71,7 @@
static sk_sp<Bitmap> allocateHardwareBitmap(const SkBitmap& bitmap);
static sk_sp<Bitmap> allocateHeapBitmap(SkBitmap* bitmap);
static sk_sp<Bitmap> allocateHeapBitmap(const SkImageInfo& info);
+ static sk_sp<Bitmap> allocateHeapBitmap(size_t size, const SkImageInfo& i, size_t rowBytes);
/* The createFrom factories construct a new Bitmap object by wrapping the already allocated
* memory that is provided as an input param.
@@ -160,7 +161,6 @@
int32_t quality, SkWStream* stream);
private:
static sk_sp<Bitmap> allocateAshmemBitmap(size_t size, const SkImageInfo& i, size_t rowBytes);
- static sk_sp<Bitmap> allocateHeapBitmap(size_t size, const SkImageInfo& i, size_t rowBytes);
Bitmap(void* address, size_t allocSize, const SkImageInfo& info, size_t rowBytes);
Bitmap(void* address, void* context, FreeFunc freeFunc, const SkImageInfo& info,
diff --git a/libs/hwui/jni/Bitmap.cpp b/libs/hwui/jni/Bitmap.cpp
index ba66905..f42b249 100755
--- a/libs/hwui/jni/Bitmap.cpp
+++ b/libs/hwui/jni/Bitmap.cpp
@@ -19,12 +19,19 @@
#include <utils/Color.h>
#ifdef __ANDROID__ // Layoutlib does not support graphic buffer, parcel or render thread
+#include <android-base/unique_fd.h>
+#include <android/binder_parcel.h>
+#include <android/binder_parcel_jni.h>
+#include <android/binder_parcel_platform.h>
+#include <android/binder_parcel_utils.h>
#include <private/android/AHardwareBufferHelpers.h>
-#include <binder/Parcel.h>
+#include <cutils/ashmem.h>
#include <dlfcn.h>
#include <renderthread/RenderProxy.h>
+#include <sys/mman.h>
#endif
+#include <inttypes.h>
#include <string.h>
#include <memory>
#include <string>
@@ -567,149 +574,289 @@
///////////////////////////////////////////////////////////////////////////////
+// TODO: Move somewhere else
#ifdef __ANDROID__ // Layoutlib does not support parcel
-static struct parcel_offsets_t
-{
- jclass clazz;
- jfieldID mNativePtr;
-} gParcelOffsets;
-static Parcel* parcelForJavaObject(JNIEnv* env, jobject obj) {
- if (obj) {
- Parcel* p = (Parcel*)env->GetLongField(obj, gParcelOffsets.mNativePtr);
- if (p != NULL) {
- return p;
- }
- jniThrowException(env, "java/lang/IllegalStateException", "Parcel has been finalized!");
+class ScopedParcel {
+public:
+ explicit ScopedParcel(JNIEnv* env, jobject parcel) {
+ mParcel = AParcel_fromJavaParcel(env, parcel);
}
- return NULL;
+
+ ~ScopedParcel() { AParcel_delete(mParcel); }
+
+ int32_t readInt32() {
+ int32_t temp = 0;
+ // TODO: This behavior-matches what android::Parcel does
+ // but this should probably be better
+ if (AParcel_readInt32(mParcel, &temp) != STATUS_OK) {
+ temp = 0;
+ }
+ return temp;
+ }
+
+ uint32_t readUint32() {
+ uint32_t temp = 0;
+ // TODO: This behavior-matches what android::Parcel does
+ // but this should probably be better
+ if (AParcel_readUint32(mParcel, &temp) != STATUS_OK) {
+ temp = 0;
+ }
+ return temp;
+ }
+
+ void writeInt32(int32_t value) { AParcel_writeInt32(mParcel, value); }
+
+ void writeUint32(uint32_t value) { AParcel_writeUint32(mParcel, value); }
+
+ bool allowFds() const { return AParcel_getAllowFds(mParcel); }
+
+ std::optional<sk_sp<SkData>> readData() {
+ struct Data {
+ void* ptr = nullptr;
+ size_t size = 0;
+ } data;
+ auto error = AParcel_readByteArray(mParcel, &data,
+ [](void* arrayData, int32_t length,
+ int8_t** outBuffer) -> bool {
+ Data* data = reinterpret_cast<Data*>(arrayData);
+ if (length > 0) {
+ data->ptr = sk_malloc_canfail(length);
+ if (!data->ptr) {
+ return false;
+ }
+ *outBuffer =
+ reinterpret_cast<int8_t*>(data->ptr);
+ data->size = length;
+ }
+ return true;
+ });
+ if (error != STATUS_OK || data.size <= 0) {
+ sk_free(data.ptr);
+ return std::nullopt;
+ } else {
+ return SkData::MakeFromMalloc(data.ptr, data.size);
+ }
+ }
+
+ void writeData(const std::optional<sk_sp<SkData>>& optData) {
+ if (optData) {
+ const auto& data = *optData;
+ AParcel_writeByteArray(mParcel, reinterpret_cast<const int8_t*>(data->data()),
+ data->size());
+ } else {
+ AParcel_writeByteArray(mParcel, nullptr, -1);
+ }
+ }
+
+ AParcel* get() { return mParcel; }
+
+private:
+ AParcel* mParcel;
+};
+
+enum class BlobType : int32_t {
+ IN_PLACE,
+ ASHMEM,
+};
+
+#define ON_ERROR_RETURN(X) \
+ if ((error = (X)) != STATUS_OK) return error
+
+template <typename T, typename U>
+static binder_status_t readBlob(AParcel* parcel, T inPlaceCallback, U ashmemCallback) {
+ binder_status_t error = STATUS_OK;
+ BlobType type;
+ static_assert(sizeof(BlobType) == sizeof(int32_t));
+ ON_ERROR_RETURN(AParcel_readInt32(parcel, (int32_t*)&type));
+ if (type == BlobType::IN_PLACE) {
+ struct Data {
+ std::unique_ptr<int8_t[]> ptr = nullptr;
+ int32_t size = 0;
+ } data;
+ ON_ERROR_RETURN(
+ AParcel_readByteArray(parcel, &data,
+ [](void* arrayData, int32_t length, int8_t** outBuffer) {
+ Data* data = reinterpret_cast<Data*>(arrayData);
+ if (length > 0) {
+ data->ptr = std::make_unique<int8_t[]>(length);
+ data->size = length;
+ *outBuffer = data->ptr.get();
+ }
+ return data->ptr != nullptr;
+ }));
+ inPlaceCallback(std::move(data.ptr), data.size);
+ return STATUS_OK;
+ } else if (type == BlobType::ASHMEM) {
+ int rawFd = -1;
+ int32_t size = 0;
+ ON_ERROR_RETURN(AParcel_readInt32(parcel, &size));
+ ON_ERROR_RETURN(AParcel_readParcelFileDescriptor(parcel, &rawFd));
+ android::base::unique_fd fd(rawFd);
+ ashmemCallback(std::move(fd), size);
+ return STATUS_OK;
+ } else {
+ // Although the above if/else was "exhaustive" guard against unknown types
+ return STATUS_UNKNOWN_ERROR;
+ }
}
-#endif
+
+static constexpr size_t BLOB_INPLACE_LIMIT = 12 * 1024;
+// Fail fast if we can't use ashmem and the size exceeds this limit - the binder transaction
+// wouldn't go through, anyway
+// TODO: Can we get this from somewhere?
+static constexpr size_t BLOB_MAX_INPLACE_LIMIT = 1 * 1024 * 1024;
+static constexpr bool shouldUseAshmem(AParcel* parcel, int32_t size) {
+ return size > BLOB_INPLACE_LIMIT && AParcel_getAllowFds(parcel);
+}
+
+static binder_status_t writeBlobFromFd(AParcel* parcel, int32_t size, int fd) {
+ binder_status_t error = STATUS_OK;
+ ON_ERROR_RETURN(AParcel_writeInt32(parcel, static_cast<int32_t>(BlobType::ASHMEM)));
+ ON_ERROR_RETURN(AParcel_writeInt32(parcel, size));
+ ON_ERROR_RETURN(AParcel_writeParcelFileDescriptor(parcel, fd));
+ return STATUS_OK;
+}
+
+static binder_status_t writeBlob(AParcel* parcel, const int32_t size, const void* data) {
+ if (size <= 0 || data == nullptr) {
+ return STATUS_NOT_ENOUGH_DATA;
+ }
+ binder_status_t error = STATUS_OK;
+ if (shouldUseAshmem(parcel, size)) {
+ // Create new ashmem region with read/write priv
+ base::unique_fd fd(ashmem_create_region("bitmap", size));
+ if (fd.get() < 0) {
+ return STATUS_NO_MEMORY;
+ }
+
+ {
+ void* dest = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd.get(), 0);
+ if (dest == MAP_FAILED) {
+ return STATUS_NO_MEMORY;
+ }
+ memcpy(dest, data, size);
+ munmap(dest, size);
+ }
+
+ if (ashmem_set_prot_region(fd.get(), PROT_READ) < 0) {
+ return STATUS_UNKNOWN_ERROR;
+ }
+ // Workaround b/149851140 in AParcel_writeParcelFileDescriptor
+ int rawFd = fd.release();
+ error = writeBlobFromFd(parcel, size, rawFd);
+ close(rawFd);
+ return error;
+ } else {
+ if (size > BLOB_MAX_INPLACE_LIMIT) {
+ return STATUS_FAILED_TRANSACTION;
+ }
+ ON_ERROR_RETURN(AParcel_writeInt32(parcel, static_cast<int32_t>(BlobType::IN_PLACE)));
+ ON_ERROR_RETURN(AParcel_writeByteArray(parcel, static_cast<const int8_t*>(data), size));
+ return STATUS_OK;
+ }
+}
+
+#undef ON_ERROR_RETURN
+
+#endif // __ANDROID__ // Layoutlib does not support parcel
// This is the maximum possible size because the SkColorSpace must be
// representable (and therefore serializable) using a matrix and numerical
// transfer function. If we allow more color space representations in the
// framework, we may need to update this maximum size.
-static constexpr uint32_t kMaxColorSpaceSerializedBytes = 80;
+static constexpr size_t kMaxColorSpaceSerializedBytes = 80;
+
+static constexpr auto RuntimeException = "java/lang/RuntimeException";
+
+static bool validateImageInfo(const SkImageInfo& info, int32_t rowBytes) {
+ // TODO: Can we avoid making a SkBitmap for this?
+ return SkBitmap().setInfo(info, rowBytes);
+}
static jobject Bitmap_createFromParcel(JNIEnv* env, jobject, jobject parcel) {
#ifdef __ANDROID__ // Layoutlib does not support parcel
if (parcel == NULL) {
- SkDebugf("-------- unparcel parcel is NULL\n");
+ jniThrowNullPointerException(env, "parcel cannot be null");
return NULL;
}
- android::Parcel* p = parcelForJavaObject(env, parcel);
+ ScopedParcel p(env, parcel);
- const SkColorType colorType = (SkColorType)p->readInt32();
- const SkAlphaType alphaType = (SkAlphaType)p->readInt32();
- const uint32_t colorSpaceSize = p->readUint32();
+ const SkColorType colorType = static_cast<SkColorType>(p.readInt32());
+ const SkAlphaType alphaType = static_cast<SkAlphaType>(p.readInt32());
sk_sp<SkColorSpace> colorSpace;
- if (colorSpaceSize > 0) {
- if (colorSpaceSize > kMaxColorSpaceSerializedBytes) {
+ const auto optColorSpaceData = p.readData();
+ if (optColorSpaceData) {
+ const auto& colorSpaceData = *optColorSpaceData;
+ if (colorSpaceData->size() > kMaxColorSpaceSerializedBytes) {
ALOGD("Bitmap_createFromParcel: Serialized SkColorSpace is larger than expected: "
- "%d bytes\n", colorSpaceSize);
+ "%zu bytes (max: %zu)\n",
+ colorSpaceData->size(), kMaxColorSpaceSerializedBytes);
}
- const void* data = p->readInplace(colorSpaceSize);
- if (data) {
- colorSpace = SkColorSpace::Deserialize(data, colorSpaceSize);
- } else {
- ALOGD("Bitmap_createFromParcel: Unable to read serialized SkColorSpace data\n");
- }
+ colorSpace = SkColorSpace::Deserialize(colorSpaceData->data(), colorSpaceData->size());
}
- const int width = p->readInt32();
- const int height = p->readInt32();
- const int rowBytes = p->readInt32();
- const int density = p->readInt32();
+ const int32_t width = p.readInt32();
+ const int32_t height = p.readInt32();
+ const int32_t rowBytes = p.readInt32();
+ const int32_t density = p.readInt32();
if (kN32_SkColorType != colorType &&
kRGBA_F16_SkColorType != colorType &&
kRGB_565_SkColorType != colorType &&
kARGB_4444_SkColorType != colorType &&
kAlpha_8_SkColorType != colorType) {
- SkDebugf("Bitmap_createFromParcel unknown colortype: %d\n", colorType);
+ jniThrowExceptionFmt(env, RuntimeException,
+ "Bitmap_createFromParcel unknown colortype: %d\n", colorType);
return NULL;
}
- std::unique_ptr<SkBitmap> bitmap(new SkBitmap);
- if (!bitmap->setInfo(SkImageInfo::Make(width, height, colorType, alphaType, colorSpace),
- rowBytes)) {
+ auto imageInfo = SkImageInfo::Make(width, height, colorType, alphaType, colorSpace);
+ size_t allocationSize = 0;
+ if (!validateImageInfo(imageInfo, rowBytes)) {
+ jniThrowRuntimeException(env, "Received bad SkImageInfo");
return NULL;
}
-
- // Read the bitmap blob.
- size_t size = bitmap->computeByteSize();
- android::Parcel::ReadableBlob blob;
- android::status_t status = p->readBlob(size, &blob);
- if (status) {
- doThrowRE(env, "Could not read bitmap blob.");
+ if (!Bitmap::computeAllocationSize(rowBytes, height, &allocationSize)) {
+ jniThrowExceptionFmt(env, RuntimeException,
+ "Received bad bitmap size: width=%d, height=%d, rowBytes=%d", width,
+ height, rowBytes);
return NULL;
}
-
- // Map the bitmap in place from the ashmem region if possible otherwise copy.
sk_sp<Bitmap> nativeBitmap;
- if (blob.fd() >= 0 && !blob.isMutable()) {
-#if DEBUG_PARCEL
- ALOGD("Bitmap.createFromParcel: mapped contents of bitmap from %s blob "
- "(fds %s)",
- blob.isMutable() ? "mutable" : "immutable",
- p->allowFds() ? "allowed" : "forbidden");
-#endif
- // Dup the file descriptor so we can keep a reference to it after the Parcel
- // is disposed.
- int dupFd = fcntl(blob.fd(), F_DUPFD_CLOEXEC, 0);
- if (dupFd < 0) {
- ALOGE("Error allocating dup fd. Error:%d", errno);
- blob.release();
- doThrowRE(env, "Could not allocate dup blob fd.");
- return NULL;
- }
-
- // Map the pixels in place and take ownership of the ashmem region. We must also respect the
- // rowBytes value already set on the bitmap instead of attempting to compute our own.
- nativeBitmap = Bitmap::createFrom(bitmap->info(), bitmap->rowBytes(), dupFd,
- const_cast<void*>(blob.data()), size, true);
- if (!nativeBitmap) {
- close(dupFd);
- blob.release();
- doThrowRE(env, "Could not allocate ashmem pixel ref.");
- return NULL;
- }
-
- // Clear the blob handle, don't release it.
- blob.clear();
- } else {
-#if DEBUG_PARCEL
- if (blob.fd() >= 0) {
- ALOGD("Bitmap.createFromParcel: copied contents of mutable bitmap "
- "from immutable blob (fds %s)",
- p->allowFds() ? "allowed" : "forbidden");
- } else {
- ALOGD("Bitmap.createFromParcel: copied contents from %s blob "
- "(fds %s)",
- blob.isMutable() ? "mutable" : "immutable",
- p->allowFds() ? "allowed" : "forbidden");
- }
-#endif
-
- // Copy the pixels into a new buffer.
- nativeBitmap = Bitmap::allocateHeapBitmap(bitmap.get());
- if (!nativeBitmap) {
- blob.release();
- doThrowRE(env, "Could not allocate java pixel ref.");
- return NULL;
- }
- memcpy(bitmap->getPixels(), blob.data(), size);
-
- // Release the blob handle.
- blob.release();
+ binder_status_t error = readBlob(
+ p.get(),
+ // In place callback
+ [&](std::unique_ptr<int8_t[]> buffer, int32_t size) {
+ nativeBitmap = Bitmap::allocateHeapBitmap(allocationSize, imageInfo, rowBytes);
+ if (nativeBitmap) {
+ memcpy(nativeBitmap->pixels(), buffer.get(), size);
+ }
+ },
+ // Ashmem callback
+ [&](android::base::unique_fd fd, int32_t size) {
+ void* addr = mmap(nullptr, size, PROT_READ, MAP_SHARED, fd.get(), 0);
+ if (addr == MAP_FAILED) {
+ return;
+ }
+ nativeBitmap =
+ Bitmap::createFrom(imageInfo, rowBytes, fd.release(), addr, size, true);
+ });
+ if (error != STATUS_OK) {
+ // TODO: Stringify the error, see signalExceptionForError in android_util_Binder.cpp
+ jniThrowExceptionFmt(env, RuntimeException, "Failed to read from Parcel, error=%d", error);
+ return nullptr;
+ }
+ if (!nativeBitmap) {
+ jniThrowRuntimeException(env, "Could not allocate java pixel ref.");
+ return nullptr;
}
- return createBitmap(env, nativeBitmap.release(),
- getPremulBitmapCreateFlags(false), NULL, NULL, density);
+ return createBitmap(env, nativeBitmap.release(), getPremulBitmapCreateFlags(false), nullptr,
+ nullptr, density);
#else
- doThrowRE(env, "Cannot use parcels outside of Android");
+ jniThrowRuntimeException(env, "Cannot use parcels outside of Android");
return NULL;
#endif
}
@@ -722,47 +869,37 @@
return JNI_FALSE;
}
- android::Parcel* p = parcelForJavaObject(env, parcel);
+ ScopedParcel p(env, parcel);
SkBitmap bitmap;
auto bitmapWrapper = reinterpret_cast<BitmapWrapper*>(bitmapHandle);
bitmapWrapper->getSkBitmap(&bitmap);
- p->writeInt32(bitmap.colorType());
- p->writeInt32(bitmap.alphaType());
+ p.writeInt32(bitmap.colorType());
+ p.writeInt32(bitmap.alphaType());
SkColorSpace* colorSpace = bitmap.colorSpace();
if (colorSpace != nullptr) {
- sk_sp<SkData> data = colorSpace->serialize();
- size_t size = data->size();
- p->writeUint32(size);
- if (size > 0) {
- if (size > kMaxColorSpaceSerializedBytes) {
- ALOGD("Bitmap_writeToParcel: Serialized SkColorSpace is larger than expected: "
- "%zu bytes\n", size);
- }
-
- p->write(data->data(), size);
- }
+ p.writeData(colorSpace->serialize());
} else {
- p->writeUint32(0);
+ p.writeData(std::nullopt);
}
- p->writeInt32(bitmap.width());
- p->writeInt32(bitmap.height());
- p->writeInt32(bitmap.rowBytes());
- p->writeInt32(density);
+ p.writeInt32(bitmap.width());
+ p.writeInt32(bitmap.height());
+ p.writeInt32(bitmap.rowBytes());
+ p.writeInt32(density);
// Transfer the underlying ashmem region if we have one and it's immutable.
- android::status_t status;
+ binder_status_t status;
int fd = bitmapWrapper->bitmap().getAshmemFd();
- if (fd >= 0 && p->allowFds()) {
+ if (fd >= 0 && p.allowFds()) {
#if DEBUG_PARCEL
ALOGD("Bitmap.writeToParcel: transferring immutable bitmap's ashmem fd as "
- "immutable blob (fds %s)",
- p->allowFds() ? "allowed" : "forbidden");
+ "immutable blob (fds %s)",
+ p.allowFds() ? "allowed" : "forbidden");
#endif
- status = p->writeDupImmutableBlobFileDescriptor(fd);
- if (status) {
+ status = writeBlobFromFd(p.get(), bitmapWrapper->bitmap().getAllocationByteCount(), fd);
+ if (status != STATUS_OK) {
doThrowRE(env, "Could not write bitmap blob file descriptor.");
return JNI_FALSE;
}
@@ -772,25 +909,15 @@
// Copy the bitmap to a new blob.
#if DEBUG_PARCEL
ALOGD("Bitmap.writeToParcel: copying bitmap into new blob (fds %s)",
- p->allowFds() ? "allowed" : "forbidden");
+ p.allowFds() ? "allowed" : "forbidden");
#endif
size_t size = bitmap.computeByteSize();
- android::Parcel::WritableBlob blob;
- status = p->writeBlob(size, false, &blob);
+ status = writeBlob(p.get(), size, bitmap.getPixels());
if (status) {
doThrowRE(env, "Could not copy bitmap to parcel blob.");
return JNI_FALSE;
}
-
- const void* pSrc = bitmap.getPixels();
- if (pSrc == NULL) {
- memset(blob.data(), 0, size);
- } else {
- memcpy(blob.data(), pSrc, size);
- }
-
- blob.release();
return JNI_TRUE;
#else
doThrowRE(env, "Cannot use parcels outside of Android");
@@ -1069,13 +1196,16 @@
static jobject Bitmap_getHardwareBuffer(JNIEnv* env, jobject, jlong bitmapPtr) {
#ifdef __ANDROID__ // Layoutlib does not support graphic buffer
LocalScopedBitmap bitmapHandle(bitmapPtr);
- LOG_ALWAYS_FATAL_IF(!bitmapHandle->isHardware(),
+ if (!bitmapHandle->isHardware()) {
+ jniThrowException(env, "java/lang/IllegalStateException",
"Hardware config is only supported config in Bitmap_getHardwareBuffer");
+ return nullptr;
+ }
Bitmap& bitmap = bitmapHandle->bitmap();
return AHardwareBuffer_toHardwareBuffer(env, bitmap.hardwareBuffer());
#else
- return NULL;
+ return nullptr;
#endif
}
@@ -1156,8 +1286,6 @@
};
-const char* const kParcelPathName = "android/os/Parcel";
-
int register_android_graphics_Bitmap(JNIEnv* env)
{
gBitmap_class = MakeGlobalRefOrDie(env, FindClassOrDie(env, "android/graphics/Bitmap"));
@@ -1175,9 +1303,6 @@
AHardwareBuffer_toHardwareBuffer = (AHB_to_HB)dlsym(handle_, "AHardwareBuffer_toHardwareBuffer");
LOG_ALWAYS_FATAL_IF(AHardwareBuffer_toHardwareBuffer == nullptr,
" Failed to find required symbol AHardwareBuffer_toHardwareBuffer!");
-
- gParcelOffsets.clazz = MakeGlobalRefOrDie(env, FindClassOrDie(env, kParcelPathName));
- gParcelOffsets.mNativePtr = GetFieldIDOrDie(env, gParcelOffsets.clazz, "mNativePtr", "J");
#endif
return android::RegisterMethodsOrDie(env, "android/graphics/Bitmap", gBitmapMethods,
NELEM(gBitmapMethods));
diff --git a/libs/hwui/jni/BitmapRegionDecoder.cpp b/libs/hwui/jni/BitmapRegionDecoder.cpp
index 7123513..3c427f9 100644
--- a/libs/hwui/jni/BitmapRegionDecoder.cpp
+++ b/libs/hwui/jni/BitmapRegionDecoder.cpp
@@ -49,11 +49,7 @@
}
static jobject nativeNewInstanceFromByteArray(JNIEnv* env, jobject, jbyteArray byteArray,
- jint offset, jint length, jboolean isShareable) {
- /* If isShareable we could decide to just wrap the java array and
- share it, but that means adding a globalref to the java array object
- For now we just always copy the array's data if isShareable.
- */
+ jint offset, jint length) {
AutoJavaByteArray ar(env, byteArray);
std::unique_ptr<SkMemoryStream> stream(new SkMemoryStream(ar.ptr() + offset, length, true));
@@ -63,7 +59,7 @@
}
static jobject nativeNewInstanceFromFileDescriptor(JNIEnv* env, jobject clazz,
- jobject fileDescriptor, jboolean isShareable) {
+ jobject fileDescriptor) {
NPE_CHECK_RETURN_ZERO(env, fileDescriptor);
jint descriptor = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -82,12 +78,9 @@
return brd;
}
-static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz,
- jobject is, // InputStream
- jbyteArray storage, // byte[]
- jboolean isShareable) {
+static jobject nativeNewInstanceFromStream(JNIEnv* env, jobject clazz, jobject is, // InputStream
+ jbyteArray storage) { // byte[]
jobject brd = NULL;
- // for now we don't allow shareable with java inputstreams
std::unique_ptr<SkStreamRewindable> stream(CopyJavaInputStream(env, is, storage));
if (stream) {
@@ -97,9 +90,7 @@
return brd;
}
-static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz,
- jlong native_asset, // Asset
- jboolean isShareable) {
+static jobject nativeNewInstanceFromAsset(JNIEnv* env, jobject clazz, jlong native_asset) {
Asset* asset = reinterpret_cast<Asset*>(native_asset);
std::unique_ptr<SkMemoryStream> stream(CopyAssetToStream(asset));
if (NULL == stream) {
@@ -261,22 +252,22 @@
{ "nativeClean", "(J)V", (void*)nativeClean},
{ "nativeNewInstance",
- "([BIIZ)Landroid/graphics/BitmapRegionDecoder;",
+ "([BII)Landroid/graphics/BitmapRegionDecoder;",
(void*)nativeNewInstanceFromByteArray
},
{ "nativeNewInstance",
- "(Ljava/io/InputStream;[BZ)Landroid/graphics/BitmapRegionDecoder;",
+ "(Ljava/io/InputStream;[B)Landroid/graphics/BitmapRegionDecoder;",
(void*)nativeNewInstanceFromStream
},
{ "nativeNewInstance",
- "(Ljava/io/FileDescriptor;Z)Landroid/graphics/BitmapRegionDecoder;",
+ "(Ljava/io/FileDescriptor;)Landroid/graphics/BitmapRegionDecoder;",
(void*)nativeNewInstanceFromFileDescriptor
},
{ "nativeNewInstance",
- "(JZ)Landroid/graphics/BitmapRegionDecoder;",
+ "(J)Landroid/graphics/BitmapRegionDecoder;",
(void*)nativeNewInstanceFromAsset
},
};
diff --git a/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp b/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
index aa8849b..e7ebfb0 100644
--- a/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/GLFunctorDrawable.cpp
@@ -26,7 +26,7 @@
#include "SkAndroidFrameworkUtils.h"
#include "SkClipStack.h"
#include "SkRect.h"
-#include "include/private/SkM44.h"
+#include "SkM44.h"
namespace android {
namespace uirenderer {
@@ -93,7 +93,7 @@
SkIRect surfaceBounds = canvas->internal_private_getTopLayerBounds();
SkIRect clipBounds = canvas->getDeviceClipBounds();
- SkM44 mat4(canvas->experimental_getLocalToDevice());
+ SkM44 mat4(canvas->getLocalToDevice());
SkRegion clipRegion;
canvas->temporary_internal_getRgnClip(&clipRegion);
diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
index 68f1117..715a7cb 100644
--- a/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.cpp
@@ -20,7 +20,7 @@
#include <GrBackendDrawableInfo.h>
#include <SkAndroidFrameworkUtils.h>
#include <SkImage.h>
-#include "include/private/SkM44.h"
+#include <SkM44.h>
#include <utils/Color.h>
#include <utils/Trace.h>
#include <utils/TraceUtils.h>
diff --git a/libs/hwui/pipeline/skia/VkFunctorDrawable.h b/libs/hwui/pipeline/skia/VkFunctorDrawable.h
index d3f9777..fbfc6e7 100644
--- a/libs/hwui/pipeline/skia/VkFunctorDrawable.h
+++ b/libs/hwui/pipeline/skia/VkFunctorDrawable.h
@@ -19,7 +19,6 @@
#include "FunctorDrawable.h"
#include <SkImageInfo.h>
-#include <ui/GraphicBuffer.h>
#include <utils/RefBase.h>
namespace android {
diff --git a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
index 241d370..05478ba 100644
--- a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
+++ b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.cpp
@@ -15,22 +15,24 @@
*/
#include "VkInteropFunctorDrawable.h"
-#include <private/hwui/DrawGlInfo.h>
-#include <utils/Color.h>
-#include <utils/Trace.h>
-#include <utils/TraceUtils.h>
-#include <thread>
-#include "renderthread/EglManager.h"
-#include "thread/ThreadBase.h"
-#include "utils/TimeUtils.h"
-
+#include <EGL/egl.h>
#include <EGL/eglext.h>
#include <GLES2/gl2.h>
#include <GLES2/gl2ext.h>
#include <GLES3/gl3.h>
-
+#include <private/android/AHardwareBufferHelpers.h>
+#include <private/hwui/DrawGlInfo.h>
+#include <utils/Color.h>
#include <utils/GLUtils.h>
+#include <utils/Trace.h>
+#include <utils/TraceUtils.h>
+
+#include <thread>
+
+#include "renderthread/EglManager.h"
+#include "thread/ThreadBase.h"
+#include "utils/TimeUtils.h"
namespace android {
namespace uirenderer {
@@ -75,20 +77,23 @@
SkImageInfo surfaceInfo = canvas->imageInfo();
- if (!mFrameBuffer.get() || mFBInfo != surfaceInfo) {
+ if (mFrameBuffer == nullptr || mFBInfo != surfaceInfo) {
// Buffer will be used as an OpenGL ES render target.
- mFrameBuffer = new GraphicBuffer(
- // TODO: try to reduce the size of the buffer: possibly by using clip bounds.
- static_cast<uint32_t>(surfaceInfo.width()),
- static_cast<uint32_t>(surfaceInfo.height()),
- ColorTypeToPixelFormat(surfaceInfo.colorType()),
- GraphicBuffer::USAGE_HW_TEXTURE | GraphicBuffer::USAGE_SW_WRITE_NEVER |
- GraphicBuffer::USAGE_SW_READ_NEVER | GraphicBuffer::USAGE_HW_RENDER,
- std::string("VkInteropFunctorDrawable::onDraw pid [") + std::to_string(getpid()) +
- "]");
- status_t error = mFrameBuffer->initCheck();
- if (error < 0) {
- ALOGW("VkInteropFunctorDrawable::onDraw() failed in GraphicBuffer.create()");
+ AHardwareBuffer_Desc desc = {
+ .width = static_cast<uint32_t>(surfaceInfo.width()),
+ .height = static_cast<uint32_t>(surfaceInfo.height()),
+ .layers = 1,
+ .format = ColorTypeToBufferFormat(surfaceInfo.colorType()),
+ .usage = AHARDWAREBUFFER_USAGE_CPU_READ_NEVER |
+ AHARDWAREBUFFER_USAGE_CPU_WRITE_NEVER |
+ AHARDWAREBUFFER_USAGE_GPU_SAMPLED_IMAGE |
+ AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER,
+ };
+
+ mFrameBuffer = allocateAHardwareBuffer(desc);
+
+ if (!mFrameBuffer) {
+ ALOGW("VkInteropFunctorDrawable::onDraw() failed in AHardwareBuffer_allocate()");
return;
}
@@ -106,7 +111,8 @@
uirenderer::renderthread::EglManager::eglErrorString());
// We use an EGLImage to access the content of the GraphicBuffer
// The EGL image is later bound to a 2D texture
- EGLClientBuffer clientBuffer = (EGLClientBuffer)mFrameBuffer->getNativeBuffer();
+ EGLClientBuffer clientBuffer =
+ (EGLClientBuffer)AHardwareBuffer_to_ANativeWindowBuffer(mFrameBuffer.get());
AutoEglImage autoImage(display, clientBuffer);
if (autoImage.image == EGL_NO_IMAGE_KHR) {
ALOGW("Could not create EGL image, err =%s",
@@ -121,7 +127,7 @@
glBindTexture(GL_TEXTURE_2D, 0);
DrawGlInfo info;
- SkM44 mat4(canvas->experimental_getLocalToDevice());
+ SkM44 mat4(canvas->getLocalToDevice());
SkIRect clipBounds = canvas->getDeviceClipBounds();
info.clipLeft = clipBounds.fLeft;
@@ -179,9 +185,9 @@
// drawing into the offscreen surface, so we need to reset it here.
canvas->resetMatrix();
- auto functorImage = SkImage::MakeFromAHardwareBuffer(
- reinterpret_cast<AHardwareBuffer*>(mFrameBuffer.get()), kPremul_SkAlphaType,
- canvas->imageInfo().refColorSpace(), kBottomLeft_GrSurfaceOrigin);
+ auto functorImage = SkImage::MakeFromAHardwareBuffer(mFrameBuffer.get(), kPremul_SkAlphaType,
+ canvas->imageInfo().refColorSpace(),
+ kBottomLeft_GrSurfaceOrigin);
canvas->drawImage(functorImage, 0, 0, &paint);
canvas->restore();
}
diff --git a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.h b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.h
index c47ee11..b12774f 100644
--- a/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.h
+++ b/libs/hwui/pipeline/skia/VkInteropFunctorDrawable.h
@@ -16,11 +16,12 @@
#pragma once
-#include "FunctorDrawable.h"
-
-#include <ui/GraphicBuffer.h>
+#include <android/hardware_buffer.h>
+#include <utils/NdkUtils.h>
#include <utils/RefBase.h>
+#include "FunctorDrawable.h"
+
namespace android {
namespace uirenderer {
@@ -45,7 +46,7 @@
private:
// Variables below describe/store temporary offscreen buffer used for Vulkan pipeline.
- sp<GraphicBuffer> mFrameBuffer;
+ UniqueAHardwareBuffer mFrameBuffer;
SkImageInfo mFBInfo;
};
diff --git a/libs/hwui/renderthread/EglManager.h b/libs/hwui/renderthread/EglManager.h
index a893e24..f67fb31 100644
--- a/libs/hwui/renderthread/EglManager.h
+++ b/libs/hwui/renderthread/EglManager.h
@@ -21,7 +21,6 @@
#include <SkImageInfo.h>
#include <SkRect.h>
#include <cutils/compiler.h>
-#include <ui/GraphicBuffer.h>
#include <utils/StrongPointer.h>
#include "IRenderPipeline.h"
diff --git a/libs/hwui/renderthread/ReliableSurface.cpp b/libs/hwui/renderthread/ReliableSurface.cpp
index 8a0b4e8..14a4c28 100644
--- a/libs/hwui/renderthread/ReliableSurface.cpp
+++ b/libs/hwui/renderthread/ReliableSurface.cpp
@@ -143,21 +143,25 @@
return AHardwareBuffer_to_ANativeWindowBuffer(mScratchBuffer.get());
}
- AHardwareBuffer_Desc desc;
- desc.usage = mUsage;
- desc.format = mFormat;
- desc.width = 1;
- desc.height = 1;
- desc.layers = 1;
- desc.rfu0 = 0;
- desc.rfu1 = 0;
- AHardwareBuffer* newBuffer = nullptr;
- int err = AHardwareBuffer_allocate(&desc, &newBuffer);
- if (err) {
+ AHardwareBuffer_Desc desc = AHardwareBuffer_Desc{
+ .usage = mUsage,
+ .format = mFormat,
+ .width = 1,
+ .height = 1,
+ .layers = 1,
+ .rfu0 = 0,
+ .rfu1 = 0,
+ };
+
+ AHardwareBuffer* newBuffer;
+ int result = AHardwareBuffer_allocate(&desc, &newBuffer);
+
+ if (result != NO_ERROR) {
// Allocate failed, that sucks
- ALOGW("Failed to allocate scratch buffer, error=%d", err);
+ ALOGW("Failed to allocate scratch buffer, error=%d", result);
return nullptr;
}
+
mScratchBuffer.reset(newBuffer);
return AHardwareBuffer_to_ANativeWindowBuffer(newBuffer);
}
diff --git a/libs/hwui/renderthread/ReliableSurface.h b/libs/hwui/renderthread/ReliableSurface.h
index 58cd067..c80a7ea 100644
--- a/libs/hwui/renderthread/ReliableSurface.h
+++ b/libs/hwui/renderthread/ReliableSurface.h
@@ -20,6 +20,7 @@
#include <apex/window.h>
#include <utils/Errors.h>
#include <utils/Macros.h>
+#include <utils/NdkUtils.h>
#include <utils/StrongPointer.h>
#include <memory>
@@ -56,8 +57,7 @@
uint64_t mUsage = AHARDWAREBUFFER_USAGE_GPU_FRAMEBUFFER;
AHardwareBuffer_Format mFormat = AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
- std::unique_ptr<AHardwareBuffer, void (*)(AHardwareBuffer*)> mScratchBuffer{
- nullptr, AHardwareBuffer_release};
+ UniqueAHardwareBuffer mScratchBuffer;
ANativeWindowBuffer* mReservedBuffer = nullptr;
base::unique_fd mReservedFenceFd;
bool mHasDequeuedBuffer = false;
diff --git a/libs/hwui/renderthread/VulkanSurface.cpp b/libs/hwui/renderthread/VulkanSurface.cpp
index a7ea21d..9cbb754b 100644
--- a/libs/hwui/renderthread/VulkanSurface.cpp
+++ b/libs/hwui/renderthread/VulkanSurface.cpp
@@ -207,9 +207,9 @@
}
}
- outWindowInfo->pixelFormat = ColorTypeToPixelFormat(colorType);
+ outWindowInfo->bufferFormat = ColorTypeToBufferFormat(colorType);
VkFormat vkPixelFormat = VK_FORMAT_R8G8B8A8_UNORM;
- if (outWindowInfo->pixelFormat == PIXEL_FORMAT_RGBA_FP16) {
+ if (outWindowInfo->bufferFormat == AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT) {
vkPixelFormat = VK_FORMAT_R16G16B16A16_SFLOAT;
}
@@ -263,10 +263,10 @@
bool VulkanSurface::UpdateWindow(ANativeWindow* window, const WindowInfo& windowInfo) {
ATRACE_CALL();
- int err = native_window_set_buffers_format(window, windowInfo.pixelFormat);
+ int err = native_window_set_buffers_format(window, windowInfo.bufferFormat);
if (err != 0) {
ALOGE("VulkanSurface::UpdateWindow() native_window_set_buffers_format(%d) failed: %s (%d)",
- windowInfo.pixelFormat, strerror(-err), err);
+ windowInfo.bufferFormat, strerror(-err), err);
return false;
}
diff --git a/libs/hwui/renderthread/VulkanSurface.h b/libs/hwui/renderthread/VulkanSurface.h
index bd23626..40a44b1 100644
--- a/libs/hwui/renderthread/VulkanSurface.h
+++ b/libs/hwui/renderthread/VulkanSurface.h
@@ -17,8 +17,6 @@
#include <system/graphics.h>
#include <system/window.h>
-#include <ui/BufferQueueDefs.h>
-#include <ui/PixelFormat.h>
#include <vulkan/vulkan.h>
#include <SkRefCnt.h>
@@ -91,7 +89,7 @@
struct WindowInfo {
SkISize size;
- PixelFormat pixelFormat;
+ uint32_t bufferFormat;
android_dataspace dataspace;
int transform;
size_t bufferCount;
@@ -111,8 +109,13 @@
static bool UpdateWindow(ANativeWindow* window, const WindowInfo& windowInfo);
void releaseBuffers();
+ // TODO: This number comes from ui/BufferQueueDefs. We're not pulling the
+ // header in so that we don't need to depend on libui, but we should share
+ // this constant somewhere. But right now it's okay to keep here because we
+ // can't safely change the slot count anyways.
+ static constexpr size_t kNumBufferSlots = 64;
// TODO: Just use a vector?
- NativeBufferInfo mNativeBuffers[android::BufferQueueDefs::NUM_BUFFER_SLOTS];
+ NativeBufferInfo mNativeBuffers[kNumBufferSlots];
sp<ANativeWindow> mNativeWindow;
WindowInfo mWindowInfo;
diff --git a/libs/hwui/tests/unit/FatalTestCanvas.h b/libs/hwui/tests/unit/FatalTestCanvas.h
index 1723c2e..3b0b651 100644
--- a/libs/hwui/tests/unit/FatalTestCanvas.h
+++ b/libs/hwui/tests/unit/FatalTestCanvas.h
@@ -88,14 +88,6 @@
SrcRectConstraint) {
ADD_FAILURE() << "onDrawBitmapRect not expected in this test";
}
- void onDrawBitmapNine(const SkBitmap&, const SkIRect& center, const SkRect& dst,
- const SkPaint*) {
- ADD_FAILURE() << "onDrawBitmapNine not expected in this test";
- }
- void onDrawBitmapLattice(const SkBitmap&, const Lattice& lattice, const SkRect& dst,
- const SkPaint*) {
- ADD_FAILURE() << "onDrawBitmapLattice not expected in this test";
- }
void onClipRRect(const SkRRect& rrect, SkClipOp, ClipEdgeStyle) {
ADD_FAILURE() << "onClipRRect not expected in this test";
}
diff --git a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
index 3632be0..e207da3 100644
--- a/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
+++ b/libs/hwui/tests/unit/RenderNodeDrawableTests.cpp
@@ -1169,7 +1169,7 @@
class VectorDrawableTestCanvas : public TestCanvasBase {
public:
VectorDrawableTestCanvas() : TestCanvasBase(CANVAS_WIDTH, CANVAS_HEIGHT) {}
- void onDrawBitmapRect(const SkBitmap& bitmap, const SkRect* src, const SkRect& dst,
+ void onDrawImageRect(const SkImage*, const SkRect* src, const SkRect& dst,
const SkPaint* paint, SrcRectConstraint constraint) override {
const int index = mDrawCounter++;
switch (index) {
diff --git a/libs/hwui/utils/Color.cpp b/libs/hwui/utils/Color.cpp
index 71a27ce..4b3e6002 100644
--- a/libs/hwui/utils/Color.cpp
+++ b/libs/hwui/utils/Color.cpp
@@ -16,8 +16,8 @@
#include "Color.h"
-#include <utils/Log.h>
#include <ui/ColorSpace.h>
+#include <utils/Log.h>
#ifdef __ANDROID__ // Layoutlib does not support hardware buffers or native windows
#include <android/hardware_buffer.h>
@@ -72,41 +72,29 @@
sk_sp<SkColorSpace> colorSpace) {
return createImageInfo(bufferDesc.width, bufferDesc.height, bufferDesc.format, colorSpace);
}
-#endif
-android::PixelFormat ColorTypeToPixelFormat(SkColorType colorType) {
+uint32_t ColorTypeToBufferFormat(SkColorType colorType) {
switch (colorType) {
case kRGBA_8888_SkColorType:
- return PIXEL_FORMAT_RGBA_8888;
+ return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
case kRGBA_F16_SkColorType:
- return PIXEL_FORMAT_RGBA_FP16;
+ return AHARDWAREBUFFER_FORMAT_R16G16B16A16_FLOAT;
case kRGB_565_SkColorType:
- return PIXEL_FORMAT_RGB_565;
+ return AHARDWAREBUFFER_FORMAT_R5G6B5_UNORM;
case kRGB_888x_SkColorType:
- return PIXEL_FORMAT_RGBX_8888;
+ return AHARDWAREBUFFER_FORMAT_R8G8B8X8_UNORM;
case kRGBA_1010102_SkColorType:
- return PIXEL_FORMAT_RGBA_1010102;
+ return AHARDWAREBUFFER_FORMAT_R10G10B10A2_UNORM;
case kARGB_4444_SkColorType:
- return PIXEL_FORMAT_RGBA_4444;
+ // Hardcoding the value from android::PixelFormat
+ static constexpr uint64_t kRGBA4444 = 7;
+ return kRGBA4444;
default:
ALOGV("Unsupported colorType: %d, return RGBA_8888 by default", (int)colorType);
- return PIXEL_FORMAT_RGBA_8888;
+ return AHARDWAREBUFFER_FORMAT_R8G8B8A8_UNORM;
}
}
-
-SkColorType PixelFormatToColorType(android::PixelFormat format) {
- switch (format) {
- case PIXEL_FORMAT_RGBX_8888: return kRGB_888x_SkColorType;
- case PIXEL_FORMAT_RGBA_8888: return kRGBA_8888_SkColorType;
- case PIXEL_FORMAT_RGBA_FP16: return kRGBA_F16_SkColorType;
- case PIXEL_FORMAT_RGB_565: return kRGB_565_SkColorType;
- case PIXEL_FORMAT_RGBA_1010102: return kRGBA_1010102_SkColorType;
- case PIXEL_FORMAT_RGBA_4444: return kARGB_4444_SkColorType;
- default:
- ALOGV("Unsupported PixelFormat: %d, return kUnknown_SkColorType by default", format);
- return kUnknown_SkColorType;
- }
-}
+#endif
namespace {
static constexpr skcms_TransferFunction k2Dot6 = {2.6f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f};
diff --git a/libs/hwui/utils/Color.h b/libs/hwui/utils/Color.h
index a76f7e4..a29b285 100644
--- a/libs/hwui/utils/Color.h
+++ b/libs/hwui/utils/Color.h
@@ -16,14 +16,12 @@
#ifndef COLOR_H
#define COLOR_H
-#include <math.h>
-#include <cutils/compiler.h>
-#include <system/graphics.h>
-#include <ui/PixelFormat.h>
-
#include <SkColor.h>
#include <SkColorSpace.h>
#include <SkImageInfo.h>
+#include <cutils/compiler.h>
+#include <math.h>
+#include <system/graphics.h>
struct ANativeWindow_Buffer;
struct AHardwareBuffer_Desc;
@@ -98,10 +96,9 @@
SkImageInfo BufferDescriptionToImageInfo(const AHardwareBuffer_Desc& bufferDesc,
sk_sp<SkColorSpace> colorSpace);
-#endif
-android::PixelFormat ColorTypeToPixelFormat(SkColorType colorType);
-ANDROID_API SkColorType PixelFormatToColorType(android::PixelFormat format);
+uint32_t ColorTypeToBufferFormat(SkColorType colorType);
+#endif
ANDROID_API sk_sp<SkColorSpace> DataSpaceToColorSpace(android_dataspace dataspace);
diff --git a/libs/hwui/utils/NdkUtils.cpp b/libs/hwui/utils/NdkUtils.cpp
new file mode 100644
index 0000000..de6274e
--- /dev/null
+++ b/libs/hwui/utils/NdkUtils.cpp
@@ -0,0 +1,32 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <utils/NdkUtils.h>
+
+namespace android {
+namespace uirenderer {
+
+UniqueAHardwareBuffer allocateAHardwareBuffer(const AHardwareBuffer_Desc& desc) {
+ AHardwareBuffer* buffer;
+ if (AHardwareBuffer_allocate(&desc, &buffer) != 0) {
+ return nullptr;
+ } else {
+ return UniqueAHardwareBuffer{buffer};
+ }
+}
+
+} // namespace uirenderer
+} // namespace android
diff --git a/libs/hwui/utils/NdkUtils.h b/libs/hwui/utils/NdkUtils.h
new file mode 100644
index 0000000..f218eb2
--- /dev/null
+++ b/libs/hwui/utils/NdkUtils.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <android/hardware_buffer.h>
+
+#include <memory>
+
+namespace android {
+namespace uirenderer {
+
+// Deleter for an AHardwareBuffer, to be passed to an std::unique_ptr.
+struct AHardwareBuffer_deleter {
+ void operator()(AHardwareBuffer* ahb) const { AHardwareBuffer_release(ahb); }
+};
+
+using UniqueAHardwareBuffer = std::unique_ptr<AHardwareBuffer, AHardwareBuffer_deleter>;
+
+// Allocates a UniqueAHardwareBuffer with the provided buffer description.
+// Returns nullptr if allocation did not succeed.
+UniqueAHardwareBuffer allocateAHardwareBuffer(const AHardwareBuffer_Desc& desc);
+
+} // namespace uirenderer
+} // namespace android
diff --git a/location/TEST_MAPPING b/location/TEST_MAPPING
index a9dbda4..214d2f3 100644
--- a/location/TEST_MAPPING
+++ b/location/TEST_MAPPING
@@ -8,6 +8,12 @@
},
{
"name": "CtsLocationNoneTestCases"
+ },
+ {
+ "name": "FrameworksMockingServicesTests",
+ "options": [{
+ "include-filter": "com.android.server.location"
+ }]
}
]
}
\ No newline at end of file
diff --git a/location/java/android/location/AbstractListenerManager.java b/location/java/android/location/AbstractListenerManager.java
deleted file mode 100644
index 3dc7cfc..0000000
--- a/location/java/android/location/AbstractListenerManager.java
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2014 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.location;
-
-import static com.android.internal.util.function.pooled.PooledLambda.obtainRunnable;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.os.Binder;
-import android.os.Handler;
-import android.os.HandlerExecutor;
-import android.os.RemoteException;
-import android.util.ArrayMap;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.Preconditions;
-
-import java.util.Objects;
-import java.util.concurrent.Executor;
-import java.util.function.Consumer;
-
-/**
- * A base class to manage listeners that have a 1:N -> source:listener relationship.
- *
- * @hide
- */
-abstract class AbstractListenerManager<TRequest, TListener> {
-
- private static class Registration<TRequest, TListener> {
- private final Executor mExecutor;
- @Nullable private TRequest mRequest;
- @Nullable private volatile TListener mListener;
-
- private Registration(@Nullable TRequest request, Executor executor, TListener listener) {
- Preconditions.checkArgument(listener != null, "invalid null listener/callback");
- Preconditions.checkArgument(executor != null, "invalid null executor");
- mExecutor = executor;
- mListener = listener;
- mRequest = request;
- }
-
- @Nullable
- public TRequest getRequest() {
- return mRequest;
- }
-
- private void unregister() {
- mRequest = null;
- mListener = null;
- }
-
- private void execute(Consumer<TListener> operation) {
- mExecutor.execute(
- obtainRunnable(Registration<TRequest, TListener>::accept, this, operation)
- .recycleOnUse());
- }
-
- private void accept(Consumer<TListener> operation) {
- TListener listener = mListener;
- if (listener == null) {
- return;
- }
-
- // we may be under the binder identity if a direct executor is used
- long identity = Binder.clearCallingIdentity();
- try {
- operation.accept(listener);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
- }
-
- @GuardedBy("mListeners")
- private final ArrayMap<Object, Registration<TRequest, TListener>> mListeners =
- new ArrayMap<>();
-
- @GuardedBy("mListeners")
- @Nullable
- private TRequest mMergedRequest;
-
- public boolean addListener(@NonNull TListener listener, @NonNull Handler handler)
- throws RemoteException {
- return addInternal(/* request= */ null, listener, handler);
- }
-
- public boolean addListener(@NonNull TListener listener, @NonNull Executor executor)
- throws RemoteException {
- return addInternal(/* request= */ null, listener, executor);
- }
-
- public boolean addListener(@Nullable TRequest request, @NonNull TListener listener,
- @NonNull Handler handler) throws RemoteException {
- return addInternal(request, listener, handler);
- }
-
- public boolean addListener(@Nullable TRequest request, @NonNull TListener listener,
- @NonNull Executor executor) throws RemoteException {
- return addInternal(request, listener, executor);
- }
-
- protected final boolean addInternal(@Nullable TRequest request, @NonNull Object listener,
- @NonNull Handler handler) throws RemoteException {
- return addInternal(request, listener, new HandlerExecutor(handler));
- }
-
- protected final boolean addInternal(@Nullable TRequest request, @NonNull Object listener,
- @NonNull Executor executor)
- throws RemoteException {
- Preconditions.checkArgument(listener != null, "invalid null listener/callback");
- return addInternal(listener, new Registration<>(request, executor, convertKey(listener)));
- }
-
- private boolean addInternal(Object key, Registration<TRequest, TListener> registration)
- throws RemoteException {
- Preconditions.checkNotNull(registration);
-
- synchronized (mListeners) {
- boolean initialRequest = mListeners.isEmpty();
-
- Registration<TRequest, TListener> oldRegistration = mListeners.put(key, registration);
- if (oldRegistration != null) {
- oldRegistration.unregister();
- }
- TRequest merged = mergeRequests();
-
- if (initialRequest || !Objects.equals(merged, mMergedRequest)) {
- mMergedRequest = merged;
- if (!initialRequest) {
- unregisterService();
- }
- registerService(mMergedRequest);
- }
-
- return true;
- }
- }
-
- public void removeListener(Object listener) throws RemoteException {
- synchronized (mListeners) {
- Registration<TRequest, TListener> oldRegistration = mListeners.remove(listener);
- if (oldRegistration == null) {
- return;
- }
- oldRegistration.unregister();
-
- boolean lastRequest = mListeners.isEmpty();
- TRequest merged = lastRequest ? null : mergeRequests();
- boolean newRequest = !lastRequest && !Objects.equals(merged, mMergedRequest);
-
- if (lastRequest || newRequest) {
- unregisterService();
- mMergedRequest = merged;
- if (newRequest) {
- registerService(mMergedRequest);
- }
- }
- }
- }
-
- @SuppressWarnings("unchecked")
- protected TListener convertKey(@NonNull Object listener) {
- return (TListener) listener;
- }
-
- protected abstract boolean registerService(TRequest request) throws RemoteException;
- protected abstract void unregisterService() throws RemoteException;
-
- @Nullable
- protected TRequest merge(@NonNull TRequest[] requests) {
- for (TRequest request : requests) {
- Preconditions.checkArgument(request == null,
- "merge() has to be overridden for non-null requests.");
- }
- return null;
- }
-
- protected void execute(Consumer<TListener> operation) {
- synchronized (mListeners) {
- for (Registration<TRequest, TListener> registration : mListeners.values()) {
- registration.execute(operation);
- }
- }
- }
-
- @GuardedBy("mListeners")
- @SuppressWarnings("unchecked")
- @Nullable
- private TRequest mergeRequests() {
- Preconditions.checkState(Thread.holdsLock(mListeners));
-
- if (mListeners.isEmpty()) {
- return null;
- }
-
- if (mListeners.size() == 1) {
- return mListeners.valueAt(0).getRequest();
- }
-
- TRequest[] requests = (TRequest[]) new Object[mListeners.size()];
- for (int index = 0; index < mListeners.size(); index++) {
- requests[index] = mListeners.valueAt(index).getRequest();
- }
- return merge(requests);
- }
-}
diff --git a/location/java/android/location/Geocoder.java b/location/java/android/location/Geocoder.java
index ac7eb8b..704cdbf 100644
--- a/location/java/android/location/Geocoder.java
+++ b/location/java/android/location/Geocoder.java
@@ -17,16 +17,16 @@
package android.location;
import android.content.Context;
-import android.location.Address;
-import android.os.RemoteException;
import android.os.IBinder;
+import android.os.RemoteException;
import android.os.ServiceManager;
-import android.util.Log;
import java.io.IOException;
-import java.util.Locale;
-import java.util.ArrayList;
+import java.util.Collections;
import java.util.List;
+import java.util.Locale;
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
/**
* A class for handling geocoding and reverse geocoding. Geocoding is
@@ -45,10 +45,11 @@
* exists.
*/
public final class Geocoder {
- private static final String TAG = "Geocoder";
- private GeocoderParams mParams;
- private ILocationManager mService;
+ private static final long TIMEOUT_MS = 60000;
+
+ private final GeocoderParams mParams;
+ private final ILocationManager mService;
/**
* Returns true if the Geocoder methods getFromLocation and
@@ -62,8 +63,7 @@
try {
return lm.geocoderIsPresent();
} catch (RemoteException e) {
- Log.e(TAG, "isPresent: got RemoteException", e);
- return false;
+ throw e.rethrowFromSystemServer();
}
}
@@ -129,17 +129,11 @@
throw new IllegalArgumentException("longitude == " + longitude);
}
try {
- List<Address> results = new ArrayList<Address>();
- String ex = mService.getFromLocation(latitude, longitude, maxResults,
- mParams, results);
- if (ex != null) {
- throw new IOException(ex);
- } else {
- return results;
- }
+ GeocodeListener listener = new GeocodeListener();
+ mService.getFromLocation(latitude, longitude, maxResults, mParams, listener);
+ return listener.getResults();
} catch (RemoteException e) {
- Log.e(TAG, "getFromLocation: got RemoteException", e);
- return null;
+ throw e.rethrowFromSystemServer();
}
}
@@ -170,18 +164,13 @@
if (locationName == null) {
throw new IllegalArgumentException("locationName == null");
}
+
try {
- List<Address> results = new ArrayList<Address>();
- String ex = mService.getFromLocationName(locationName,
- 0, 0, 0, 0, maxResults, mParams, results);
- if (ex != null) {
- throw new IOException(ex);
- } else {
- return results;
- }
+ GeocodeListener listener = new GeocodeListener();
+ mService.getFromLocationName(locationName, 0, 0, 0, 0, maxResults, mParams, listener);
+ return listener.getResults();
} catch (RemoteException e) {
- Log.e(TAG, "getFromLocationName: got RemoteException", e);
- return null;
+ throw e.rethrowFromSystemServer();
}
}
@@ -242,19 +231,46 @@
throw new IllegalArgumentException("upperRightLongitude == "
+ upperRightLongitude);
}
+
try {
- ArrayList<Address> result = new ArrayList<Address>();
- String ex = mService.getFromLocationName(locationName,
- lowerLeftLatitude, lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
- maxResults, mParams, result);
- if (ex != null) {
- throw new IOException(ex);
- } else {
- return result;
- }
+ GeocodeListener listener = new GeocodeListener();
+ mService.getFromLocationName(locationName, lowerLeftLatitude, lowerLeftLongitude,
+ upperRightLatitude, upperRightLongitude, maxResults, mParams, listener);
+ return listener.getResults();
} catch (RemoteException e) {
- Log.e(TAG, "getFromLocationName: got RemoteException", e);
- return null;
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ private static class GeocodeListener extends IGeocodeListener.Stub {
+ private final CountDownLatch mLatch = new CountDownLatch(1);
+
+ private String mError = null;
+ private List<Address> mResults = Collections.emptyList();
+
+ GeocodeListener() {}
+
+ @Override
+ public void onResults(String error, List<Address> results) {
+ mError = error;
+ mResults = results;
+ mLatch.countDown();
+ }
+
+ public List<Address> getResults() throws IOException {
+ try {
+ if (!mLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS)) {
+ mError = "Service not Available";
+ }
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ }
+
+ if (mError != null) {
+ throw new IOException(mError);
+ } else {
+ return mResults;
+ }
}
}
}
diff --git a/location/java/android/location/GnssAntennaInfo.java b/location/java/android/location/GnssAntennaInfo.java
index b2f9a0f..88bf368 100644
--- a/location/java/android/location/GnssAntennaInfo.java
+++ b/location/java/android/location/GnssAntennaInfo.java
@@ -95,31 +95,55 @@
}
};
+ /**
+ * Returns the x-axis offset of the phase center from the origin of the Android sensor
+ * coordinate system, in millimeters.
+ */
@FloatRange()
public double getXOffsetMm() {
return mOffsetXMm;
}
+ /**
+ * Returns the 1-sigma uncertainty of the x-axis offset of the phase center from the origin
+ * of the Android sensor coordinate system, in millimeters.
+ */
@FloatRange()
public double getXOffsetUncertaintyMm() {
return mOffsetXUncertaintyMm;
}
+ /**
+ * Returns the y-axis offset of the phase center from the origin of the Android sensor
+ * coordinate system, in millimeters.
+ */
@FloatRange()
public double getYOffsetMm() {
return mOffsetYMm;
}
+ /**
+ * Returns the 1-sigma uncertainty of the y-axis offset of the phase center from the origin
+ * of the Android sensor coordinate system, in millimeters.
+ */
@FloatRange()
public double getYOffsetUncertaintyMm() {
return mOffsetYUncertaintyMm;
}
+ /**
+ * Returns the z-axis offset of the phase center from the origin of the Android sensor
+ * coordinate system, in millimeters.
+ */
@FloatRange()
public double getZOffsetMm() {
return mOffsetZMm;
}
+ /**
+ * Returns the 1-sigma uncertainty of the z-axis offset of the phase center from the origin
+ * of the Android sensor coordinate system, in millimeters.
+ */
@FloatRange()
public double getZOffsetUncertaintyMm() {
return mOffsetZUncertaintyMm;
@@ -154,7 +178,8 @@
* Represents corrections on a spherical mapping. Corrections are added to measurements to
* obtain the corrected values.
*
- * The corrections and associated (1-sigma) uncertainties are represented by respect 2D arrays.
+ * The corrections and associated (1-sigma) uncertainties are represented by respective 2D
+ * matrices.
*
* Each row (major indices) represents a fixed theta. The first row corresponds to a
* theta angle of 0 degrees. The last row corresponds to a theta angle of (360 - deltaTheta)
@@ -177,18 +202,18 @@
@NonNull double[][] correctionUncertainties) {
if (corrections.length != correctionUncertainties.length
|| corrections[0].length != correctionUncertainties[0].length) {
- throw new IllegalArgumentException("Correction and correction uncertainty arrays "
+ throw new IllegalArgumentException("Correction and correction uncertainty matrices "
+ "must have the same dimensions.");
}
mNumRows = corrections.length;
if (mNumRows < 1) {
- throw new IllegalArgumentException("Arrays must have at least one row.");
+ throw new IllegalArgumentException("Matrix must have at least one row.");
}
mNumColumns = corrections[0].length;
if (mNumColumns < 2) {
- throw new IllegalArgumentException("Arrays must have at least two columns.");
+ throw new IllegalArgumentException("Matrix must have at least two columns.");
}
mCorrections = corrections;
@@ -223,7 +248,7 @@
}
/**
- * Array representing corrections on a spherical mapping. Corrections are added to
+ * Matrix representing corrections on a spherical mapping. Corrections are added to
* measurements to obtain the corrected values.
*
* Each row (major indices) represents a fixed theta. The first row corresponds to a
@@ -236,12 +261,12 @@
* angles, i.e., deltaPhi = 180 / (number of columns - 1).
*/
@NonNull
- public double[][] getCorrectionsArray() {
+ public double[][] getCorrectionsMatrix() {
return mCorrections;
}
/**
- * Array representing uncertainty on corrections on a spherical mapping.
+ * Matrix representing uncertainty on corrections on a spherical mapping.
*
* Each row (major indices) represents a fixed theta. The first row corresponds to a
* theta angle of 0 degrees. The last row corresponds to a theta angle of (360 - deltaTheta)
@@ -253,7 +278,7 @@
* angles, i.e., deltaPhi = 180 / (number of columns - 1).
*/
@NonNull
- public double[][] getCorrectionUncertaintiesArray() {
+ public double[][] getCorrectionUncertaintiesMatrix() {
return mCorrectionUncertainties;
}
diff --git a/location/java/android/location/GnssNavigationMessage.java b/location/java/android/location/GnssNavigationMessage.java
index 27d3637..aade5ac 100644
--- a/location/java/android/location/GnssNavigationMessage.java
+++ b/location/java/android/location/GnssNavigationMessage.java
@@ -17,6 +17,7 @@
package android.location;
import android.annotation.IntDef;
+import android.annotation.IntRange;
import android.annotation.NonNull;
import android.annotation.TestApi;
import android.os.Parcel;
@@ -77,6 +78,14 @@
public static final int TYPE_IRN_L5CA = 0x0701;
/**
+ * The status of the GNSS Navigation Message
+ * @hide
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @IntDef({STATUS_UNKNOWN, STATUS_PARITY_PASSED, STATUS_PARITY_REBUILT})
+ public @interface GnssNavigationMessageStatus {}
+
+ /**
* The Navigation Message Status is 'unknown'.
*/
public static final int STATUS_UNKNOWN = 0;
@@ -240,6 +249,7 @@
*
* <p>Range varies by constellation. See definition at {@code GnssStatus#getSvid(int)}
*/
+ @IntRange(from = 1, to = 200)
public int getSvid() {
return mSvid;
}
@@ -249,7 +259,7 @@
* @hide
*/
@TestApi
- public void setSvid(int value) {
+ public void setSvid(@IntRange(from = 1, to = 200) int value) {
mSvid = value;
}
@@ -282,6 +292,7 @@
* id and this value can be set to -1.)</li>
* </ul>
*/
+ @IntRange(from = -1, to = 120)
public int getMessageId() {
return mMessageId;
}
@@ -291,7 +302,7 @@
* @hide
*/
@TestApi
- public void setMessageId(int value) {
+ public void setMessageId(@IntRange(from = -1, to = 120) int value) {
mMessageId = value;
}
@@ -316,6 +327,7 @@
* navigation message, in the range of 1-4.</li>
* </ul>
*/
+ @IntRange(from = 1)
public int getSubmessageId() {
return mSubmessageId;
}
@@ -325,7 +337,7 @@
* @hide
*/
@TestApi
- public void setSubmessageId(int value) {
+ public void setSubmessageId(@IntRange(from = 1) int value) {
mSubmessageId = value;
}
@@ -378,6 +390,7 @@
/**
* Gets the Status of the navigation message contained in the object.
*/
+ @GnssNavigationMessageStatus
public int getStatus() {
return mStatus;
}
@@ -387,7 +400,7 @@
* @hide
*/
@TestApi
- public void setStatus(int value) {
+ public void setStatus(@GnssNavigationMessageStatus int value) {
mStatus = value;
}
diff --git a/location/java/android/location/GnssRequest.java b/location/java/android/location/GnssRequest.java
index 2afb265..5fc9161 100644
--- a/location/java/android/location/GnssRequest.java
+++ b/location/java/android/location/GnssRequest.java
@@ -70,7 +70,9 @@
public String toString() {
StringBuilder s = new StringBuilder();
s.append("GnssRequest[");
- s.append("FullTracking=").append(mFullTracking);
+ if (mFullTracking) {
+ s.append("FullTracking");
+ }
s.append(']');
return s.toString();
}
diff --git a/core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl b/location/java/android/location/IGeocodeListener.aidl
similarity index 65%
rename from core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl
rename to location/java/android/location/IGeocodeListener.aidl
index 6dcdc1b..8e10411 100644
--- a/core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl
+++ b/location/java/android/location/IGeocodeListener.aidl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2020 The Android Open Source Project
+ * Copyright (C) 2009 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.
@@ -13,14 +13,17 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package android.hardware.biometrics;
+
+package android.location;
+
+import android.location.Address;
/**
- * Representation of a native handle.
- * Copied from /common/aidl/android/hardware/common/NativeHandle.aidl
- * @hide
+ * An interface for returning geocode results.
+ *
+ * {@hide}
*/
-parcelable IBiometricNativeHandle {
- ParcelFileDescriptor[] fds;
- int[] ints;
+interface IGeocodeListener {
+
+ oneway void onResults(String error, in List<Address> results);
}
diff --git a/location/java/android/location/IGeocodeProvider.aidl b/location/java/android/location/IGeocodeProvider.aidl
index 7eaf7b8..e661ca6 100644
--- a/location/java/android/location/IGeocodeProvider.aidl
+++ b/location/java/android/location/IGeocodeProvider.aidl
@@ -17,6 +17,7 @@
package android.location;
import android.location.Address;
+import android.location.IGeocodeListener;
import android.location.GeocoderParams;
/**
@@ -26,13 +27,7 @@
*/
interface IGeocodeProvider {
- @UnsupportedAppUsage
- String getFromLocation(double latitude, double longitude, int maxResults,
- in GeocoderParams params, out List<Address> addrs);
-
- @UnsupportedAppUsage
- String getFromLocationName(String locationName,
- double lowerLeftLatitude, double lowerLeftLongitude,
- double upperRightLatitude, double upperRightLongitude, int maxResults,
- in GeocoderParams params, out List<Address> addrs);
+ oneway void getFromLocation(double latitude, double longitude, int maxResults, in GeocoderParams params, in IGeocodeListener listener);
+ oneway void getFromLocationName(String locationName, double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude,
+ double upperRightLongitude, int maxResults, in GeocoderParams params, in IGeocodeListener listener);
}
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 8600dc4..eb82c48 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -24,6 +24,7 @@
import android.location.GnssMeasurementCorrections;
import android.location.GnssRequest;
import android.location.IBatchedLocationCallback;
+import android.location.IGeocodeListener;
import android.location.IGnssAntennaInfoListener;
import android.location.IGnssMeasurementsListener;
import android.location.IGnssStatusListener;
@@ -44,68 +45,58 @@
*/
interface ILocationManager
{
- Location getLastLocation(in LocationRequest request, String packageName, String featureId);
+ Location getLastLocation(in LocationRequest request, String packageName, String attributionTag);
boolean getCurrentLocation(in LocationRequest request,
in ICancellationSignal cancellationSignal, in ILocationListener listener,
- String packageName, String featureId, String listenerIdentifier);
+ String packageName, String attributionTag);
void requestLocationUpdates(in LocationRequest request, in ILocationListener listener,
- in PendingIntent intent, String packageName, String featureId,
- String listenerIdentifier);
- void removeUpdates(in ILocationListener listener, in PendingIntent intent, String packageName);
+ in PendingIntent intent, String packageName, String attributionTag);
+ void removeUpdates(in ILocationListener listener, in PendingIntent intent);
void requestGeofence(in LocationRequest request, in Geofence geofence,
- in PendingIntent intent, String packageName, String featureId,
- String listenerIdentifier);
+ in PendingIntent intent, String packageName, String attributionTag);
void removeGeofence(in Geofence fence, in PendingIntent intent, String packageName);
- boolean registerGnssStatusCallback(IGnssStatusListener callback, String packageName,
- String featureId);
- void unregisterGnssStatusCallback(IGnssStatusListener callback);
-
boolean geocoderIsPresent();
- String getFromLocation(double latitude, double longitude, int maxResults,
- in GeocoderParams params, out List<Address> addrs);
- String getFromLocationName(String locationName,
+ void getFromLocation(double latitude, double longitude, int maxResults,
+ in GeocoderParams params, in IGeocodeListener listener);
+ void getFromLocationName(String locationName,
double lowerLeftLatitude, double lowerLeftLongitude,
double upperRightLatitude, double upperRightLongitude, int maxResults,
- in GeocoderParams params, out List<Address> addrs);
+ in GeocoderParams params, in IGeocodeListener listener);
- boolean addGnssMeasurementsListener(in GnssRequest request,
- in IGnssMeasurementsListener listener,
- String packageName, String featureId,
- String listenerIdentifier);
- void injectGnssMeasurementCorrections(in GnssMeasurementCorrections corrections,
- in String packageName);
- long getGnssCapabilities(in String packageName);
- void removeGnssMeasurementsListener(in IGnssMeasurementsListener listener);
-
- boolean addGnssAntennaInfoListener(in IGnssAntennaInfoListener listener,
- String packageName, String featureId, String listenerIdentifier);
- void removeGnssAntennaInfoListener(in IGnssAntennaInfoListener listener);
-
- boolean addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener,
- String packageName, String featureId, String listenerIdentifier);
- void removeGnssNavigationMessageListener(in IGnssNavigationMessageListener listener);
-
+ long getGnssCapabilities();
int getGnssYearOfHardware();
String getGnssHardwareModelName();
+ void registerGnssStatusCallback(in IGnssStatusListener callback, String packageName, String attributionTag);
+ void unregisterGnssStatusCallback(in IGnssStatusListener callback);
+
+ void addGnssMeasurementsListener(in GnssRequest request, in IGnssMeasurementsListener listener, String packageName, String attributionTag);
+ void removeGnssMeasurementsListener(in IGnssMeasurementsListener listener);
+
+ void addGnssAntennaInfoListener(in IGnssAntennaInfoListener listener, String packageName, String attributionTag);
+ void removeGnssAntennaInfoListener(in IGnssAntennaInfoListener listener);
+
+ void addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener, String packageName, String attributionTag);
+ void removeGnssNavigationMessageListener(in IGnssNavigationMessageListener listener);
+
+ void injectGnssMeasurementCorrections(in GnssMeasurementCorrections corrections, String packageName);
+
int getGnssBatchSize(String packageName);
- boolean addGnssBatchingCallback(in IBatchedLocationCallback callback, String packageName,
- String featureId, String listenerIdentifier);
+ void addGnssBatchingCallback(in IBatchedLocationCallback callback, String packageName, String attributionTag);
void removeGnssBatchingCallback();
- boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName);
+ void startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName, String attributionTag);
void flushGnssBatch(String packageName);
- boolean stopGnssBatch();
+ void stopGnssBatch();
void injectLocation(in Location location);
- @UnsupportedAppUsage
List<String> getAllProviders();
List<String> getProviders(in Criteria criteria, boolean enabledOnly);
String getBestProvider(in Criteria criteria, boolean enabledOnly);
ProviderProperties getProviderProperties(String provider);
- boolean isProviderPackage(String packageName);
+ boolean isProviderPackage(String provider, String packageName);
List<String> getProviderPackages(String provider);
void setExtraLocationControllerPackage(String packageName);
@@ -116,11 +107,11 @@
boolean isProviderEnabledForUser(String provider, int userId);
boolean isLocationEnabledForUser(int userId);
void setLocationEnabledForUser(boolean enabled, int userId);
- void addTestProvider(String name, in ProviderProperties properties, String opPackageName);
- void removeTestProvider(String provider, String opPackageName);
- void setTestProviderLocation(String provider, in Location loc, String opPackageName);
- void setTestProviderEnabled(String provider, boolean enabled, String opPackageName);
- List<LocationRequest> getTestProviderCurrentRequests(String provider, String opPackageName);
+ void addTestProvider(String name, in ProviderProperties properties, String packageName, String attributionTag);
+ void removeTestProvider(String provider, String packageName, String attributionTag);
+ void setTestProviderLocation(String provider, in Location location, String packageName, String attributionTag);
+ void setTestProviderEnabled(String provider, boolean enabled, String packageName, String attributionTag);
+ List<LocationRequest> getTestProviderCurrentRequests(String provider);
LocationTime getGnssTimeMillis();
boolean sendExtraCommand(String provider, String command, inout Bundle extras);
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 6724324..9aa0c87 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -585,6 +585,16 @@
return mElapsedRealtimeNanos;
}
+ /** @hide */
+ public long getElapsedRealtimeAgeNanos(long referenceRealtimeNs) {
+ return referenceRealtimeNs - mElapsedRealtimeNanos;
+ }
+
+ /** @hide */
+ public long getElapsedRealtimeAgeNanos() {
+ return getElapsedRealtimeAgeNanos(SystemClock.elapsedRealtimeNanos());
+ }
+
/**
* Set the time of this fix, in elapsed real-time since system boot.
*
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index ff7049e..c8a6a1a 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -22,6 +22,7 @@
import static android.Manifest.permission.WRITE_SECURE_SETTINGS;
import static android.app.AlarmManager.ELAPSED_REALTIME;
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
import static com.android.internal.util.function.pooled.PooledLambda.obtainRunnable;
import android.Manifest;
@@ -42,6 +43,7 @@
import android.compat.annotation.UnsupportedAppUsage;
import android.content.Context;
import android.content.pm.PackageManager;
+import android.location.util.listeners.ClientListenerManager;
import android.os.Binder;
import android.os.Build;
import android.os.Bundle;
@@ -54,7 +56,6 @@
import android.os.RemoteException;
import android.os.SystemClock;
import android.os.UserHandle;
-import android.provider.Settings;
import android.util.ArrayMap;
import com.android.internal.annotations.GuardedBy;
@@ -62,7 +63,6 @@
import com.android.internal.util.Preconditions;
import com.android.internal.util.function.pooled.PooledRunnable;
-import java.util.Collections;
import java.util.List;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionException;
@@ -321,10 +321,9 @@
private static final long GET_CURRENT_LOCATION_MAX_TIMEOUT_MS = 30 * 1000;
- private final Context mContext;
-
+ final Context mContext;
@UnsupportedAppUsage
- private final ILocationManager mService;
+ final ILocationManager mService;
@GuardedBy("mListeners")
private final ArrayMap<LocationListener, LocationListenerTransport> mListeners =
@@ -589,12 +588,7 @@
public boolean setProviderEnabledForUser(
@NonNull String provider, boolean enabled, @NonNull UserHandle userHandle) {
Preconditions.checkArgument(provider != null, "invalid null provider");
-
- return Settings.Secure.putStringForUser(
- mContext.getContentResolver(),
- Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
- (enabled ? "+" : "-") + provider,
- userHandle.getIdentifier());
+ return false;
}
/**
@@ -652,19 +646,6 @@
}
/**
- * Create a string that allows an app to identify a listener
- *
- * @param listener The listener
- *
- * @return A identifying string
- */
- private static String getListenerIdentifier(@NonNull Object listener) {
- return listener.getClass().getName()
- + '@'
- + Integer.toHexString(System.identityHashCode(listener));
- }
-
- /**
* Asynchronously returns a single current location fix. This may activate sensors in order to
* compute a new location, unlike {@link #getLastKnownLocation(String)}, which will only return
* a cached fix if available. The given callback will be invoked once and only once, either with
@@ -742,8 +723,7 @@
try {
if (mService.getCurrentLocation(currentLocationRequest, remoteCancellationSignal,
- listenerTransport, mContext.getPackageName(), mContext.getAttributionTag(),
- getListenerIdentifier(consumer))) {
+ listenerTransport, mContext.getPackageName(), mContext.getAttributionTag())) {
listenerTransport.register(mContext.getSystemService(AlarmManager.class),
remoteCancellationSignal);
if (cancellationSignal != null) {
@@ -1189,8 +1169,7 @@
boolean registered = false;
try {
mService.requestLocationUpdates(locationRequest, transport, null,
- mContext.getPackageName(), mContext.getAttributionTag(),
- getListenerIdentifier(listener));
+ mContext.getPackageName(), mContext.getAttributionTag());
registered = true;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
@@ -1235,8 +1214,7 @@
try {
mService.requestLocationUpdates(locationRequest, null, pendingIntent,
- mContext.getPackageName(), mContext.getAttributionTag(),
- getListenerIdentifier(pendingIntent));
+ mContext.getPackageName(), mContext.getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1293,7 +1271,7 @@
transport.unregister();
try {
- mService.removeUpdates(transport, null, mContext.getPackageName());
+ mService.removeUpdates(transport, null);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1312,7 +1290,7 @@
Preconditions.checkArgument(pendingIntent != null, "invalid null pending intent");
try {
- mService.removeUpdates(null, pendingIntent, mContext.getPackageName());
+ mService.removeUpdates(null, pendingIntent);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1443,15 +1421,36 @@
* otherwise.
*
* @hide
+ * @deprecated Prefer {@link #isProviderPackage(String, String)} instead.
*/
+ @Deprecated
@SystemApi
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
public boolean isProviderPackage(@NonNull String packageName) {
try {
- return mService.isProviderPackage(packageName);
+ return mService.isProviderPackage(null, packageName);
} catch (RemoteException e) {
- e.rethrowFromSystemServer();
- return false;
+ throw e.rethrowFromSystemServer();
+ }
+ }
+
+ /**
+ * Returns true if the given provider corresponds to the given package name. If the given
+ * provider is null, this will return true if any provider corresponds to the given package
+ * name.
+ *
+ * @param provider a provider listed by {@link #getAllProviders()} or null
+ * @param packageName the package name to test if it is a provider
+ * @return true if the given arguments correspond to a provider
+ * @hide
+ */
+ @SystemApi
+ @RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
+ public boolean isProviderPackage(@Nullable String provider, @NonNull String packageName) {
+ try {
+ return mService.isProviderPackage(provider, packageName);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@@ -1460,16 +1459,17 @@
* and an empty list if no package is associated with the provider.
*
* @hide
+ * @deprecated Prefer {@link #isProviderPackage(String, String)} instead.
*/
@TestApi
+ @Deprecated
@RequiresPermission(Manifest.permission.READ_DEVICE_CONFIG)
@Nullable
public List<String> getProviderPackages(@NonNull String provider) {
try {
return mService.getProviderPackages(provider);
} catch (RemoteException e) {
- e.rethrowFromSystemServer();
- return Collections.emptyList();
+ throw e.rethrowFromSystemServer();
}
}
@@ -1515,7 +1515,8 @@
requiresSatellite, requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed,
supportsBearing, powerRequirement, accuracy);
try {
- mService.addTestProvider(provider, properties, mContext.getOpPackageName());
+ mService.addTestProvider(provider, properties, mContext.getOpPackageName(),
+ mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1536,7 +1537,8 @@
Preconditions.checkArgument(provider != null, "invalid null provider");
try {
- mService.removeTestProvider(provider, mContext.getOpPackageName());
+ mService.removeTestProvider(provider, mContext.getOpPackageName(),
+ mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1570,7 +1572,8 @@
}
try {
- mService.setTestProviderLocation(provider, location, mContext.getOpPackageName());
+ mService.setTestProviderLocation(provider, location, mContext.getOpPackageName(),
+ mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1599,7 +1602,8 @@
Preconditions.checkArgument(provider != null, "invalid null provider");
try {
- mService.setTestProviderEnabled(provider, enabled, mContext.getOpPackageName());
+ mService.setTestProviderEnabled(provider, enabled, mContext.getOpPackageName(),
+ mContext.getFeatureId());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1643,8 +1647,7 @@
public List<LocationRequest> getTestProviderCurrentRequests(String providerName) {
Preconditions.checkArgument(providerName != null, "invalid null provider");
try {
- return mService.getTestProviderCurrentRequests(providerName,
- mContext.getOpPackageName());
+ return mService.getTestProviderCurrentRequests(providerName);
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1711,7 +1714,7 @@
LocationRequest request = new LocationRequest().setExpireIn(expiration);
try {
mService.requestGeofence(request, fence, intent, mContext.getPackageName(),
- mContext.getAttributionTag(), getListenerIdentifier(intent));
+ mContext.getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1798,7 +1801,7 @@
try {
mService.requestGeofence(request, fence, intent, mContext.getPackageName(),
- mContext.getAttributionTag(), getListenerIdentifier(intent));
+ mContext.getAttributionTag());
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -1867,7 +1870,7 @@
*/
public @NonNull GnssCapabilities getGnssCapabilities() {
try {
- long gnssCapabilities = mService.getGnssCapabilities(mContext.getPackageName());
+ long gnssCapabilities = mService.getGnssCapabilities();
if (gnssCapabilities == GnssCapabilities.INVALID_CAPABILITIES) {
gnssCapabilities = 0L;
}
@@ -1960,11 +1963,8 @@
"GpsStatus APIs not supported, please use GnssStatus APIs instead");
}
- try {
- return mGnssStatusListenerManager.addListener(listener, Runnable::run);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.addListener(listener, DIRECT_EXECUTOR);
+ return true;
}
/**
@@ -1982,11 +1982,7 @@
"GpsStatus APIs not supported, please use GnssStatus APIs instead");
}
- try {
- mGnssStatusListenerManager.removeListener(listener);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.removeListener(listener);
}
/**
@@ -2003,7 +1999,8 @@
@Deprecated
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean registerGnssStatusCallback(@NonNull GnssStatus.Callback callback) {
- return registerGnssStatusCallback(Runnable::run, callback);
+ mGnssStatusListenerManager.addListener(callback, DIRECT_EXECUTOR);
+ return true;
}
/**
@@ -2023,11 +2020,8 @@
handler = new Handler();
}
- try {
- return mGnssStatusListenerManager.addListener(callback, handler);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.addListener(callback, new HandlerExecutor(handler));
+ return true;
}
/**
@@ -2045,11 +2039,8 @@
public boolean registerGnssStatusCallback(
@NonNull @CallbackExecutor Executor executor,
@NonNull GnssStatus.Callback callback) {
- try {
- return mGnssStatusListenerManager.addListener(callback, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.addListener(callback, executor);
+ return true;
}
/**
@@ -2058,11 +2049,7 @@
* @param callback GNSS status callback object to remove
*/
public void unregisterGnssStatusCallback(@NonNull GnssStatus.Callback callback) {
- try {
- mGnssStatusListenerManager.removeListener(callback);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.removeListener(callback);
}
/**
@@ -2096,7 +2083,7 @@
@Deprecated
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean addNmeaListener(@NonNull OnNmeaMessageListener listener) {
- return addNmeaListener(Runnable::run, listener);
+ return addNmeaListener(DIRECT_EXECUTOR, listener);
}
/**
@@ -2115,11 +2102,9 @@
if (handler == null) {
handler = new Handler();
}
- try {
- return mGnssStatusListenerManager.addListener(listener, handler);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+
+ mGnssStatusListenerManager.addListener(listener, new HandlerExecutor(handler));
+ return true;
}
/**
@@ -2137,11 +2122,8 @@
public boolean addNmeaListener(
@NonNull @CallbackExecutor Executor executor,
@NonNull OnNmeaMessageListener listener) {
- try {
- return mGnssStatusListenerManager.addListener(listener, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.addListener(listener, executor);
+ return true;
}
/**
@@ -2150,11 +2132,7 @@
* @param listener a {@link OnNmeaMessageListener} object to remove
*/
public void removeNmeaListener(@NonNull OnNmeaMessageListener listener) {
- try {
- mGnssStatusListenerManager.removeListener(listener);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssStatusListenerManager.removeListener(listener);
}
/**
@@ -2194,7 +2172,7 @@
@RequiresPermission(ACCESS_FINE_LOCATION)
public boolean registerGnssMeasurementsCallback(
@NonNull GnssMeasurementsEvent.Callback callback) {
- return registerGnssMeasurementsCallback(Runnable::run, callback);
+ return registerGnssMeasurementsCallback(DIRECT_EXECUTOR, callback);
}
/**
@@ -2213,11 +2191,9 @@
if (handler == null) {
handler = new Handler();
}
- try {
- return mGnssMeasurementsListenerManager.addListener(callback, handler);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+
+ return registerGnssMeasurementsCallback(new GnssRequest.Builder().build(),
+ new HandlerExecutor(handler), callback);
}
/**
@@ -2235,11 +2211,8 @@
public boolean registerGnssMeasurementsCallback(
@NonNull @CallbackExecutor Executor executor,
@NonNull GnssMeasurementsEvent.Callback callback) {
- try {
- return mGnssMeasurementsListenerManager.addListener(callback, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ return registerGnssMeasurementsCallback(new GnssRequest.Builder().build(), executor,
+ callback);
}
/**
@@ -2264,11 +2237,8 @@
@NonNull @CallbackExecutor Executor executor,
@NonNull GnssMeasurementsEvent.Callback callback) {
Preconditions.checkArgument(request != null, "invalid null request");
- try {
- return mGnssMeasurementsListenerManager.addListener(request, callback, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssMeasurementsListenerManager.addListener(request, callback, executor);
+ return true;
}
/**
@@ -2301,11 +2271,7 @@
*/
public void unregisterGnssMeasurementsCallback(
@NonNull GnssMeasurementsEvent.Callback callback) {
- try {
- mGnssMeasurementsListenerManager.removeListener(callback);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssMeasurementsListenerManager.removeListener(callback);
}
/**
@@ -2324,11 +2290,8 @@
public boolean registerAntennaInfoListener(
@NonNull @CallbackExecutor Executor executor,
@NonNull GnssAntennaInfo.Listener listener) {
- try {
- return mGnssAntennaInfoListenerManager.addListener(listener, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssAntennaInfoListenerManager.addListener(listener, executor);
+ return true;
}
/**
@@ -2337,11 +2300,7 @@
* @param listener a {@link GnssAntennaInfo.Listener} object to remove.
*/
public void unregisterAntennaInfoListener(@NonNull GnssAntennaInfo.Listener listener) {
- try {
- mGnssAntennaInfoListenerManager.removeListener(listener);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssAntennaInfoListenerManager.removeListener(listener);
}
/**
@@ -2380,7 +2339,7 @@
@Deprecated
public boolean registerGnssNavigationMessageCallback(
@NonNull GnssNavigationMessage.Callback callback) {
- return registerGnssNavigationMessageCallback(Runnable::run, callback);
+ return registerGnssNavigationMessageCallback(DIRECT_EXECUTOR, callback);
}
/**
@@ -2400,11 +2359,8 @@
handler = new Handler();
}
- try {
- return mGnssNavigationMessageListenerTransport.addListener(callback, handler);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssNavigationMessageListenerTransport.addListener(callback, new HandlerExecutor(handler));
+ return true;
}
/**
@@ -2422,11 +2378,8 @@
public boolean registerGnssNavigationMessageCallback(
@NonNull @CallbackExecutor Executor executor,
@NonNull GnssNavigationMessage.Callback callback) {
- try {
- return mGnssNavigationMessageListenerTransport.addListener(callback, executor);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssNavigationMessageListenerTransport.addListener(callback, executor);
+ return true;
}
/**
@@ -2436,11 +2389,7 @@
*/
public void unregisterGnssNavigationMessageCallback(
@NonNull GnssNavigationMessage.Callback callback) {
- try {
- mGnssNavigationMessageListenerTransport.removeListener(callback);
- } catch (RemoteException e) {
- throw e.rethrowFromSystemServer();
- }
+ mGnssNavigationMessageListenerTransport.removeListener(callback);
}
/**
@@ -2490,12 +2439,11 @@
}
synchronized (mBatchedLocationCallbackManager) {
+ mBatchedLocationCallbackManager.addListener(callback, new HandlerExecutor(handler));
try {
- if (mBatchedLocationCallbackManager.addListener(callback, handler)) {
- return mService.startGnssBatch(periodNanos, wakeOnFifoFull,
- mContext.getPackageName());
- }
- return false;
+ mService.startGnssBatch(periodNanos, wakeOnFifoFull,
+ mContext.getPackageName(), mContext.getFeatureId());
+ return true;
} catch (RemoteException e) {
throw e.rethrowFromSystemServer();
}
@@ -2562,7 +2510,7 @@
@Nullable
private ICancellationSignal mRemoteCancellationSignal;
- private GetCurrentLocationTransport(Executor executor, Consumer<Location> consumer) {
+ GetCurrentLocationTransport(Executor executor, Consumer<Location> consumer) {
Preconditions.checkArgument(executor != null, "illegal null executor");
Preconditions.checkArgument(consumer != null, "illegal null consumer");
mExecutor = executor;
@@ -2687,7 +2635,7 @@
private final LocationListener mListener;
@Nullable private volatile Executor mExecutor = null;
- private LocationListenerTransport(@NonNull LocationListener listener) {
+ LocationListenerTransport(@NonNull LocationListener listener) {
Preconditions.checkArgument(listener != null, "invalid null listener");
mListener = listener;
}
@@ -2861,7 +2809,7 @@
private final OnNmeaMessageListener mListener;
- private NmeaAdapter(OnNmeaMessageListener listener) {
+ NmeaAdapter(OnNmeaMessageListener listener) {
mListener = listener;
}
@@ -2871,14 +2819,45 @@
}
}
- private class GnssStatusListenerManager extends
- AbstractListenerManager<Void, GnssStatus.Callback> {
- @Nullable
- private IGnssStatusListener mListenerTransport;
+ private static class GpsAdapter extends GnssStatus.Callback {
- @Nullable
- private volatile GnssStatus mGnssStatus;
- private volatile int mTtff;
+ private final GpsStatus.Listener mGpsListener;
+
+ GpsAdapter(GpsStatus.Listener gpsListener) {
+ mGpsListener = gpsListener;
+ }
+
+ @Override
+ public void onStarted() {
+ mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STARTED);
+ }
+
+ @Override
+ public void onStopped() {
+ mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STOPPED);
+ }
+
+ @Override
+ public void onFirstFix(int ttffMillis) {
+ mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_FIRST_FIX);
+ }
+
+ @Override
+ public void onSatelliteStatusChanged(GnssStatus status) {
+ mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_SATELLITE_STATUS);
+ }
+ }
+
+ private class GnssStatusListenerManager extends
+ ClientListenerManager<Void, GnssStatus.Callback> {
+
+ private @Nullable IGnssStatusListener mListenerTransport;
+
+ volatile @Nullable GnssStatus mGnssStatus;
+ volatile int mTtff;
+
+ GnssStatusListenerManager() {
+ }
public GnssStatus getGnssStatus() {
return mGnssStatus;
@@ -2888,95 +2867,61 @@
return mTtff;
}
- public boolean addListener(@NonNull GpsStatus.Listener listener, @NonNull Executor executor)
- throws RemoteException {
- return addInternal(null, listener, executor);
+ public void addListener(@NonNull OnNmeaMessageListener listener,
+ @NonNull Executor executor) {
+ addListener(listener, null, new NmeaAdapter(listener), executor);
}
- public boolean addListener(@NonNull OnNmeaMessageListener listener,
- @NonNull Handler handler)
- throws RemoteException {
- return addInternal(null, listener, handler);
- }
-
- public boolean addListener(@NonNull OnNmeaMessageListener listener,
- @NonNull Executor executor)
- throws RemoteException {
- return addInternal(null, listener, executor);
+ public void addListener(@NonNull GpsStatus.Listener listener, @NonNull Executor executor) {
+ addListener(listener, null, new GpsAdapter(listener), executor);
}
@Override
- protected GnssStatus.Callback convertKey(Object listener) {
- if (listener instanceof GnssStatus.Callback) {
- return (GnssStatus.Callback) listener;
- } else if (listener instanceof GpsStatus.Listener) {
- return new GnssStatus.Callback() {
- private final GpsStatus.Listener mGpsListener = (GpsStatus.Listener) listener;
-
- @Override
- public void onStarted() {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STARTED);
- }
-
- @Override
- public void onStopped() {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_STOPPED);
- }
-
- @Override
- public void onFirstFix(int ttffMillis) {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_FIRST_FIX);
- }
-
- @Override
- public void onSatelliteStatusChanged(GnssStatus status) {
- mGpsListener.onGpsStatusChanged(GpsStatus.GPS_EVENT_SATELLITE_STATUS);
- }
- };
- } else if (listener instanceof OnNmeaMessageListener) {
- return new NmeaAdapter((OnNmeaMessageListener) listener);
- } else {
- throw new IllegalStateException();
- }
- }
-
- @Override
- protected boolean registerService(Void ignored) throws RemoteException {
+ protected boolean registerService(Void ignored) {
Preconditions.checkState(mListenerTransport == null);
GnssStatusListener transport = new GnssStatusListener();
- if (mService.registerGnssStatusCallback(transport, mContext.getPackageName(),
- mContext.getAttributionTag())) {
+ try {
+ mService.registerGnssStatusCallback(transport, mContext.getPackageName(),
+ mContext.getAttributionTag());
mListenerTransport = transport;
return true;
- } else {
- return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@Override
- protected void unregisterService() throws RemoteException {
- Preconditions.checkState(mListenerTransport != null);
-
- mService.unregisterGnssStatusCallback(mListenerTransport);
- mListenerTransport = null;
+ protected void unregisterService() {
+ if (mListenerTransport != null) {
+ try {
+ IGnssStatusListener transport = mListenerTransport;
+ mListenerTransport = null;
+ mService.unregisterGnssStatusCallback(transport);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
private class GnssStatusListener extends IGnssStatusListener.Stub {
+ GnssStatusListener() {
+ }
+
@Override
public void onGnssStarted() {
- execute(GnssStatus.Callback::onStarted);
+ deliverToListeners(GnssStatus.Callback::onStarted);
}
@Override
public void onGnssStopped() {
- execute(GnssStatus.Callback::onStopped);
+ deliverToListeners(GnssStatus.Callback::onStopped);
}
@Override
public void onFirstFix(int ttff) {
mTtff = ttff;
- execute((callback) -> callback.onFirstFix(ttff));
+ deliverToListeners(callback -> callback.onFirstFix(ttff));
}
@Override
@@ -2986,12 +2931,12 @@
GnssStatus localStatus = GnssStatus.wrap(svCount, svidWithFlags, cn0s,
elevations, azimuths, carrierFreqs, basebandCn0s);
mGnssStatus = localStatus;
- execute((callback) -> callback.onSatelliteStatusChanged(localStatus));
+ deliverToListeners(callback -> callback.onSatelliteStatusChanged(localStatus));
}
@Override
public void onNmeaReceived(long timestamp, String nmea) {
- execute((callback) -> {
+ deliverToListeners((callback) -> {
if (callback instanceof NmeaAdapter) {
((NmeaAdapter) callback).onNmeaMessage(nmea, timestamp);
}
@@ -3001,168 +2946,216 @@
}
private class GnssMeasurementsListenerManager extends
- AbstractListenerManager<GnssRequest, GnssMeasurementsEvent.Callback> {
+ ClientListenerManager<GnssRequest, GnssMeasurementsEvent.Callback> {
@Nullable
private IGnssMeasurementsListener mListenerTransport;
+ GnssMeasurementsListenerManager() {
+ }
+
@Override
- protected boolean registerService(GnssRequest request) throws RemoteException {
+ protected boolean registerService(GnssRequest request) {
Preconditions.checkState(mListenerTransport == null);
GnssMeasurementsListener transport = new GnssMeasurementsListener();
- if (mService.addGnssMeasurementsListener(request, transport, mContext.getPackageName(),
- mContext.getAttributionTag(), "gnss measurement callback")) {
+ try {
+ mService.addGnssMeasurementsListener(request, transport, mContext.getPackageName(),
+ mContext.getAttributionTag());
mListenerTransport = transport;
return true;
- } else {
- return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@Override
- protected void unregisterService() throws RemoteException {
- Preconditions.checkState(mListenerTransport != null);
-
- mService.removeGnssMeasurementsListener(mListenerTransport);
- mListenerTransport = null;
- }
-
- @Override
- @Nullable
- protected GnssRequest merge(@NonNull GnssRequest[] requests) {
- Preconditions.checkArgument(requests.length > 0);
- for (GnssRequest request : requests) {
- if (request.isFullTracking()) {
- return request;
+ protected void unregisterService() {
+ if (mListenerTransport != null) {
+ try {
+ IGnssMeasurementsListener transport = mListenerTransport;
+ mListenerTransport = null;
+ mService.removeGnssMeasurementsListener(transport);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
- return requests[0];
+ }
+
+ @Override
+ protected GnssRequest mergeRequests(
+ List<Registration<GnssRequest, GnssMeasurementsEvent.Callback>> registrations) {
+ for (Registration<GnssRequest, GnssMeasurementsEvent.Callback> registration :
+ registrations) {
+ if (registration.getRequest().isFullTracking()) {
+ return registration.getRequest();
+ }
+ }
+
+ return registrations.get(0).getRequest();
}
private class GnssMeasurementsListener extends IGnssMeasurementsListener.Stub {
+ GnssMeasurementsListener() {
+ }
+
@Override
public void onGnssMeasurementsReceived(final GnssMeasurementsEvent event) {
- execute((callback) -> callback.onGnssMeasurementsReceived(event));
+ deliverToListeners((callback) -> callback.onGnssMeasurementsReceived(event));
}
@Override
public void onStatusChanged(int status) {
- execute((callback) -> callback.onStatusChanged(status));
+ deliverToListeners((callback) -> callback.onStatusChanged(status));
}
}
}
private class GnssNavigationMessageListenerManager extends
- AbstractListenerManager<Void, GnssNavigationMessage.Callback> {
+ ClientListenerManager<Void, GnssNavigationMessage.Callback> {
@Nullable
private IGnssNavigationMessageListener mListenerTransport;
+ GnssNavigationMessageListenerManager() {
+ }
+
@Override
- protected boolean registerService(Void ignored) throws RemoteException {
+ protected boolean registerService(Void ignored) {
Preconditions.checkState(mListenerTransport == null);
GnssNavigationMessageListener transport = new GnssNavigationMessageListener();
- if (mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(),
- mContext.getAttributionTag(), "gnss navigation callback")) {
+ try {
+ mService.addGnssNavigationMessageListener(transport, mContext.getPackageName(),
+ mContext.getAttributionTag());
mListenerTransport = transport;
return true;
- } else {
- return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@Override
- protected void unregisterService() throws RemoteException {
- Preconditions.checkState(mListenerTransport != null);
-
- mService.removeGnssNavigationMessageListener(mListenerTransport);
- mListenerTransport = null;
+ protected void unregisterService() {
+ if (mListenerTransport != null) {
+ try {
+ IGnssNavigationMessageListener transport = mListenerTransport;
+ mListenerTransport = null;
+ mService.removeGnssNavigationMessageListener(transport);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
private class GnssNavigationMessageListener extends IGnssNavigationMessageListener.Stub {
+ GnssNavigationMessageListener() {
+ }
+
@Override
public void onGnssNavigationMessageReceived(GnssNavigationMessage event) {
- execute((listener) -> listener.onGnssNavigationMessageReceived(event));
+ deliverToListeners((listener) -> listener.onGnssNavigationMessageReceived(event));
}
@Override
public void onStatusChanged(int status) {
- execute((listener) -> listener.onStatusChanged(status));
+ deliverToListeners((listener) -> listener.onStatusChanged(status));
}
}
}
private class GnssAntennaInfoListenerManager extends
- AbstractListenerManager<Void, GnssAntennaInfo.Listener> {
+ ClientListenerManager<Void, GnssAntennaInfo.Listener> {
@Nullable
private IGnssAntennaInfoListener mListenerTransport;
+ GnssAntennaInfoListenerManager() {
+ }
+
@Override
- protected boolean registerService(Void ignored) throws RemoteException {
+ protected boolean registerService(Void ignored) {
Preconditions.checkState(mListenerTransport == null);
GnssAntennaInfoListener transport = new GnssAntennaInfoListener();
- if (mService.addGnssAntennaInfoListener(transport, mContext.getPackageName(),
- mContext.getAttributionTag(), "gnss antenna info callback")) {
+ try {
+ mService.addGnssAntennaInfoListener(transport, mContext.getPackageName(),
+ mContext.getAttributionTag());
mListenerTransport = transport;
return true;
- } else {
- return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@Override
- protected void unregisterService() throws RemoteException {
- Preconditions.checkState(mListenerTransport != null);
-
- mService.removeGnssAntennaInfoListener(mListenerTransport);
- mListenerTransport = null;
+ protected void unregisterService() {
+ if (mListenerTransport != null) {
+ try {
+ IGnssAntennaInfoListener transport = mListenerTransport;
+ mListenerTransport = null;
+ mService.removeGnssAntennaInfoListener(transport);
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
private class GnssAntennaInfoListener extends IGnssAntennaInfoListener.Stub {
+ GnssAntennaInfoListener() {
+ }
+
@Override
- public void onGnssAntennaInfoReceived(final List<GnssAntennaInfo> gnssAntennaInfos) {
- execute((callback) -> callback.onGnssAntennaInfoReceived(gnssAntennaInfos));
+ public void onGnssAntennaInfoReceived(List<GnssAntennaInfo> infos) {
+ deliverToListeners(callback -> callback.onGnssAntennaInfoReceived(infos));
}
}
}
private class BatchedLocationCallbackManager extends
- AbstractListenerManager<Void, BatchedLocationCallback> {
+ ClientListenerManager<Void, BatchedLocationCallback> {
@Nullable
private IBatchedLocationCallback mListenerTransport;
+ BatchedLocationCallbackManager() {
+ }
+
@Override
- protected boolean registerService(Void ignored) throws RemoteException {
+ protected boolean registerService(Void ignored) {
Preconditions.checkState(mListenerTransport == null);
BatchedLocationCallback transport = new BatchedLocationCallback();
- if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
- mContext.getAttributionTag(), "batched location callback")) {
+ try {
+ mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
+ mContext.getAttributionTag());
mListenerTransport = transport;
return true;
- } else {
- return false;
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
}
}
@Override
- protected void unregisterService() throws RemoteException {
- Preconditions.checkState(mListenerTransport != null);
-
- mService.removeGnssBatchingCallback();
- mListenerTransport = null;
+ protected void unregisterService() {
+ if (mListenerTransport != null) {
+ try {
+ mListenerTransport = null;
+ mService.removeGnssBatchingCallback();
+ } catch (RemoteException e) {
+ throw e.rethrowFromSystemServer();
+ }
+ }
}
private class BatchedLocationCallback extends IBatchedLocationCallback.Stub {
+ BatchedLocationCallback() {
+ }
+
@Override
public void onLocationBatch(List<Location> locations) {
- execute((listener) -> listener.onLocationBatch(locations));
+ deliverToListeners((listener) -> listener.onLocationBatch(locations));
}
}
@@ -3171,7 +3164,7 @@
/**
* @hide
*/
- public static final String CACHE_KEY_LOCATION_ENABLED_PROPERTY =
+ private static final String CACHE_KEY_LOCATION_ENABLED_PROPERTY =
"cache_key.location_enabled";
/**
diff --git a/location/java/android/location/LocationManagerInternal.java b/location/java/android/location/LocationManagerInternal.java
index 6006d50..542737b4 100644
--- a/location/java/android/location/LocationManagerInternal.java
+++ b/location/java/android/location/LocationManagerInternal.java
@@ -18,6 +18,8 @@
import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.location.util.identity.CallerIdentity;
/**
* Location manager local system service interface.
@@ -36,13 +38,14 @@
public abstract boolean isProviderEnabledForUser(@NonNull String provider, int userId);
/**
- * Returns true if the given package belongs to a location provider, and so should be afforded
- * some special privileges.
+ * Returns true if the given identity is a location provider.
*
- * @param packageName The package name to check
- * @return True is the given package belongs to a location provider, false otherwise
+ * @param provider The provider to check, or null to check every provider
+ * @param identity The identity to match
+ * @return True if the given identity matches either the given location provider or any
+ * provider, and false otherwise
*/
- public abstract boolean isProviderPackage(@NonNull String packageName);
+ public abstract boolean isProvider(@Nullable String provider, @NonNull CallerIdentity identity);
/**
* Should only be used by GNSS code.
diff --git a/location/java/android/location/util/identity/CallerIdentity.java b/location/java/android/location/util/identity/CallerIdentity.java
new file mode 100644
index 0000000..1b8b2c5
--- /dev/null
+++ b/location/java/android/location/util/identity/CallerIdentity.java
@@ -0,0 +1,261 @@
+/*
+ * Copyright (C) 2020 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.location.util.identity;
+
+import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
+import static android.Manifest.permission.ACCESS_FINE_LOCATION;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+
+import android.annotation.IntDef;
+import android.annotation.Nullable;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.os.Binder;
+import android.os.Process;
+import android.os.UserHandle;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.Preconditions;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * Identifying information on a caller.
+ *
+ * @hide
+ */
+public final class CallerIdentity {
+
+ public static final int PERMISSION_NONE = 0;
+ public static final int PERMISSION_COARSE = 1;
+ public static final int PERMISSION_FINE = 2;
+
+ @IntDef({PERMISSION_NONE, PERMISSION_COARSE, PERMISSION_FINE})
+ @Retention(RetentionPolicy.SOURCE)
+ public @interface PermissionLevel {}
+
+ /**
+ * Converts the given permission level to the corresponding permission.
+ */
+ public static String asPermission(@PermissionLevel int permissionLevel) {
+ switch (permissionLevel) {
+ case PERMISSION_COARSE:
+ return ACCESS_COARSE_LOCATION;
+ case PERMISSION_FINE:
+ return ACCESS_FINE_LOCATION;
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+ /**
+ * Converts the given permission level to the corresponding appop.
+ */
+ public static int asAppOp(@PermissionLevel int permissionLevel) {
+ switch (permissionLevel) {
+ case PERMISSION_COARSE:
+ return AppOpsManager.OP_COARSE_LOCATION;
+ case PERMISSION_FINE:
+ return AppOpsManager.OP_FINE_LOCATION;
+ default:
+ throw new IllegalArgumentException();
+ }
+ }
+
+ /**
+ * Construct a CallerIdentity for test purposes.
+ */
+ @VisibleForTesting
+ public static CallerIdentity forTest(int uid, int pid, String packageName,
+ @Nullable String attributionTag, @PermissionLevel int permissionLevel) {
+
+ return new CallerIdentity(uid, pid, packageName, attributionTag,
+ permissionLevel);
+ }
+
+ /**
+ * Creates a CallerIdentity for the current process and context.
+ */
+ public static CallerIdentity fromContext(Context context) {
+ return new CallerIdentity(Process.myUid(), Process.myPid(),
+ context.getPackageName(), context.getFeatureId(),
+ getPermissionLevel(context, Binder.getCallingPid(), Binder.getCallingUid()));
+ }
+
+ /**
+ * Creates a CallerIdentity from the current binder identity, using the given package and
+ * feature id. The package will be checked to enforce it belongs to the calling uid, and a
+ * security exception will be thrown if it is invalid.
+ */
+ public static CallerIdentity fromBinder(Context context, String packageName,
+ @Nullable String attributionTag) {
+ int uid = Binder.getCallingUid();
+ if (!ArrayUtils.contains(context.getPackageManager().getPackagesForUid(uid), packageName)) {
+ throw new SecurityException("invalid package \"" + packageName + "\" for uid " + uid);
+ }
+
+ return fromBinderUnsafe(context, packageName, attributionTag);
+ }
+
+ /**
+ * Creates a CallerIdentity from the current binder identity, using the given package and
+ * feature id. The package will not be checked to enforce that it belongs to the calling uid -
+ * this method should only be used if the package will be validated by some other means, such as
+ * an appops call.
+ */
+ public static CallerIdentity fromBinderUnsafe(Context context, String packageName,
+ @Nullable String attributionTag) {
+ return new CallerIdentity(Binder.getCallingUid(), Binder.getCallingPid(),
+ packageName, attributionTag,
+ getPermissionLevel(context, Binder.getCallingPid(), Binder.getCallingUid()));
+ }
+
+ /**
+ * Throws a security exception if the caller does not hold a location permission.
+ */
+ public static void enforceCallingOrSelfLocationPermission(Context context,
+ @PermissionLevel int desiredPermissionLevel) {
+ enforceLocationPermission(Binder.getCallingUid(),
+ getPermissionLevel(context, Binder.getCallingPid(), Binder.getCallingUid()),
+ desiredPermissionLevel);
+ }
+
+ /**
+ * Returns false if the caller does not hold a location permission, true otherwise.
+ */
+ public static boolean checkCallingOrSelfLocationPermission(Context context,
+ @PermissionLevel int desiredPermissionLevel) {
+ return checkLocationPermission(
+ getPermissionLevel(context, Binder.getCallingPid(), Binder.getCallingUid()),
+ desiredPermissionLevel);
+ }
+
+ private static void enforceLocationPermission(int uid, @PermissionLevel int permissionLevel,
+ @PermissionLevel int desiredPermissionLevel) {
+ if (checkLocationPermission(permissionLevel, desiredPermissionLevel)) {
+ return;
+ }
+
+ if (desiredPermissionLevel == PERMISSION_COARSE) {
+ throw new SecurityException("uid " + uid + " does not have " + ACCESS_COARSE_LOCATION
+ + " or " + ACCESS_FINE_LOCATION + ".");
+ } else if (desiredPermissionLevel == PERMISSION_FINE) {
+ throw new SecurityException("uid " + uid + " does not have " + ACCESS_FINE_LOCATION
+ + ".");
+ }
+ }
+
+ private static boolean checkLocationPermission(@PermissionLevel int permissionLevel,
+ @PermissionLevel int desiredPermissionLevel) {
+ return permissionLevel >= desiredPermissionLevel;
+ }
+
+ private static @PermissionLevel int getPermissionLevel(Context context, int pid, int uid) {
+ if (context.checkPermission(ACCESS_FINE_LOCATION, pid, uid) == PERMISSION_GRANTED) {
+ return PERMISSION_FINE;
+ }
+ if (context.checkPermission(ACCESS_COARSE_LOCATION, pid, uid) == PERMISSION_GRANTED) {
+ return PERMISSION_COARSE;
+ }
+
+ return PERMISSION_NONE;
+ }
+
+ /** The calling UID. */
+ public final int uid;
+
+ /** The calling PID. */
+ public final int pid;
+
+ /** The calling user. */
+ public final int userId;
+
+ /** The calling package name. */
+ public final String packageName;
+
+ /** The calling attribution tag. */
+ public final @Nullable String attributionTag;
+
+ /**
+ * The calling location permission level. This field should only be used for validating
+ * permissions for API access. It should not be used for validating permissions for location
+ * access - that must be done through appops.
+ */
+ public final @PermissionLevel int permissionLevel;
+
+ private CallerIdentity(int uid, int pid, String packageName,
+ @Nullable String attributionTag, @PermissionLevel int permissionLevel) {
+ this.uid = uid;
+ this.pid = pid;
+ this.userId = UserHandle.getUserId(uid);
+ this.packageName = Objects.requireNonNull(packageName);
+ this.attributionTag = attributionTag;
+ this.permissionLevel = Preconditions.checkArgumentInRange(permissionLevel, PERMISSION_NONE,
+ PERMISSION_FINE, "permissionLevel");
+ }
+
+ /**
+ * Throws a security exception if the CallerIdentity does not hold a location permission.
+ */
+ public void enforceLocationPermission(@PermissionLevel int desiredPermissionLevel) {
+ enforceLocationPermission(uid, permissionLevel, desiredPermissionLevel);
+ }
+
+ @Override
+ public String toString() {
+ int length = 10 + packageName.length();
+ if (attributionTag != null) {
+ length += attributionTag.length();
+ }
+
+ StringBuilder builder = new StringBuilder(length);
+ builder.append(pid).append("/").append(packageName);
+ if (attributionTag != null) {
+ builder.append("[");
+ if (attributionTag.startsWith(packageName)) {
+ builder.append(attributionTag.substring(packageName.length()));
+ } else {
+ builder.append(attributionTag);
+ }
+ builder.append("]");
+ }
+ return builder.toString();
+ }
+
+ @Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof CallerIdentity)) {
+ return false;
+ }
+ CallerIdentity that = (CallerIdentity) o;
+ return uid == that.uid
+ && pid == that.pid
+ && packageName.equals(that.packageName)
+ && Objects.equals(attributionTag, that.attributionTag);
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(uid, pid, packageName, attributionTag);
+ }
+}
diff --git a/location/java/android/location/util/listeners/AbstractListenerManager.java b/location/java/android/location/util/listeners/AbstractListenerManager.java
new file mode 100644
index 0000000..09c1eb2
--- /dev/null
+++ b/location/java/android/location/util/listeners/AbstractListenerManager.java
@@ -0,0 +1,462 @@
+/*
+ * Copyright (C) 2020 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.location.util.listeners;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Binder;
+import android.os.Build;
+import android.util.ArrayMap;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Objects;
+import java.util.concurrent.Executor;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.function.Predicate;
+
+/**
+ * A base class to manage listeners multiplexed from some source.
+ *
+ * @param <TKey> key type
+ * @param <TRequest> request type
+ * @param <TListener> listener type
+ * @param <TRegistration> registration type
+ * @param <TMergedRequest> merged request type
+ * @hide
+ */
+public abstract class AbstractListenerManager<TKey, TRequest, TListener,
+ TRegistration extends AbstractListenerManager.Registration<TRequest, TListener>,
+ TMergedRequest> {
+
+ /**
+ * A listener registration object which holds data associated with the listener.
+ *
+ * @param <TRequest> request type
+ * @param <TListener> listener type
+ */
+ public static class Registration<TRequest, TListener> {
+
+ private final Executor mExecutor;
+ private volatile @Nullable TRequest mRequest;
+ private volatile @Nullable TListener mListener;
+
+ protected Registration(@Nullable TRequest request, @NonNull Executor executor,
+ @NonNull TListener listener) {
+ Preconditions.checkArgument(executor != null, "invalid null executor");
+ Preconditions.checkArgument(listener != null, "invalid null listener/callback");
+ mExecutor = executor;
+ mRequest = request;
+ mListener = listener;
+ }
+
+ /**
+ * Returns the request associated with this listener, or null if one wasn't supplied.
+ */
+ public @Nullable TRequest getRequest() {
+ return mRequest;
+ }
+
+ boolean register() {
+ Preconditions.checkState(mListener != null);
+ return onRegister();
+ }
+
+ protected final void unregister() {
+ if (mListener != null) {
+ onUnregister();
+ mRequest = null;
+ mListener = null;
+ }
+ }
+
+ /**
+ * May be overridden by subclasses. Invoked when registration is occurring. If this returns
+ * true, then registration will complete successfully. If this returns false, registration
+ * will fail.
+ */
+ protected boolean onRegister() {
+ return true;
+ }
+
+ /**
+ * May be overridden by subclasses. Invoked before unregistration occurs.
+ */
+ protected void onUnregister() {}
+
+ void execute(Consumer<TListener> operation) {
+ mExecutor.execute(() -> {
+ TListener listener = mListener;
+ if (listener == null) {
+ return;
+ }
+
+ // we may be under the binder identity if a direct executor is used
+ long identity = Binder.clearCallingIdentity();
+ try {
+ operation.accept(listener);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ });
+ }
+
+ @Override
+ public String toString() {
+ if (mRequest == null) {
+ return "[]";
+ } else {
+ return mRequest.toString();
+ }
+ }
+ }
+
+ @GuardedBy("mRegistrations")
+ private final ArrayMap<TKey, TRegistration> mRegistrations = new ArrayMap<>();
+
+ @GuardedBy("mRegistrations")
+ private final ReentrancyGuard mReentrancyGuard = new ReentrancyGuard();
+
+ @GuardedBy("mRegistrations")
+ private boolean mActiveRegistrations = false;
+
+ @GuardedBy("mRegistrations")
+ private boolean mServiceRegistered = false;
+
+ @GuardedBy("mRegistrations")
+ private TMergedRequest mCurrentRequest;
+
+ /**
+ * Adds a new registration with the given key. If the registration succeeds,
+ * {@link #onRegistrationAdded(Object, Registration)} will be invoked.
+ */
+ protected final void addRegistration(@NonNull TKey key, @NonNull TRegistration registration) {
+ synchronized (mRegistrations) {
+ // this class does not support adding listeners reentrantly
+ Preconditions.checkState(!mReentrancyGuard.isReentrant());
+
+ if (mRegistrations.isEmpty()) {
+ onRegister();
+ }
+
+ if (!registration.register()) {
+ registration.unregister();
+ if (mRegistrations.isEmpty()) {
+ onUnregister();
+ }
+ return;
+ }
+
+ TRegistration old = mRegistrations.put(Objects.requireNonNull(key), registration);
+ if (old != null) {
+ onRegistrationRemoved(key, old);
+ old.unregister();
+ }
+
+ onRegistrationAdded(key, registration);
+ updateService();
+ }
+ }
+
+ /**
+ * Removes the given registration with the given key. If unregistration occurs,
+ * {@link #onRegistrationRemoved(Object, Registration)} will be called.
+ */
+ protected final void removeRegistration(@NonNull TKey key,
+ @NonNull TRegistration registration) {
+ synchronized (mRegistrations) {
+ if (mRegistrations.remove(key, registration)) {
+ unregisterRegistration(key, registration);
+ }
+ }
+ }
+
+ /**
+ * Removes the registration with the given key. If unregistration occurs,
+ * {@link #onRegistrationRemoved(Object, Registration)} will be called.
+ */
+ protected final void removeRegistration(@NonNull TKey key) {
+ synchronized (mRegistrations) {
+ TRegistration registration = mRegistrations.remove(key);
+ if (registration != null) {
+ unregisterRegistration(key, registration);
+ }
+ }
+ }
+
+ @GuardedBy("mRegistrations")
+ private void unregisterRegistration(TKey key, TRegistration registration) {
+ if (Build.IS_DEBUGGABLE) {
+ Preconditions.checkState(Thread.holdsLock(mRegistrations));
+ }
+
+ // this class does not support removing listeners reentrantly
+ Preconditions.checkState(!mReentrancyGuard.isReentrant());
+
+ onRegistrationRemoved(key, registration);
+ registration.unregister();
+ updateService();
+
+ if (mRegistrations.isEmpty()) {
+ onUnregister();
+ }
+ }
+
+ /**
+ * Forces a re-evalution of the active state of all registrations, the merged request for all
+ * active registrations, and service registration state.
+ */
+ protected void updateService() {
+ synchronized (mRegistrations) {
+ ArrayList<TRegistration> actives = new ArrayList<>(mRegistrations.size());
+ for (int i = 0; i < mRegistrations.size(); i++) {
+ TRegistration registration = mRegistrations.valueAt(i);
+ if (isActive(registration)) {
+ actives.add(registration);
+ }
+ }
+
+ if (actives.isEmpty()) {
+ if (mServiceRegistered) {
+ unregisterService();
+ mServiceRegistered = false;
+ }
+ mCurrentRequest = null;
+
+ if (mActiveRegistrations) {
+ mActiveRegistrations = false;
+ onInactive();
+ }
+ return;
+ } else {
+ if (!mActiveRegistrations) {
+ mActiveRegistrations = true;
+ onActive();
+ }
+ }
+
+ TMergedRequest merged = mergeRequests(actives);
+ if (!mServiceRegistered || !Objects.equals(merged, mCurrentRequest)) {
+ if (mServiceRegistered) {
+ unregisterService();
+ }
+ mCurrentRequest = merged;
+ mServiceRegistered = registerService(mCurrentRequest);
+ }
+ }
+ }
+
+ /**
+ * Defines whether a registration is currently active or not. Only active registrations will be
+ * considered within {@link #mergeRequests(List)} to calculate the merged request, and listener
+ * invocations will only be delivered to active requests. If a registration's active state
+ * changes, {@link #updateRegistrations(Function)} should be invoked with a function that
+ * returns true for any registrations that have changed their active state in order to inform
+ * this manager of the active status change.
+ */
+ protected boolean isActive(@NonNull TRegistration registration) {
+ return true;
+ }
+
+ /**
+ * Performs some function on all (not just active) registrations. The function should return
+ * true if the active state of the registration has changed, or if the change to the
+ * registration may have changed the result of {@link #mergeRequests(List)}. If the function
+ * returns true for any registration, {@link #updateService()} will be invoked.
+ */
+ protected final void updateRegistrations(@NonNull Function<TRegistration, Boolean> function) {
+ synchronized (mRegistrations) {
+ boolean changed = false;
+ try (ReentrancyGuard ignored = mReentrancyGuard.acquire()) {
+ for (int i = 0; i < mRegistrations.size(); i++) {
+ changed |= function.apply(mRegistrations.valueAt(i));
+ }
+ }
+ if (changed) {
+ updateService();
+ }
+ }
+ }
+
+ /**
+ * Called in order to generate a merged request from all active requests. The list of
+ * registrations will never be empty.
+ */
+ @Nullable
+ protected TMergedRequest mergeRequests(@NonNull List<TRegistration> registrations) {
+ if (Build.IS_DEBUGGABLE) {
+ for (TRegistration registration : registrations) {
+ // if using non-null requests then implementations must override this method
+ Preconditions.checkState(registration.getRequest() == null);
+ }
+ }
+
+ return null;
+ }
+
+ /**
+ * Should be implemented to register the service with the given request, and should return true
+ * if registration succeeds.
+ */
+ protected abstract boolean registerService(@Nullable TMergedRequest mergedRequest);
+
+ /**
+ * Should be implemented to unregister the service.
+ */
+ protected abstract void unregisterService();
+
+ /**
+ * Invoked before the first registration occurs. This is a convenient entry point for
+ * registering listeners, etc, which only need to be present while there are any registrations.
+ * This method will always be invoked before a corresponding call to
+ * {@link Registration#onRegister()} and {@link #onActive()}.
+ */
+ protected void onRegister() {}
+
+ /**
+ * Invoked after the last unregistration occurs. This is a convenient entry point for
+ * unregistering listeners, etc, which only need to be present while there are any
+ * registrations. This method will always be after a corresponding call to
+ * {@link Registration#onUnregister()} and {@link #onInactive()}.
+ */
+ protected void onUnregister() {}
+
+ /**
+ * Invoked when the listener goes from having no active registrations to having some active
+ * registrations. This is a convenient entry point for registering listeners, etc, which only
+ * need to be present while there are active registrations. This method will always be invoked
+ * before a corresponding call to {@link #registerService(Object)}.
+ */
+ protected void onActive() {}
+
+ /**
+ * Invoked when the listener goes from having some active registrations to having no active
+ * registrations. This is a convenient entry point for unregistering listeners, etc, which only
+ * need to be present while there are active registrations. This method will always be invoked
+ * after a corresponding call to {@link #unregisterService()}.
+ */
+ protected void onInactive() {}
+
+ /**
+ * Invoked when a registration is added.
+ */
+ protected void onRegistrationAdded(@NonNull TKey key, @NonNull TRegistration registration) {}
+
+ /**
+ * Invoked when a registration is removed.
+ */
+ protected void onRegistrationRemoved(@NonNull TKey key, @NonNull TRegistration registration) {}
+
+ /**
+ * Executes the given delivery operation for all active listeners.
+ */
+ protected final void deliverToListeners(@NonNull Consumer<TListener> operation) {
+ deliverToListeners(operation, registration -> true);
+ }
+
+ /**
+ * Executes the given delivery operation for all active listeners which pass the given
+ * predicate.
+ */
+ protected final void deliverToListeners(@NonNull Consumer<TListener> operation,
+ @NonNull Predicate<TRegistration> deliveryPredicate) {
+ synchronized (mRegistrations) {
+ try (ReentrancyGuard ignored = mReentrancyGuard.acquire()) {
+ for (int i = 0; i < mRegistrations.size(); i++) {
+ TRegistration registration = mRegistrations.valueAt(i);
+ if (isActive(registration) && deliveryPredicate.test(registration)) {
+ registration.execute(operation);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Dumps debug information.
+ */
+ public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+
+ synchronized (mRegistrations) {
+ ipw.print("service: ");
+ ipw.println(serviceStateToString());
+
+ if (!mRegistrations.isEmpty()) {
+ ipw.println("listeners:");
+
+ ipw.increaseIndent();
+ for (int i = 0; i < mRegistrations.size(); i++) {
+ TRegistration registration = mRegistrations.valueAt(i);
+ ipw.print(registration);
+ if (!isActive(registration)) {
+ ipw.println(" (inactive)");
+ } else {
+ ipw.println();
+ }
+ }
+ ipw.decreaseIndent();
+ }
+ }
+ }
+
+ /**
+ * May be override to provide additional details on service state when dumping the manager
+ * state.
+ */
+ protected String serviceStateToString() {
+ if (mServiceRegistered) {
+ if (mCurrentRequest == null) {
+ return "registered";
+ } else {
+ return "registered with " + mCurrentRequest;
+ }
+ } else {
+ return "unregistered";
+ }
+ }
+
+ // this class does not have an idempotent close(), always use via try-with-resources
+ private static class ReentrancyGuard implements AutoCloseable {
+
+ private int mGuard = 0;
+
+ ReentrancyGuard() {
+ }
+
+ public boolean isReentrant() {
+ return mGuard != 0;
+ }
+
+ public ReentrancyGuard acquire() {
+ ++mGuard;
+ return this;
+ }
+
+ @Override
+ public void close() {
+ --mGuard;
+ }
+ }
+}
diff --git a/location/java/android/location/util/listeners/ClientListenerManager.java b/location/java/android/location/util/listeners/ClientListenerManager.java
new file mode 100644
index 0000000..35dd07b
--- /dev/null
+++ b/location/java/android/location/util/listeners/ClientListenerManager.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2020 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.location.util.listeners;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.location.util.listeners.AbstractListenerManager.Registration;
+
+import java.util.concurrent.Executor;
+
+/**
+ * A listener manager for client side implementations, where there is no need to deal with any
+ * complications other than muxing listeners. Listeners without associated requests are supported
+ * without any further work, and listeners with requests must produce muxed requests of the same
+ * type.
+ *
+ * @param <TRequest> request type
+ * @param <TListener> listener type
+ * @hide
+ */
+public abstract class ClientListenerManager<TRequest, TListener> extends
+ AbstractListenerManager<Object, TRequest, TListener, Registration<TRequest, TListener>,
+ TRequest> {
+
+ /**
+ * Adds a new listener with no request.
+ */
+ public void addListener(@NonNull TListener listener, @NonNull Executor executor) {
+ addListener(listener, null, listener, executor);
+ }
+
+ /**
+ * Adds a new listener with the given request.
+ */
+ public void addListener(@Nullable TRequest request, @NonNull TListener listener,
+ @NonNull Executor executor) {
+ addListener(listener, request, listener, executor);
+ }
+
+ /**
+ * Adds a new listener with the given request using a custom key, rather than using the listener
+ * as the key.
+ */
+ protected void addListener(@NonNull Object key, @Nullable TRequest request,
+ @NonNull TListener listener, @NonNull Executor executor) {
+ addRegistration(key, new Registration<>(request, executor, listener));
+ }
+
+ /**
+ * Removes the listener with the given key.
+ */
+ public void removeListener(@NonNull Object key) {
+ removeRegistration(key);
+ }
+}
diff --git a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
index 9846436..d5ae3bc 100644
--- a/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
+++ b/location/java/com/android/internal/location/GpsNetInitiatedHandler.java
@@ -252,10 +252,23 @@
* @return true if is considered in user initiated emergency mode for NI purposes
*/
public boolean getInEmergency() {
+ return getInEmergency(mEmergencyExtensionMillis);
+ }
+
+ /**
+ * Determines whether device is in user-initiated emergency session with the given extension
+ * time.
+ *
+ * @return true if is considered in user initiated emergency mode for NI purposes within the
+ * given extension time.
+ *
+ * @see {@link #getInEmergency()}
+ */
+ public boolean getInEmergency(long emergencyExtensionMillis) {
boolean isInEmergencyExtension =
(mCallEndElapsedRealtimeMillis > 0)
- && ((SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis)
- < mEmergencyExtensionMillis);
+ && ((SystemClock.elapsedRealtime() - mCallEndElapsedRealtimeMillis)
+ < emergencyExtensionMillis);
boolean isInEmergencyCallback = mTelephonyManager.getEmergencyCallbackMode();
boolean isInEmergencySmsMode = mTelephonyManager.isInEmergencySmsMode();
return mIsInEmergencyCall || isInEmergencyCallback || isInEmergencyExtension
diff --git a/location/java/com/android/internal/location/ILocationProviderManager.aidl b/location/java/com/android/internal/location/ILocationProviderManager.aidl
index 4390391..1bdedd5 100644
--- a/location/java/com/android/internal/location/ILocationProviderManager.aidl
+++ b/location/java/com/android/internal/location/ILocationProviderManager.aidl
@@ -26,7 +26,7 @@
*/
interface ILocationProviderManager {
- void onSetAdditionalProviderPackages(in List<String> packageNames);
+ void onSetFeatureId(String featureId);
@UnsupportedAppUsage
void onSetAllowed(boolean allowed);
diff --git a/location/java/com/android/internal/location/ProviderProperties.java b/location/java/com/android/internal/location/ProviderProperties.java
index 68f9ec3..c3439c5 100644
--- a/location/java/com/android/internal/location/ProviderProperties.java
+++ b/location/java/com/android/internal/location/ProviderProperties.java
@@ -25,11 +25,10 @@
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
/**
- * A Parcelable containing (legacy) location provider properties.
- * This object is just used inside the framework and system services.
- *
+ * Location provider properties.
* @hide
*/
public final class ProviderProperties implements Parcelable {
@@ -37,14 +36,12 @@
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef({Criteria.POWER_LOW, Criteria.POWER_MEDIUM, Criteria.POWER_HIGH})
- public @interface PowerRequirement {
- }
+ public @interface PowerRequirement {}
/** @hide */
@Retention(RetentionPolicy.SOURCE)
@IntDef({Criteria.ACCURACY_FINE, Criteria.ACCURACY_COARSE})
- public @interface Accuracy {
- }
+ public @interface Accuracy {}
/**
* True if provider requires access to a
@@ -132,19 +129,16 @@
new Parcelable.Creator<ProviderProperties>() {
@Override
public ProviderProperties createFromParcel(Parcel in) {
- boolean requiresNetwork = in.readInt() == 1;
- boolean requiresSatellite = in.readInt() == 1;
- boolean requiresCell = in.readInt() == 1;
- boolean hasMonetaryCost = in.readInt() == 1;
- boolean supportsAltitude = in.readInt() == 1;
- boolean supportsSpeed = in.readInt() == 1;
- boolean supportsBearing = in.readInt() == 1;
- int powerRequirement = in.readInt();
- int accuracy = in.readInt();
- return new ProviderProperties(requiresNetwork, requiresSatellite,
- requiresCell, hasMonetaryCost, supportsAltitude, supportsSpeed,
- supportsBearing,
- powerRequirement, accuracy);
+ return new ProviderProperties(
+ /* requiresNetwork= */ in.readBoolean(),
+ /* requiresSatellite= */ in.readBoolean(),
+ /* requiresCell= */ in.readBoolean(),
+ /* hasMonetaryCost= */ in.readBoolean(),
+ /* supportsAltitude= */ in.readBoolean(),
+ /* supportsSpeed= */ in.readBoolean(),
+ /* supportsBearing= */ in.readBoolean(),
+ /* powerRequirement= */ in.readInt(),
+ /* accuracy= */ in.readInt());
}
@Override
@@ -160,18 +154,44 @@
@Override
public void writeToParcel(Parcel parcel, int flags) {
- parcel.writeInt(mRequiresNetwork ? 1 : 0);
- parcel.writeInt(mRequiresSatellite ? 1 : 0);
- parcel.writeInt(mRequiresCell ? 1 : 0);
- parcel.writeInt(mHasMonetaryCost ? 1 : 0);
- parcel.writeInt(mSupportsAltitude ? 1 : 0);
- parcel.writeInt(mSupportsSpeed ? 1 : 0);
- parcel.writeInt(mSupportsBearing ? 1 : 0);
+ parcel.writeBoolean(mRequiresNetwork);
+ parcel.writeBoolean(mRequiresSatellite);
+ parcel.writeBoolean(mRequiresCell);
+ parcel.writeBoolean(mHasMonetaryCost);
+ parcel.writeBoolean(mSupportsAltitude);
+ parcel.writeBoolean(mSupportsSpeed);
+ parcel.writeBoolean(mSupportsBearing);
parcel.writeInt(mPowerRequirement);
parcel.writeInt(mAccuracy);
}
@Override
+ public boolean equals(Object o) {
+ if (this == o) {
+ return true;
+ }
+ if (!(o instanceof ProviderProperties)) {
+ return false;
+ }
+ ProviderProperties that = (ProviderProperties) o;
+ return mRequiresNetwork == that.mRequiresNetwork
+ && mRequiresSatellite == that.mRequiresSatellite
+ && mRequiresCell == that.mRequiresCell
+ && mHasMonetaryCost == that.mHasMonetaryCost
+ && mSupportsAltitude == that.mSupportsAltitude
+ && mSupportsSpeed == that.mSupportsSpeed
+ && mSupportsBearing == that.mSupportsBearing
+ && mPowerRequirement == that.mPowerRequirement
+ && mAccuracy == that.mAccuracy;
+ }
+
+ @Override
+ public int hashCode() {
+ return Objects.hash(mRequiresNetwork, mRequiresSatellite, mRequiresCell, mHasMonetaryCost,
+ mSupportsAltitude, mSupportsSpeed, mSupportsBearing, mPowerRequirement, mAccuracy);
+ }
+
+ @Override
public String toString() {
StringBuilder b = new StringBuilder("ProviderProperties[");
b.append("power=").append(powerToString(mPowerRequirement)).append(", ");
diff --git a/location/lib/api/current.txt b/location/lib/api/current.txt
index 9cc30d0..4d0acea 100644
--- a/location/lib/api/current.txt
+++ b/location/lib/api/current.txt
@@ -7,7 +7,8 @@
}
public abstract class LocationProviderBase {
- ctor public LocationProviderBase(String, com.android.location.provider.ProviderPropertiesUnbundled);
+ ctor @Deprecated public LocationProviderBase(String, com.android.location.provider.ProviderPropertiesUnbundled);
+ ctor @RequiresApi(android.os.Build.VERSION_CODES.R) public LocationProviderBase(android.content.Context, String, com.android.location.provider.ProviderPropertiesUnbundled);
method public android.os.IBinder getBinder();
method @RequiresApi(android.os.Build.VERSION_CODES.R) public boolean isAllowed();
method @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.Q) public boolean isEnabled();
@@ -20,11 +21,11 @@
method protected boolean onSendExtraCommand(@Nullable String, @Nullable android.os.Bundle);
method protected abstract void onSetRequest(com.android.location.provider.ProviderRequestUnbundled, android.os.WorkSource);
method public void reportLocation(android.location.Location);
- method @RequiresApi(android.os.Build.VERSION_CODES.Q) public void setAdditionalProviderPackages(java.util.List<java.lang.String>);
+ method @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.Q) public void setAdditionalProviderPackages(java.util.List<java.lang.String>);
method @RequiresApi(android.os.Build.VERSION_CODES.R) public void setAllowed(boolean);
method @Deprecated @RequiresApi(android.os.Build.VERSION_CODES.Q) public void setEnabled(boolean);
method @RequiresApi(android.os.Build.VERSION_CODES.Q) public void setProperties(com.android.location.provider.ProviderPropertiesUnbundled);
- field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
+ field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
field public static final String FUSED_PROVIDER = "fused";
}
diff --git a/location/lib/java/com/android/location/provider/GeocodeProvider.java b/location/lib/java/com/android/location/provider/GeocodeProvider.java
index f7f3d82..05d7935 100644
--- a/location/lib/java/com/android/location/provider/GeocodeProvider.java
+++ b/location/lib/java/com/android/location/provider/GeocodeProvider.java
@@ -16,12 +16,14 @@
package com.android.location.provider;
-import android.os.IBinder;
-
import android.location.Address;
import android.location.GeocoderParams;
+import android.location.IGeocodeListener;
import android.location.IGeocodeProvider;
+import android.os.IBinder;
+import android.os.RemoteException;
+import java.util.ArrayList;
import java.util.List;
/**
@@ -38,19 +40,32 @@
public abstract class GeocodeProvider {
private IGeocodeProvider.Stub mProvider = new IGeocodeProvider.Stub() {
- public String getFromLocation(double latitude, double longitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
- return GeocodeProvider.this.onGetFromLocation(latitude, longitude, maxResults,
- params, addrs);
+ @Override
+ public void getFromLocation(double latitude, double longitude, int maxResults,
+ GeocoderParams params, IGeocodeListener listener) {
+ List<Address> results = new ArrayList<>();
+ String error = onGetFromLocation(latitude, longitude, maxResults, params, results);
+ try {
+ listener.onResults(error, results);
+ } catch (RemoteException e) {
+ // ignore
+ }
}
- public String getFromLocationName(String locationName,
+ @Override
+ public void getFromLocationName(String locationName,
double lowerLeftLatitude, double lowerLeftLongitude,
double upperRightLatitude, double upperRightLongitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
- return GeocodeProvider.this.onGetFromLocationName(locationName, lowerLeftLatitude,
+ GeocoderParams params, IGeocodeListener listener) {
+ List<Address> results = new ArrayList<>();
+ String error = onGetFromLocationName(locationName, lowerLeftLatitude,
lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
- maxResults, params, addrs);
+ maxResults, params, results);
+ try {
+ listener.onResults(error, results);
+ } catch (RemoteException e) {
+ // ignore
+ }
}
};
diff --git a/location/lib/java/com/android/location/provider/LocationProviderBase.java b/location/lib/java/com/android/location/provider/LocationProviderBase.java
index d3fb58f..624e8d1 100644
--- a/location/lib/java/com/android/location/provider/LocationProviderBase.java
+++ b/location/lib/java/com/android/location/provider/LocationProviderBase.java
@@ -39,7 +39,6 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.List;
/**
@@ -65,7 +64,10 @@
* Bundle key for a version of the location containing no GPS data.
* Allows location providers to flag locations as being safe to
* feed to LocationFudger.
+ *
+ * @deprecated Do not use from Android R onwards.
*/
+ @Deprecated
public static final String EXTRA_NO_GPS_LOCATION = Location.EXTRA_NO_GPS_LOCATION;
/**
@@ -76,8 +78,9 @@
*/
public static final String FUSED_PROVIDER = LocationManager.FUSED_PROVIDER;
- private final String mTag;
- private final IBinder mBinder;
+ final String mTag;
+ final String mFeatureId;
+ final IBinder mBinder;
/**
* This field may be removed in the future, do not rely on it.
@@ -90,13 +93,30 @@
protected final ILocationManager mLocationManager;
// write locked on mBinder, read lock is optional depending on atomicity requirements
- @Nullable private volatile ILocationProviderManager mManager;
- private volatile ProviderProperties mProperties;
- private volatile boolean mAllowed;
- private final ArrayList<String> mAdditionalProviderPackages;
+ @Nullable
+ volatile ILocationProviderManager mManager;
+ volatile ProviderProperties mProperties;
+ volatile boolean mAllowed;
+ /**
+ * @deprecated Prefer
+ * {@link #LocationProviderBase(Context, String, ProviderPropertiesUnbundled)}.
+ */
+ @Deprecated
public LocationProviderBase(String tag, ProviderPropertiesUnbundled properties) {
+ this(null, tag, properties);
+ }
+
+ /**
+ * This constructor associates the feature id of the given context with this location provider.
+ * The location service may afford special privileges to incoming calls identified as belonging
+ * to this location provider.
+ */
+ @RequiresApi(VERSION_CODES.R)
+ public LocationProviderBase(Context context, String tag,
+ ProviderPropertiesUnbundled properties) {
mTag = tag;
+ mFeatureId = context != null ? context.getFeatureId() : null;
mBinder = new Service();
mLocationManager = ILocationManager.Stub.asInterface(
@@ -105,7 +125,6 @@
mManager = null;
mProperties = properties.getProviderProperties();
mAllowed = true;
- mAdditionalProviderPackages = new ArrayList<>(0);
}
public IBinder getBinder() {
@@ -183,23 +202,12 @@
* another package may issue location requests on behalf of this package in the course of
* providing location. This will inform location services to treat the other packages as
* location providers as well.
+ *
+ * @deprecated On Android R and above this has no effect.
*/
+ @Deprecated
@RequiresApi(VERSION_CODES.Q)
- public void setAdditionalProviderPackages(List<String> packageNames) {
- synchronized (mBinder) {
- mAdditionalProviderPackages.clear();
- mAdditionalProviderPackages.addAll(packageNames);
- }
-
- ILocationProviderManager manager = mManager;
- if (manager != null) {
- try {
- manager.onSetAdditionalProviderPackages(mAdditionalProviderPackages);
- } catch (RemoteException | RuntimeException e) {
- Log.w(mTag, e);
- }
- }
- }
+ public void setAdditionalProviderPackages(List<String> packageNames) {}
/**
* @deprecated Use {@link #isAllowed()} instead.
@@ -317,12 +325,15 @@
private final class Service extends ILocationProvider.Stub {
+ Service() {
+ }
+
@Override
public void setLocationProviderManager(ILocationProviderManager manager) {
synchronized (mBinder) {
try {
- if (!mAdditionalProviderPackages.isEmpty()) {
- manager.onSetAdditionalProviderPackages(mAdditionalProviderPackages);
+ if (mFeatureId != null) {
+ manager.onSetFeatureId(mFeatureId);
}
manager.onSetProperties(mProperties);
manager.onSetAllowed(mAllowed);
diff --git a/location/tests/Android.bp b/location/tests/Android.bp
deleted file mode 100644
index 8b13789..0000000
--- a/location/tests/Android.bp
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/location/tests/locationtests/Android.bp b/location/tests/locationtests/Android.bp
deleted file mode 100644
index 1a4e2c7..0000000
--- a/location/tests/locationtests/Android.bp
+++ /dev/null
@@ -1,19 +0,0 @@
-android_test {
- name: "FrameworksLocationTests",
- // Include all test java files.
- srcs: ["src/**/*.java"],
- libs: [
- "android.test.runner",
- "android.test.base",
- ],
- platform_apis: true,
- static_libs: [
- "androidx.test.rules",
- "core-test-rules",
- "guava",
- "mockito-target-minus-junit4",
- "frameworks-base-testutils",
- "truth-prebuilt",
- ],
- test_suites: ["device-tests"],
-}
diff --git a/location/tests/locationtests/AndroidManifest.xml b/location/tests/locationtests/AndroidManifest.xml
deleted file mode 100644
index 5010d3d..0000000
--- a/location/tests/locationtests/AndroidManifest.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.android.frameworks.locationtests">
-
- <!-- location test permissions -->
- <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
- <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>
- <uses-permission android:name="android.permission.WRITE_SETTINGS"/>
- <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS"/>
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
-
- <application>
- <uses-library android:name="android.test.runner" />
- </application>
-
- <instrumentation
- android:name="androidx.test.runner.AndroidJUnitRunner"
- android:targetPackage="com.android.frameworks.locationtests"
- android:label="Frameworks Location Tests" />
-</manifest>
diff --git a/location/tests/locationtests/AndroidTest.xml b/location/tests/locationtests/AndroidTest.xml
deleted file mode 100644
index 7bddb58..0000000
--- a/location/tests/locationtests/AndroidTest.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2017 The Android Open Source Project
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
--->
-<configuration description="Runs Frameworks Location API Tests.">
- <target_preparer class="com.android.tradefed.targetprep.TestAppInstallSetup">
- <option name="test-file-name" value="FrameworksLocationTests.apk" />
- </target_preparer>
-
- <option name="test-suite-tag" value="apct" />
- <option name="test-tag" value="FrameworksLocationTests" />
- <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
- <option name="package" value="com.android.frameworks.locationtests" />
- <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
- <option name="hidden-api-checks" value="false"/>
- </test>
-</configuration>
diff --git a/location/tests/locationtests/src/android/location/CountryTester.java b/location/tests/locationtests/src/android/location/CountryTester.java
deleted file mode 100644
index 9802d5a..0000000
--- a/location/tests/locationtests/src/android/location/CountryTester.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2010 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.location;
-
-import android.test.AndroidTestCase;
-
-public class CountryTester extends AndroidTestCase {
- public void testCountryEquals() {
- Country countryA = new Country("US", Country.COUNTRY_SOURCE_NETWORK);
- Country countryB = new Country("US", Country.COUNTRY_SOURCE_LOCALE);
- Country countryC = new Country("CN", Country.COUNTRY_SOURCE_LOCALE);
- Country countryD = new Country("us", Country.COUNTRY_SOURCE_NETWORK);
- assertTrue(countryA.equalsIgnoreSource(countryB));
- assertFalse(countryA.equalsIgnoreSource(countryC));
- assertFalse(countryA.equals(countryC));
- assertTrue(countryA.equals(countryD));
- assertTrue(countryA.hashCode() == countryD.hashCode());
- }
-}
diff --git a/location/tests/locationtests/src/android/location/GeocoderTest.java b/location/tests/locationtests/src/android/location/GeocoderTest.java
deleted file mode 100644
index 8a13a24..0000000
--- a/location/tests/locationtests/src/android/location/GeocoderTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package android.location;
-
-/*
- * Copyright (C) 2007 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * 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.
- */
-
-import android.location.Address;
-import android.location.Geocoder;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
-
-import java.io.IOException;
-import java.util.HashSet;
-import java.util.Locale;
-import java.util.Set;
-import java.util.List;
-
-@Suppress
-public class GeocoderTest extends AndroidTestCase {
-
- public void testGeocoder() throws Exception {
- Locale locale = new Locale("en", "us");
- Geocoder g = new Geocoder(mContext, locale);
-
- List<Address> addresses1 = g.getFromLocation(37.435067, -122.166767, 2);
- assertNotNull(addresses1);
- assertEquals(1, addresses1.size());
-
- Address addr = addresses1.get(0);
- assertEquals("94305", addr.getFeatureName());
- assertEquals("Palo Alto, CA 94305", addr.getAddressLine(0));
- assertEquals("USA", addr.getAddressLine(1));
- assertEquals("94305", addr.getPostalCode());
- assertFalse(Math.abs(addr.getLatitude() - 37.4240385) > 0.1);
-
- List<Address> addresses2 = g.getFromLocationName("San Francisco, CA", 1);
- assertNotNull(addresses2);
- assertEquals(1, addresses2.size());
-
- addr = addresses2.get(0);
- assertEquals("San Francisco", addr.getFeatureName());
- assertEquals("San Francisco, CA", addr.getAddressLine(0));
- assertEquals("United States", addr.getAddressLine(1));
- assertEquals("San Francisco", addr.getLocality());
- assertEquals("CA", addr.getAdminArea());
- assertEquals(null, addr.getPostalCode());
-
- assertFalse(Math.abs(addr.getLatitude() - 37.77916) > 0.1);
-
- }
-}
diff --git a/location/tests/locationtests/src/android/location/LocationManagerTest.java b/location/tests/locationtests/src/android/location/LocationManagerTest.java
deleted file mode 100644
index 0b8e61d..0000000
--- a/location/tests/locationtests/src/android/location/LocationManagerTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2006 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.location;
-
-import android.content.Context;
-import android.location.Criteria;
-import android.location.Location;
-import android.location.LocationManager;
-import android.location.LocationProvider;
-import android.test.AndroidTestCase;
-import android.test.suitebuilder.annotation.Suppress;
-import android.util.Log;
-
-@Suppress
-public class LocationManagerTest extends AndroidTestCase {
- private static final String LOG_TAG = "LocationManagerTest";
-
- private LocationManager manager;
-
- @Override
- public void setUp() throws Exception {
- super.setUp();
- manager = (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
- assertNotNull(manager);
- }
-
- public void testGetBogusProvider() {
- LocationProvider p = manager.getProvider("bogus");
- assertNull(p);
- }
-
- public void testGetNetworkProvider() {
- LocationProvider p = manager.getProvider("network");
- assertNotNull(p);
- }
-
- public void testGetGpsProvider() {
- LocationProvider p = manager.getProvider("gps");
- assertNotNull(p);
- }
-
- public void testGetBestProviderEmptyCriteria() {
- String p = manager.getBestProvider(new Criteria(), true);
- assertNotNull(p);
- }
-
- public void testGetBestProviderPowerCriteria() {
- Criteria c = new Criteria();
- c.setPowerRequirement(Criteria.POWER_HIGH);
- String p = manager.getBestProvider(c, true);
- assertNotNull(p);
-
- c.setPowerRequirement(Criteria.POWER_MEDIUM);
- p = manager.getBestProvider(c, true);
- assertNotNull(p);
-
- c.setPowerRequirement(Criteria.POWER_LOW);
- p = manager.getBestProvider(c, true);
- assertNotNull(p);
-
- c.setPowerRequirement(Criteria.NO_REQUIREMENT);
- p = manager.getBestProvider(c, true);
- assertNotNull(p);
- }
-
- public void testGpsTracklog() {
- LocationProvider p = manager.getProvider("gps");
- assertNotNull(p);
-
- // TODO: test requestUpdates method
- }
-
- public void testLocationConversions() {
- String loc1 = Location.convert(-80.075, Location.FORMAT_DEGREES);
- Log.i(LOG_TAG, "Input = " + (-80.075) + ", output = " + loc1);
- assertEquals("-80.075", loc1);
-
- String loc1b = Location.convert(-80.0, Location.FORMAT_DEGREES);
- Log.i(LOG_TAG, "Input = " + (-80.0) + ", output = " + loc1b);
- assertEquals("-80", loc1b);
-
- String loc2 = Location.convert(-80.085, Location.FORMAT_DEGREES);
- Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc2);
- assertEquals("-80.085", loc2);
-
- String loc3 = Location.convert(-80.085, Location.FORMAT_MINUTES);
- Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc3);
- assertEquals("-80:5.1", loc3);
-
- String loc4 = Location.convert(-80.085, Location.FORMAT_SECONDS);
- Log.i(LOG_TAG, "Input = " + (-80.085) + ", output = " + loc4);
- assertEquals("-80:5:6", loc4);
-
- String loc5 = Location.convert(5 + 0.5f / 60.0f, Location.FORMAT_MINUTES);
- Log.i(LOG_TAG, "Input = 5:0.5, output = " + loc5);
- int index = loc5.indexOf(':');
- String loc5a = loc5.substring(0, index);
- Log.i(LOG_TAG, "loc5a = " + loc5a);
- assertTrue(loc5a.equals("5"));
- String loc5b = loc5.substring(index + 1);
- Log.i(LOG_TAG, "loc5b = " + loc5b);
- double minutes = Double.parseDouble(loc5b);
- Log.i(LOG_TAG, "minutes = " + minutes);
- assertTrue(Math.abs(minutes - 0.5) < 0.0001);
-
- String loc6 = Location.convert(0.1, Location.FORMAT_DEGREES);
- Log.i(LOG_TAG, "loc6 = " + loc6);
- assertEquals(loc6, "0.1");
-
- String loc7 = Location.convert(0.1, Location.FORMAT_MINUTES);
- Log.i(LOG_TAG, "loc7 = " + loc7);
- assertEquals(loc7, "0:6");
-
- String loc8 = Location.convert(0.1, Location.FORMAT_SECONDS);
- Log.i(LOG_TAG, "loc8 = " + loc8);
- assertEquals(loc8, "0:6:0");
- }
-}
diff --git a/location/tests/locationtests/src/android/location/LocationTest.java b/location/tests/locationtests/src/android/location/LocationTest.java
deleted file mode 100644
index dc8d0f7..0000000
--- a/location/tests/locationtests/src/android/location/LocationTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-/*
- * Copyright (C) 2007 Google Inc.
- *
- * 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.location;
-
-import android.os.Parcel;
-import android.test.suitebuilder.annotation.SmallTest;
-
-import junit.framework.TestCase;
-
-/**
- * Unit tests for android.location.Location
- */
-@SmallTest
-public class LocationTest extends TestCase {
-
- // ***** Tests for Location.convert
- public void testConvert_DegreesToDouble(){
- String testDegreesCoord = "-80.075";
- String message;
- double result;
-
- result = Location.convert(testDegreesCoord);
- message = "degreesToDoubleTest: Double should be -80.075, actual value is " +
- String.valueOf(result);
- assertEquals(message, -80.075, result);
- }
-
- public void testConvert_MinutesToDouble(){
- String testMinutesCoord = "-80:05.10000";
- String message;
- double result;
-
- result = Location.convert(testMinutesCoord);
- message = "minutesToDoubleTest: Double should be -80.085, actual value is " +
- String.valueOf(result);
- assertEquals(message, -80.085, result);
- }
-
- public void testConvert_SecondsToDouble(){
- String testSecondsCoord = "-80:04:03.00000";
- String message;
- double result;
-
- result = Location.convert(testSecondsCoord);
- message = "secondsToDoubleTest: Double should be -80.0675, actual value is " +
- String.valueOf(result);
- assertEquals(message, -80.0675, result);
- }
-
- public void testConvert_SecondsToDouble2(){
- String testSecondsCoord = "-80:4:3";
- String message;
- double result;
-
- result = Location.convert(testSecondsCoord);
- message = "secondsToDouble2Test: Double should be -80.0675, actual value is " +
- String.valueOf(result);
- assertEquals(message, -80.0675, result);
- }
-
- // Testing the Convert(Double, Int)
- public void testConvert_CoordinateToDegrees(){
- String message;
- String result;
-
- result = Location.convert(-80.075, Location.FORMAT_DEGREES);
- message = "coordinateToDegreesTest: Should return a string -80.075, but returned " + result;
- assertEquals(message, "-80.075", result);
- }
-
- public void testConvert_CoordinateToDegrees2(){
- String message;
- String result;
- result = Location.convert(-80.0, Location.FORMAT_DEGREES);
- message = "coordinateToDegrees2Test: Should return a string -80, but returned " + result;
- assertEquals(message, "-80", result);
- }
-
- public void testConvert_CoordinateToMinutes(){
- String message;
- String result;
- double input = -80.085;
- result = Location.convert(input, Location.FORMAT_MINUTES);
- message = "coordinateToMinuteTest: Should return a string -80:5.1, but returned " +
- result;
- assertEquals(message, "-80:5.1", result);
- }
-
- public void testConvert_CoordinateToMinutes2(){
- String message;
- String result;
- double input = -80;
- result = Location.convert(input, Location.FORMAT_MINUTES);
- message = "coordinateToMinute2Test: Should return a string -80:0, but returned " +
- result;
- assertEquals(message, "-80:0", result);
- }
-
- public void testConvert_CoordinateToSeconds(){
- String message;
- String result;
-
- result = Location.convert(-80.075, Location.FORMAT_SECONDS);
- message = "coordinateToSecondsTest: Should return a string -80:4:30, but returned " +
- result;
- assertEquals(message, "-80:4:30", result);
- }
- // **** end tests for Location.convert
-
-
- public void testBearingTo(){
- String message;
- float bearing;
- Location zeroLocation = new Location("");
- zeroLocation.setLatitude(0);
- zeroLocation.setLongitude(0);
-
- Location testLocation = new Location("");
- testLocation.setLatitude(1000000);
- testLocation.setLongitude(0);
-
- bearing = zeroLocation.bearingTo(zeroLocation);
- message = "bearingToTest: Bearing should be 0, actual value is " + String.valueOf(bearing);
- assertEquals(message, 0, bearing, 0);
-
- bearing = zeroLocation.bearingTo(testLocation);
- message = "bearingToTest: Bearing should be 180, actual value is " +
- String.valueOf(bearing);
- assertEquals(message, 180, bearing, 0);
-
- testLocation.setLatitude(0);
- testLocation.setLongitude(1000000);
- bearing = zeroLocation.bearingTo(testLocation);
- message = "bearingToTest: Bearing should be -90, actual value is " +
- String.valueOf(bearing);
- assertEquals(message, -90, bearing, 0);
-
- //TODO: Test a Random Middle Value
- }
-
- public void testDistanceTo() {
- String message;
- boolean result = true;
- float distance;
- Location zeroLocation = new Location("");
- zeroLocation.setLatitude(0);
- zeroLocation.setLongitude(0);
-
- Location testLocation = new Location("");
- testLocation.setLatitude(1000000);
- testLocation.setLongitude(0);
-
- distance = zeroLocation.distanceTo(zeroLocation);
- message = "distanceToTest: Distance should be 0, actual value is " +
- String.valueOf(distance);
- assertEquals(message, distance, 0, 0);
-
- distance = zeroLocation.distanceTo(testLocation);
- message = "distanceToTest: Distance should be 8885140, actual value is " +
- String.valueOf(distance);
- assertEquals(message, distance, 8885140.0, 1);
- }
-
- public void testAltitude() {
- String message;
- Location loc = new Location("");
-
- loc.setAltitude(1);
- message = "altitudeTest: set/getAltitude to 1 didn't work.";
- assertEquals(message, loc.getAltitude(), 1, 0);
- message = "altitudeTest: hasAltitude (a) didn't work.";
- assertTrue(message, loc.hasAltitude());
-
- loc.removeAltitude();
- message = "altitudeTest: hasAltitude (b) didn't work.";
- assertFalse(message, loc.hasAltitude());
- message = "altitudeTest: getAltitude didn't return 0 when there was no altitude.";
- assertEquals(message, loc.getAltitude(), 0, 0);
- }
-
- public void testSpeed() {
- String message;
- Location loc = new Location("");
-
- loc.setSpeed(1);
- message = "speedTest: set/getSpeed to 1 didn't work.";
- assertEquals(message, loc.getSpeed(), 1, 0);
- message = "speedTest: hasSpeed (a) didn't work.";
- assertTrue(message, loc.hasSpeed());
-
- loc.removeSpeed();
- message = "speedTest: hasSpeed (b) didn't work.";
- assertFalse(message, loc.hasSpeed());
- message = "speedTest: getSpeed didn't return 0 when there was no speed.";
- assertEquals(message, loc.getSpeed(), 0, 0);
- }
-
- public void testBearing() {
- String message;
- Location loc = new Location("");
-
- loc.setBearing(1);
- message = "bearingTest: set/getBearing to 1 didn't work.";
- assertEquals(message, loc.getBearing(), 1, 0);
- message = "bearingTest: hasBearing (a) didn't work.";
- assertTrue(message, loc.hasBearing());
-
- loc.removeBearing();
- message = "bearingTest: hasBearing (b) didn't work.";
- assertFalse(message, loc.hasBearing());
- message = "bearingTest: getBearing didn't return 0 when there was no bearing.";
- assertEquals(message, loc.getBearing(), 0, 0);
- }
-
- public void testParcel() {
- final double expectedLat = 33;
- final double expectedLon = -122;
- final float expectedAccuracy = 15;
- final float expectedSpeed = 5;
- Location loc = new Location("test");
- loc.setLatitude(expectedLat);
- loc.setLongitude(expectedLon);
- loc.setAccuracy(expectedAccuracy);
- loc.setSpeed(expectedSpeed);
-
- // Serialize location object into bytes via parcelable capability
- Parcel parcel = Parcel.obtain();
- loc.writeToParcel(parcel, 0);
- byte[] rawBytes = parcel.marshall();
- parcel.recycle();
-
- // Turn the bytes back into a location object
- parcel = Parcel.obtain();
- parcel.unmarshall(rawBytes, 0, rawBytes.length);
- parcel.setDataPosition(0);
- Location deserialized = Location.CREATOR.createFromParcel(parcel);
- parcel.recycle();
-
- assertEquals(expectedLat, deserialized.getLatitude());
- assertEquals(expectedLon, deserialized.getLongitude());
- assertEquals(expectedAccuracy, deserialized.getAccuracy());
- assertTrue(deserialized.hasAccuracy());
- assertEquals(expectedSpeed, deserialized.getSpeed());
- assertTrue(deserialized.hasSpeed());
- assertFalse(deserialized.hasBearing());
- assertFalse(deserialized.hasAltitude());
- assertFalse(deserialized.isFromMockProvider());
- }
-}
-
-
diff --git a/lowpan/tests/AndroidManifest.xml b/lowpan/tests/AndroidManifest.xml
index 4225613..8e68fc7 100644
--- a/lowpan/tests/AndroidManifest.xml
+++ b/lowpan/tests/AndroidManifest.xml
@@ -22,7 +22,8 @@
<application>
<uses-library android:name="android.test.runner" />
<activity android:label="LowpanTestDummyLabel"
- android:name="LowpanTestDummyName">
+ android:name="LowpanTestDummyName"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER"/>
diff --git a/media/native/midi/include/Doxyfile.orig b/media/native/midi/include/Doxyfile.orig
deleted file mode 100644
index e56fb18..0000000
--- a/media/native/midi/include/Doxyfile.orig
+++ /dev/null
@@ -1,2494 +0,0 @@
-# Doxyfile 1.8.13
-
-# This file describes the settings to be used by the documentation system
-# doxygen (www.doxygen.org) for a project.
-#
-# All text after a double hash (##) is considered a comment and is placed in
-# front of the TAG it is preceding.
-#
-# All text after a single hash (#) is considered a comment and will be ignored.
-# The format is:
-# TAG = value [value, ...]
-# For lists, items can also be appended using:
-# TAG += value [value, ...]
-# Values that contain spaces should be placed between quotes (\" \").
-
-#---------------------------------------------------------------------------
-# Project related configuration options
-#---------------------------------------------------------------------------
-
-# This tag specifies the encoding used for all characters in the config file
-# that follow. The default is UTF-8 which is also the encoding used for all text
-# before the first occurrence of this tag. Doxygen uses libiconv (or the iconv
-# built into libc) for the transcoding. See http://www.gnu.org/software/libiconv
-# for the list of possible encodings.
-# The default value is: UTF-8.
-
-DOXYFILE_ENCODING = UTF-8
-
-# The PROJECT_NAME tag is a single word (or a sequence of words surrounded by
-# double-quotes, unless you are using Doxywizard) that should identify the
-# project for which the documentation is generated. This name is used in the
-# title of most generated pages and in a few other places.
-# The default value is: My Project.
-
-PROJECT_NAME = "My Project"
-
-# The PROJECT_NUMBER tag can be used to enter a project or revision number. This
-# could be handy for archiving the generated documentation or if some version
-# control system is used.
-
-PROJECT_NUMBER =
-
-# Using the PROJECT_BRIEF tag one can provide an optional one line description
-# for a project that appears at the top of each page and should give viewer a
-# quick idea about the purpose of the project. Keep the description short.
-
-PROJECT_BRIEF =
-
-# With the PROJECT_LOGO tag one can specify a logo or an icon that is included
-# in the documentation. The maximum height of the logo should not exceed 55
-# pixels and the maximum width should not exceed 200 pixels. Doxygen will copy
-# the logo to the output directory.
-
-PROJECT_LOGO =
-
-# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path
-# into which the generated documentation will be written. If a relative path is
-# entered, it will be relative to the location where doxygen was started. If
-# left blank the current directory will be used.
-
-OUTPUT_DIRECTORY =
-
-# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub-
-# directories (in 2 levels) under the output directory of each output format and
-# will distribute the generated files over these directories. Enabling this
-# option can be useful when feeding doxygen a huge amount of source files, where
-# putting all generated files in the same directory would otherwise causes
-# performance problems for the file system.
-# The default value is: NO.
-
-CREATE_SUBDIRS = NO
-
-# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII
-# characters to appear in the names of generated files. If set to NO, non-ASCII
-# characters will be escaped, for example _xE3_x81_x84 will be used for Unicode
-# U+3044.
-# The default value is: NO.
-
-ALLOW_UNICODE_NAMES = NO
-
-# The OUTPUT_LANGUAGE tag is used to specify the language in which all
-# documentation generated by doxygen is written. Doxygen will use this
-# information to generate all constant output in the proper language.
-# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese,
-# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States),
-# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian,
-# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages),
-# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian,
-# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian,
-# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish,
-# Ukrainian and Vietnamese.
-# The default value is: English.
-
-OUTPUT_LANGUAGE = English
-
-# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member
-# descriptions after the members that are listed in the file and class
-# documentation (similar to Javadoc). Set to NO to disable this.
-# The default value is: YES.
-
-BRIEF_MEMBER_DESC = YES
-
-# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief
-# description of a member or function before the detailed description
-#
-# Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
-# The default value is: YES.
-
-REPEAT_BRIEF = YES
-
-# This tag implements a quasi-intelligent brief description abbreviator that is
-# used to form the text in various listings. Each string in this list, if found
-# as the leading text of the brief description, will be stripped from the text
-# and the result, after processing the whole list, is used as the annotated
-# text. Otherwise, the brief description is used as-is. If left blank, the
-# following values are used ($name is automatically replaced with the name of
-# the entity):The $name class, The $name widget, The $name file, is, provides,
-# specifies, contains, represents, a, an and the.
-
-ABBREVIATE_BRIEF = "The $name class" \
- "The $name widget" \
- "The $name file" \
- is \
- provides \
- specifies \
- contains \
- represents \
- a \
- an \
- the
-
-# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
-# doxygen will generate a detailed section even if there is only a brief
-# description.
-# The default value is: NO.
-
-ALWAYS_DETAILED_SEC = NO
-
-# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
-# inherited members of a class in the documentation of that class as if those
-# members were ordinary class members. Constructors, destructors and assignment
-# operators of the base classes will not be shown.
-# The default value is: NO.
-
-INLINE_INHERITED_MEMB = NO
-
-# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path
-# before files name in the file list and in the header files. If set to NO the
-# shortest path that makes the file name unique will be used
-# The default value is: YES.
-
-FULL_PATH_NAMES = YES
-
-# The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path.
-# Stripping is only done if one of the specified strings matches the left-hand
-# part of the path. The tag can be used to show relative paths in the file list.
-# If left blank the directory from which doxygen is run is used as the path to
-# strip.
-#
-# Note that you can specify absolute paths here, but also relative paths, which
-# will be relative from the directory where doxygen is started.
-# This tag requires that the tag FULL_PATH_NAMES is set to YES.
-
-STRIP_FROM_PATH =
-
-# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of the
-# path mentioned in the documentation of a class, which tells the reader which
-# header file to include in order to use a class. If left blank only the name of
-# the header file containing the class definition is used. Otherwise one should
-# specify the list of include paths that are normally passed to the compiler
-# using the -I flag.
-
-STRIP_FROM_INC_PATH =
-
-# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but
-# less readable) file names. This can be useful is your file systems doesn't
-# support long names like on DOS, Mac, or CD-ROM.
-# The default value is: NO.
-
-SHORT_NAMES = NO
-
-# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the
-# first line (until the first dot) of a Javadoc-style comment as the brief
-# description. If set to NO, the Javadoc-style will behave just like regular Qt-
-# style comments (thus requiring an explicit @brief command for a brief
-# description.)
-# The default value is: NO.
-
-JAVADOC_AUTOBRIEF = NO
-
-# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first
-# line (until the first dot) of a Qt-style comment as the brief description. If
-# set to NO, the Qt-style will behave just like regular Qt-style comments (thus
-# requiring an explicit \brief command for a brief description.)
-# The default value is: NO.
-
-QT_AUTOBRIEF = NO
-
-# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a
-# multi-line C++ special comment block (i.e. a block of //! or /// comments) as
-# a brief description. This used to be the default behavior. The new default is
-# to treat a multi-line C++ comment block as a detailed description. Set this
-# tag to YES if you prefer the old behavior instead.
-#
-# Note that setting this tag to YES also means that rational rose comments are
-# not recognized any more.
-# The default value is: NO.
-
-MULTILINE_CPP_IS_BRIEF = NO
-
-# If the INHERIT_DOCS tag is set to YES then an undocumented member inherits the
-# documentation from any documented member that it re-implements.
-# The default value is: YES.
-
-INHERIT_DOCS = YES
-
-# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new
-# page for each member. If set to NO, the documentation of a member will be part
-# of the file/class/namespace that contains it.
-# The default value is: NO.
-
-SEPARATE_MEMBER_PAGES = NO
-
-# The TAB_SIZE tag can be used to set the number of spaces in a tab. Doxygen
-# uses this value to replace tabs by spaces in code fragments.
-# Minimum value: 1, maximum value: 16, default value: 4.
-
-TAB_SIZE = 4
-
-# This tag can be used to specify a number of aliases that act as commands in
-# the documentation. An alias has the form:
-# name=value
-# For example adding
-# "sideeffect=@par Side Effects:\n"
-# will allow you to put the command \sideeffect (or @sideeffect) in the
-# documentation, which will result in a user-defined paragraph with heading
-# "Side Effects:". You can put \n's in the value part of an alias to insert
-# newlines.
-
-ALIASES =
-
-# This tag can be used to specify a number of word-keyword mappings (TCL only).
-# A mapping has the form "name=value". For example adding "class=itcl::class"
-# will allow you to use the command class in the itcl::class meaning.
-
-TCL_SUBST =
-
-# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C sources
-# only. Doxygen will then generate output that is more tailored for C. For
-# instance, some of the names that are used will be different. The list of all
-# members will be omitted, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_FOR_C = NO
-
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java or
-# Python sources only. Doxygen will then generate output that is more tailored
-# for that language. For instance, namespaces will be presented as packages,
-# qualified scopes will look different, etc.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_JAVA = NO
-
-# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
-# sources. Doxygen will then generate output that is tailored for Fortran.
-# The default value is: NO.
-
-OPTIMIZE_FOR_FORTRAN = NO
-
-# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
-# sources. Doxygen will then generate output that is tailored for VHDL.
-# The default value is: NO.
-
-OPTIMIZE_OUTPUT_VHDL = NO
-
-# Doxygen selects the parser to use depending on the extension of the files it
-# parses. With this tag you can assign which parser to use for a given
-# extension. Doxygen has a built-in mapping, but you can override or extend it
-# using this tag. The format is ext=language, where ext is a file extension, and
-# language is one of the parsers supported by doxygen: IDL, Java, Javascript,
-# C#, C, C++, D, PHP, Objective-C, Python, Fortran (fixed format Fortran:
-# FortranFixed, free formatted Fortran: FortranFree, unknown formatted Fortran:
-# Fortran. In the later case the parser tries to guess whether the code is fixed
-# or free formatted code, this is the default for Fortran type files), VHDL. For
-# instance to make doxygen treat .inc files as Fortran files (default is PHP),
-# and .f files as C (default is Fortran), use: inc=Fortran f=C.
-#
-# Note: For files without extension you can use no_extension as a placeholder.
-#
-# Note that for custom extensions you also need to set FILE_PATTERNS otherwise
-# the files are not read by doxygen.
-
-EXTENSION_MAPPING =
-
-# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments
-# according to the Markdown format, which allows for more readable
-# documentation. See http://daringfireball.net/projects/markdown/ for details.
-# The output of markdown processing is further processed by doxygen, so you can
-# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in
-# case of backward compatibilities issues.
-# The default value is: YES.
-
-MARKDOWN_SUPPORT = YES
-
-# When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up
-# to that level are automatically included in the table of contents, even if
-# they do not have an id attribute.
-# Note: This feature currently applies only to Markdown headings.
-# Minimum value: 0, maximum value: 99, default value: 0.
-# This tag requires that the tag MARKDOWN_SUPPORT is set to YES.
-
-TOC_INCLUDE_HEADINGS = 0
-
-# When enabled doxygen tries to link words that correspond to documented
-# classes, or namespaces to their corresponding documentation. Such a link can
-# be prevented in individual cases by putting a % sign in front of the word or
-# globally by setting AUTOLINK_SUPPORT to NO.
-# The default value is: YES.
-
-AUTOLINK_SUPPORT = YES
-
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
-# to include (a tag file for) the STL sources as input, then you should set this
-# tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string);
-# versus func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
-# The default value is: NO.
-
-BUILTIN_STL_SUPPORT = NO
-
-# If you use Microsoft's C++/CLI language, you should set this option to YES to
-# enable parsing support.
-# The default value is: NO.
-
-CPP_CLI_SUPPORT = NO
-
-# Set the SIP_SUPPORT tag to YES if your project consists of sip (see:
-# http://www.riverbankcomputing.co.uk/software/sip/intro) sources only. Doxygen
-# will parse them like normal C++ but will assume all classes use public instead
-# of private inheritance when no explicit protection keyword is present.
-# The default value is: NO.
-
-SIP_SUPPORT = NO
-
-# For Microsoft's IDL there are propget and propput attributes to indicate
-# getter and setter methods for a property. Setting this option to YES will make
-# doxygen to replace the get and set methods by a property in the documentation.
-# This will only work if the methods are indeed getting or setting a simple
-# type. If this is not the case, or you want to show the methods anyway, you
-# should set this option to NO.
-# The default value is: YES.
-
-IDL_PROPERTY_SUPPORT = YES
-
-# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
-# tag is set to YES then doxygen will reuse the documentation of the first
-# member in the group (if any) for the other members of the group. By default
-# all members of a group must be documented explicitly.
-# The default value is: NO.
-
-DISTRIBUTE_GROUP_DOC = NO
-
-# If one adds a struct or class to a group and this option is enabled, then also
-# any nested class or struct is added to the same group. By default this option
-# is disabled and one has to add nested compounds explicitly via \ingroup.
-# The default value is: NO.
-
-GROUP_NESTED_COMPOUNDS = NO
-
-# Set the SUBGROUPING tag to YES to allow class member groups of the same type
-# (for instance a group of public functions) to be put as a subgroup of that
-# type (e.g. under the Public Functions section). Set it to NO to prevent
-# subgrouping. Alternatively, this can be done per class using the
-# \nosubgrouping command.
-# The default value is: YES.
-
-SUBGROUPING = YES
-
-# When the INLINE_GROUPED_CLASSES tag is set to YES, classes, structs and unions
-# are shown inside the group in which they are included (e.g. using \ingroup)
-# instead of on a separate page (for HTML and Man pages) or section (for LaTeX
-# and RTF).
-#
-# Note that this feature does not work in combination with
-# SEPARATE_MEMBER_PAGES.
-# The default value is: NO.
-
-INLINE_GROUPED_CLASSES = NO
-
-# When the INLINE_SIMPLE_STRUCTS tag is set to YES, structs, classes, and unions
-# with only public data fields or simple typedef fields will be shown inline in
-# the documentation of the scope in which they are defined (i.e. file,
-# namespace, or group documentation), provided this scope is documented. If set
-# to NO, structs, classes, and unions are shown on a separate page (for HTML and
-# Man pages) or section (for LaTeX and RTF).
-# The default value is: NO.
-
-INLINE_SIMPLE_STRUCTS = NO
-
-# When TYPEDEF_HIDES_STRUCT tag is enabled, a typedef of a struct, union, or
-# enum is documented as struct, union, or enum with the name of the typedef. So
-# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
-# with name TypeT. When disabled the typedef will appear as a member of a file,
-# namespace, or class. And the struct will be named TypeS. This can typically be
-# useful for C code in case the coding convention dictates that all compound
-# types are typedef'ed and only the typedef is referenced, never the tag name.
-# The default value is: NO.
-
-TYPEDEF_HIDES_STRUCT = NO
-
-# The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This
-# cache is used to resolve symbols given their name and scope. Since this can be
-# an expensive process and often the same symbol appears multiple times in the
-# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small
-# doxygen will become slower. If the cache is too large, memory is wasted. The
-# cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range
-# is 0..9, the default is 0, corresponding to a cache size of 2^16=65536
-# symbols. At the end of a run doxygen will report the cache usage and suggest
-# the optimal cache size from a speed point of view.
-# Minimum value: 0, maximum value: 9, default value: 0.
-
-LOOKUP_CACHE_SIZE = 0
-
-#---------------------------------------------------------------------------
-# Build related configuration options
-#---------------------------------------------------------------------------
-
-# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in
-# documentation are documented, even if no documentation was available. Private
-# class members and static file members will be hidden unless the
-# EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES.
-# Note: This will also disable the warnings about undocumented members that are
-# normally produced when WARNINGS is set to YES.
-# The default value is: NO.
-
-EXTRACT_ALL = NO
-
-# If the EXTRACT_PRIVATE tag is set to YES, all private members of a class will
-# be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PRIVATE = NO
-
-# If the EXTRACT_PACKAGE tag is set to YES, all members with package or internal
-# scope will be included in the documentation.
-# The default value is: NO.
-
-EXTRACT_PACKAGE = NO
-
-# If the EXTRACT_STATIC tag is set to YES, all static members of a file will be
-# included in the documentation.
-# The default value is: NO.
-
-EXTRACT_STATIC = NO
-
-# If the EXTRACT_LOCAL_CLASSES tag is set to YES, classes (and structs) defined
-# locally in source files will be included in the documentation. If set to NO,
-# only classes defined in header files are included. Does not have any effect
-# for Java sources.
-# The default value is: YES.
-
-EXTRACT_LOCAL_CLASSES = YES
-
-# This flag is only useful for Objective-C code. If set to YES, local methods,
-# which are defined in the implementation section but not in the interface are
-# included in the documentation. If set to NO, only methods in the interface are
-# included.
-# The default value is: NO.
-
-EXTRACT_LOCAL_METHODS = NO
-
-# If this flag is set to YES, the members of anonymous namespaces will be
-# extracted and appear in the documentation as a namespace called
-# 'anonymous_namespace{file}', where file will be replaced with the base name of
-# the file that contains the anonymous namespace. By default anonymous namespace
-# are hidden.
-# The default value is: NO.
-
-EXTRACT_ANON_NSPACES = NO
-
-# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all
-# undocumented members inside documented classes or files. If set to NO these
-# members will be included in the various overviews, but no documentation
-# section is generated. This option has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_MEMBERS = NO
-
-# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all
-# undocumented classes that are normally visible in the class hierarchy. If set
-# to NO, these classes will be included in the various overviews. This option
-# has no effect if EXTRACT_ALL is enabled.
-# The default value is: NO.
-
-HIDE_UNDOC_CLASSES = NO
-
-# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend
-# (class|struct|union) declarations. If set to NO, these declarations will be
-# included in the documentation.
-# The default value is: NO.
-
-HIDE_FRIEND_COMPOUNDS = NO
-
-# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any
-# documentation blocks found inside the body of a function. If set to NO, these
-# blocks will be appended to the function's detailed documentation block.
-# The default value is: NO.
-
-HIDE_IN_BODY_DOCS = NO
-
-# The INTERNAL_DOCS tag determines if documentation that is typed after a
-# \internal command is included. If the tag is set to NO then the documentation
-# will be excluded. Set it to YES to include the internal documentation.
-# The default value is: NO.
-
-INTERNAL_DOCS = NO
-
-# If the CASE_SENSE_NAMES tag is set to NO then doxygen will only generate file
-# names in lower-case letters. If set to YES, upper-case letters are also
-# allowed. This is useful if you have classes or files whose names only differ
-# in case and if your file system supports case sensitive file names. Windows
-# and Mac users are advised to set this option to NO.
-# The default value is: system dependent.
-
-CASE_SENSE_NAMES = YES
-
-# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with
-# their full class and namespace scopes in the documentation. If set to YES, the
-# scope will be hidden.
-# The default value is: NO.
-
-HIDE_SCOPE_NAMES = NO
-
-# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will
-# append additional text to a page's title, such as Class Reference. If set to
-# YES the compound reference will be hidden.
-# The default value is: NO.
-
-HIDE_COMPOUND_REFERENCE= NO
-
-# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of
-# the files that are included by a file in the documentation of that file.
-# The default value is: YES.
-
-SHOW_INCLUDE_FILES = YES
-
-# If the SHOW_GROUPED_MEMB_INC tag is set to YES then Doxygen will add for each
-# grouped member an include statement to the documentation, telling the reader
-# which file to include in order to use the member.
-# The default value is: NO.
-
-SHOW_GROUPED_MEMB_INC = NO
-
-# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include
-# files with double quotes in the documentation rather than with sharp brackets.
-# The default value is: NO.
-
-FORCE_LOCAL_INCLUDES = NO
-
-# If the INLINE_INFO tag is set to YES then a tag [inline] is inserted in the
-# documentation for inline members.
-# The default value is: YES.
-
-INLINE_INFO = YES
-
-# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the
-# (detailed) documentation of file and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order.
-# The default value is: YES.
-
-SORT_MEMBER_DOCS = YES
-
-# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief
-# descriptions of file, namespace and class members alphabetically by member
-# name. If set to NO, the members will appear in declaration order. Note that
-# this will also influence the order of the classes in the class list.
-# The default value is: NO.
-
-SORT_BRIEF_DOCS = NO
-
-# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the
-# (brief and detailed) documentation of class members so that constructors and
-# destructors are listed first. If set to NO the constructors will appear in the
-# respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS.
-# Note: If SORT_BRIEF_DOCS is set to NO this option is ignored for sorting brief
-# member documentation.
-# Note: If SORT_MEMBER_DOCS is set to NO this option is ignored for sorting
-# detailed member documentation.
-# The default value is: NO.
-
-SORT_MEMBERS_CTORS_1ST = NO
-
-# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy
-# of group names into alphabetical order. If set to NO the group names will
-# appear in their defined order.
-# The default value is: NO.
-
-SORT_GROUP_NAMES = NO
-
-# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be sorted by
-# fully-qualified names, including namespaces. If set to NO, the class list will
-# be sorted only by class name, not including the namespace part.
-# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
-# Note: This option applies only to the class list, not to the alphabetical
-# list.
-# The default value is: NO.
-
-SORT_BY_SCOPE_NAME = NO
-
-# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper
-# type resolution of all parameters of a function it will reject a match between
-# the prototype and the implementation of a member function even if there is
-# only one candidate or it is obvious which candidate to choose by doing a
-# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still
-# accept a match between prototype and implementation in such cases.
-# The default value is: NO.
-
-STRICT_PROTO_MATCHING = NO
-
-# The GENERATE_TODOLIST tag can be used to enable (YES) or disable (NO) the todo
-# list. This list is created by putting \todo commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TODOLIST = YES
-
-# The GENERATE_TESTLIST tag can be used to enable (YES) or disable (NO) the test
-# list. This list is created by putting \test commands in the documentation.
-# The default value is: YES.
-
-GENERATE_TESTLIST = YES
-
-# The GENERATE_BUGLIST tag can be used to enable (YES) or disable (NO) the bug
-# list. This list is created by putting \bug commands in the documentation.
-# The default value is: YES.
-
-GENERATE_BUGLIST = YES
-
-# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or disable (NO)
-# the deprecated list. This list is created by putting \deprecated commands in
-# the documentation.
-# The default value is: YES.
-
-GENERATE_DEPRECATEDLIST= YES
-
-# The ENABLED_SECTIONS tag can be used to enable conditional documentation
-# sections, marked by \if <section_label> ... \endif and \cond <section_label>
-# ... \endcond blocks.
-
-ENABLED_SECTIONS =
-
-# The MAX_INITIALIZER_LINES tag determines the maximum number of lines that the
-# initial value of a variable or macro / define can have for it to appear in the
-# documentation. If the initializer consists of more lines than specified here
-# it will be hidden. Use a value of 0 to hide initializers completely. The
-# appearance of the value of individual variables and macros / defines can be
-# controlled using \showinitializer or \hideinitializer command in the
-# documentation regardless of this setting.
-# Minimum value: 0, maximum value: 10000, default value: 30.
-
-MAX_INITIALIZER_LINES = 30
-
-# Set the SHOW_USED_FILES tag to NO to disable the list of files generated at
-# the bottom of the documentation of classes and structs. If set to YES, the
-# list will mention the files that were used to generate the documentation.
-# The default value is: YES.
-
-SHOW_USED_FILES = YES
-
-# Set the SHOW_FILES tag to NO to disable the generation of the Files page. This
-# will remove the Files entry from the Quick Index and from the Folder Tree View
-# (if specified).
-# The default value is: YES.
-
-SHOW_FILES = YES
-
-# Set the SHOW_NAMESPACES tag to NO to disable the generation of the Namespaces
-# page. This will remove the Namespaces entry from the Quick Index and from the
-# Folder Tree View (if specified).
-# The default value is: YES.
-
-SHOW_NAMESPACES = YES
-
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from
-# the version control system). Doxygen will invoke the program by executing (via
-# popen()) the command command input-file, where command is the value of the
-# FILE_VERSION_FILTER tag, and input-file is the name of an input file provided
-# by doxygen. Whatever the program writes to standard output is used as the file
-# version. For an example see the documentation.
-
-FILE_VERSION_FILTER =
-
-# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed
-# by doxygen. The layout file controls the global structure of the generated
-# output files in an output format independent way. To create the layout file
-# that represents doxygen's defaults, run doxygen with the -l option. You can
-# optionally specify a file name after the option, if omitted DoxygenLayout.xml
-# will be used as the name of the layout file.
-#
-# Note that if you run doxygen from a directory containing a file called
-# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE
-# tag is left empty.
-
-LAYOUT_FILE =
-
-# The CITE_BIB_FILES tag can be used to specify one or more bib files containing
-# the reference definitions. This must be a list of .bib files. The .bib
-# extension is automatically appended if omitted. This requires the bibtex tool
-# to be installed. See also http://en.wikipedia.org/wiki/BibTeX for more info.
-# For LaTeX the style of the bibliography can be controlled using
-# LATEX_BIB_STYLE. To use this feature you need bibtex and perl available in the
-# search path. See also \cite for info how to create references.
-
-CITE_BIB_FILES =
-
-#---------------------------------------------------------------------------
-# Configuration options related to warning and progress messages
-#---------------------------------------------------------------------------
-
-# The QUIET tag can be used to turn on/off the messages that are generated to
-# standard output by doxygen. If QUIET is set to YES this implies that the
-# messages are off.
-# The default value is: NO.
-
-QUIET = NO
-
-# The WARNINGS tag can be used to turn on/off the warning messages that are
-# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES
-# this implies that the warnings are on.
-#
-# Tip: Turn warnings on while writing the documentation.
-# The default value is: YES.
-
-WARNINGS = YES
-
-# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate
-# warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag
-# will automatically be disabled.
-# The default value is: YES.
-
-WARN_IF_UNDOCUMENTED = YES
-
-# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for
-# potential errors in the documentation, such as not documenting some parameters
-# in a documented function, or documenting parameters that don't exist or using
-# markup commands wrongly.
-# The default value is: YES.
-
-WARN_IF_DOC_ERROR = YES
-
-# This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that
-# are documented, but have no documentation for their parameters or return
-# value. If set to NO, doxygen will only warn about wrong or incomplete
-# parameter documentation, but not about the absence of documentation.
-# The default value is: NO.
-
-WARN_NO_PARAMDOC = NO
-
-# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when
-# a warning is encountered.
-# The default value is: NO.
-
-WARN_AS_ERROR = NO
-
-# The WARN_FORMAT tag determines the format of the warning messages that doxygen
-# can produce. The string should contain the $file, $line, and $text tags, which
-# will be replaced by the file and line number from which the warning originated
-# and the warning text. Optionally the format may contain $version, which will
-# be replaced by the version of the file (if it could be obtained via
-# FILE_VERSION_FILTER)
-# The default value is: $file:$line: $text.
-
-WARN_FORMAT = "$file:$line: $text"
-
-# The WARN_LOGFILE tag can be used to specify a file to which warning and error
-# messages should be written. If left blank the output is written to standard
-# error (stderr).
-
-WARN_LOGFILE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the input files
-#---------------------------------------------------------------------------
-
-# The INPUT tag is used to specify the files and/or directories that contain
-# documented source files. You may enter file names like myfile.cpp or
-# directories like /usr/src/myproject. Separate the files or directories with
-# spaces. See also FILE_PATTERNS and EXTENSION_MAPPING
-# Note: If this tag is empty the current directory is searched.
-
-INPUT =
-
-# This tag can be used to specify the character encoding of the source files
-# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
-# libiconv (or the iconv built into libc) for the transcoding. See the libiconv
-# documentation (see: http://www.gnu.org/software/libiconv) for the list of
-# possible encodings.
-# The default value is: UTF-8.
-
-INPUT_ENCODING = UTF-8
-
-# If the value of the INPUT tag contains directories, you can use the
-# FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and
-# *.h) to filter out the source-files in the directories.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# read by doxygen.
-#
-# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp,
-# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h,
-# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc,
-# *.m, *.markdown, *.md, *.mm, *.dox, *.py, *.pyw, *.f90, *.f95, *.f03, *.f08,
-# *.f, *.for, *.tcl, *.vhd, *.vhdl, *.ucf and *.qsf.
-
-FILE_PATTERNS = *.c \
- *.cc \
- *.cxx \
- *.cpp \
- *.c++ \
- *.java \
- *.ii \
- *.ixx \
- *.ipp \
- *.i++ \
- *.inl \
- *.idl \
- *.ddl \
- *.odl \
- *.h \
- *.hh \
- *.hxx \
- *.hpp \
- *.h++ \
- *.cs \
- *.d \
- *.php \
- *.php4 \
- *.php5 \
- *.phtml \
- *.inc \
- *.m \
- *.markdown \
- *.md \
- *.mm \
- *.dox \
- *.py \
- *.pyw \
- *.f90 \
- *.f95 \
- *.f03 \
- *.f08 \
- *.f \
- *.for \
- *.tcl \
- *.vhd \
- *.vhdl \
- *.ucf \
- *.qsf
-
-# The RECURSIVE tag can be used to specify whether or not subdirectories should
-# be searched for input files as well.
-# The default value is: NO.
-
-RECURSIVE = NO
-
-# The EXCLUDE tag can be used to specify files and/or directories that should be
-# excluded from the INPUT source files. This way you can easily exclude a
-# subdirectory from a directory tree whose root is specified with the INPUT tag.
-#
-# Note that relative paths are relative to the directory from which doxygen is
-# run.
-
-EXCLUDE =
-
-# The EXCLUDE_SYMLINKS tag can be used to select whether or not files or
-# directories that are symbolic links (a Unix file system feature) are excluded
-# from the input.
-# The default value is: NO.
-
-EXCLUDE_SYMLINKS = NO
-
-# If the value of the INPUT tag contains directories, you can use the
-# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
-# certain files from those directories.
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories for example use the pattern */test/*
-
-EXCLUDE_PATTERNS =
-
-# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
-# (namespaces, classes, functions, etc.) that should be excluded from the
-# output. The symbol name can be a fully qualified name, a word, or if the
-# wildcard * is used, a substring. Examples: ANamespace, AClass,
-# AClass::ANamespace, ANamespace::*Test
-#
-# Note that the wildcards are matched against the file with absolute path, so to
-# exclude all test directories use the pattern */test/*
-
-EXCLUDE_SYMBOLS =
-
-# The EXAMPLE_PATH tag can be used to specify one or more files or directories
-# that contain example code fragments that are included (see the \include
-# command).
-
-EXAMPLE_PATH =
-
-# If the value of the EXAMPLE_PATH tag contains directories, you can use the
-# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp and
-# *.h) to filter out the source-files in the directories. If left blank all
-# files are included.
-
-EXAMPLE_PATTERNS = *
-
-# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
-# searched for input files to be used with the \include or \dontinclude commands
-# irrespective of the value of the RECURSIVE tag.
-# The default value is: NO.
-
-EXAMPLE_RECURSIVE = NO
-
-# The IMAGE_PATH tag can be used to specify one or more files or directories
-# that contain images that are to be included in the documentation (see the
-# \image command).
-
-IMAGE_PATH =
-
-# The INPUT_FILTER tag can be used to specify a program that doxygen should
-# invoke to filter for each input file. Doxygen will invoke the filter program
-# by executing (via popen()) the command:
-#
-# <filter> <input-file>
-#
-# where <filter> is the value of the INPUT_FILTER tag, and <input-file> is the
-# name of an input file. Doxygen will then use the output that the filter
-# program writes to standard output. If FILTER_PATTERNS is specified, this tag
-# will be ignored.
-#
-# Note that the filter must not add or remove lines; it is applied before the
-# code is scanned, but not when the output code is generated. If lines are added
-# or removed, the anchors will not be placed correctly.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-INPUT_FILTER =
-
-# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
-# basis. Doxygen will compare the file name with each pattern and apply the
-# filter if there is a match. The filters are a list of the form: pattern=filter
-# (like *.cpp=my_cpp_filter). See INPUT_FILTER for further information on how
-# filters are used. If the FILTER_PATTERNS tag is empty or if none of the
-# patterns match the file name, INPUT_FILTER is applied.
-#
-# Note that for custom extensions or not directly supported extensions you also
-# need to set EXTENSION_MAPPING for the extension otherwise the files are not
-# properly processed by doxygen.
-
-FILTER_PATTERNS =
-
-# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
-# INPUT_FILTER) will also be used to filter the input files that are used for
-# producing the source files to browse (i.e. when SOURCE_BROWSER is set to YES).
-# The default value is: NO.
-
-FILTER_SOURCE_FILES = NO
-
-# The FILTER_SOURCE_PATTERNS tag can be used to specify source filters per file
-# pattern. A pattern will override the setting for FILTER_PATTERN (if any) and
-# it is also possible to disable source filtering for a specific pattern using
-# *.ext= (so without naming a filter).
-# This tag requires that the tag FILTER_SOURCE_FILES is set to YES.
-
-FILTER_SOURCE_PATTERNS =
-
-# If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that
-# is part of the input, its contents will be placed on the main page
-# (index.html). This can be useful if you have a project on for instance GitHub
-# and want to reuse the introduction page also for the doxygen output.
-
-USE_MDFILE_AS_MAINPAGE =
-
-#---------------------------------------------------------------------------
-# Configuration options related to source browsing
-#---------------------------------------------------------------------------
-
-# If the SOURCE_BROWSER tag is set to YES then a list of source files will be
-# generated. Documented entities will be cross-referenced with these sources.
-#
-# Note: To get rid of all source code in the generated output, make sure that
-# also VERBATIM_HEADERS is set to NO.
-# The default value is: NO.
-
-SOURCE_BROWSER = NO
-
-# Setting the INLINE_SOURCES tag to YES will include the body of functions,
-# classes and enums directly into the documentation.
-# The default value is: NO.
-
-INLINE_SOURCES = NO
-
-# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any
-# special comment blocks from generated source code fragments. Normal C, C++ and
-# Fortran comments will always remain visible.
-# The default value is: YES.
-
-STRIP_CODE_COMMENTS = YES
-
-# If the REFERENCED_BY_RELATION tag is set to YES then for each documented
-# function all documented functions referencing it will be listed.
-# The default value is: NO.
-
-REFERENCED_BY_RELATION = NO
-
-# If the REFERENCES_RELATION tag is set to YES then for each documented function
-# all documented entities called/used by that function will be listed.
-# The default value is: NO.
-
-REFERENCES_RELATION = NO
-
-# If the REFERENCES_LINK_SOURCE tag is set to YES and SOURCE_BROWSER tag is set
-# to YES then the hyperlinks from functions in REFERENCES_RELATION and
-# REFERENCED_BY_RELATION lists will link to the source code. Otherwise they will
-# link to the documentation.
-# The default value is: YES.
-
-REFERENCES_LINK_SOURCE = YES
-
-# If SOURCE_TOOLTIPS is enabled (the default) then hovering a hyperlink in the
-# source code will show a tooltip with additional information such as prototype,
-# brief description and links to the definition and documentation. Since this
-# will make the HTML file larger and loading of large files a bit slower, you
-# can opt to disable this feature.
-# The default value is: YES.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-SOURCE_TOOLTIPS = YES
-
-# If the USE_HTAGS tag is set to YES then the references to source code will
-# point to the HTML generated by the htags(1) tool instead of doxygen built-in
-# source browser. The htags tool is part of GNU's global source tagging system
-# (see http://www.gnu.org/software/global/global.html). You will need version
-# 4.8.6 or higher.
-#
-# To use it do the following:
-# - Install the latest version of global
-# - Enable SOURCE_BROWSER and USE_HTAGS in the config file
-# - Make sure the INPUT points to the root of the source tree
-# - Run doxygen as normal
-#
-# Doxygen will invoke htags (and that will in turn invoke gtags), so these
-# tools must be available from the command line (i.e. in the search path).
-#
-# The result: instead of the source browser generated by doxygen, the links to
-# source code will now point to the output of htags.
-# The default value is: NO.
-# This tag requires that the tag SOURCE_BROWSER is set to YES.
-
-USE_HTAGS = NO
-
-# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a
-# verbatim copy of the header file for each class for which an include is
-# specified. Set to NO to disable this.
-# See also: Section \class.
-# The default value is: YES.
-
-VERBATIM_HEADERS = YES
-
-# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the
-# clang parser (see: http://clang.llvm.org/) for more accurate parsing at the
-# cost of reduced performance. This can be particularly helpful with template
-# rich C++ code for which doxygen's built-in parser lacks the necessary type
-# information.
-# Note: The availability of this option depends on whether or not doxygen was
-# generated with the -Duse-libclang=ON option for CMake.
-# The default value is: NO.
-
-CLANG_ASSISTED_PARSING = NO
-
-# If clang assisted parsing is enabled you can provide the compiler with command
-# line options that you would normally use when invoking the compiler. Note that
-# the include paths will already be set by doxygen for the files and directories
-# specified with INPUT and INCLUDE_PATH.
-# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES.
-
-CLANG_OPTIONS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the alphabetical class index
-#---------------------------------------------------------------------------
-
-# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index of all
-# compounds will be generated. Enable this if the project contains a lot of
-# classes, structs, unions or interfaces.
-# The default value is: YES.
-
-ALPHABETICAL_INDEX = YES
-
-# The COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns in
-# which the alphabetical index list will be split.
-# Minimum value: 1, maximum value: 20, default value: 5.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-COLS_IN_ALPHA_INDEX = 5
-
-# In case all classes in a project start with a common prefix, all classes will
-# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag
-# can be used to specify a prefix (or a list of prefixes) that should be ignored
-# while generating the index headers.
-# This tag requires that the tag ALPHABETICAL_INDEX is set to YES.
-
-IGNORE_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the HTML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output
-# The default value is: YES.
-
-GENERATE_HTML = YES
-
-# The HTML_OUTPUT tag is used to specify where the HTML docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_OUTPUT = html
-
-# The HTML_FILE_EXTENSION tag can be used to specify the file extension for each
-# generated HTML page (for example: .htm, .php, .asp).
-# The default value is: .html.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FILE_EXTENSION = .html
-
-# The HTML_HEADER tag can be used to specify a user-defined HTML header file for
-# each generated HTML page. If the tag is left blank doxygen will generate a
-# standard header.
-#
-# To get valid HTML the header file that includes any scripts and style sheets
-# that doxygen needs, which is dependent on the configuration options used (e.g.
-# the setting GENERATE_TREEVIEW). It is highly recommended to start with a
-# default header using
-# doxygen -w html new_header.html new_footer.html new_stylesheet.css
-# YourConfigFile
-# and then modify the file new_header.html. See also section "Doxygen usage"
-# for information on how to generate the default header that doxygen normally
-# uses.
-# Note: The header is subject to change so you typically have to regenerate the
-# default header when upgrading to a newer version of doxygen. For a description
-# of the possible markers and block names see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_HEADER =
-
-# The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each
-# generated HTML page. If the tag is left blank doxygen will generate a standard
-# footer. See HTML_HEADER for more information on how to generate a default
-# footer and what special commands can be used inside the footer. See also
-# section "Doxygen usage" for information on how to generate the default footer
-# that doxygen normally uses.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_FOOTER =
-
-# The HTML_STYLESHEET tag can be used to specify a user-defined cascading style
-# sheet that is used by each HTML page. It can be used to fine-tune the look of
-# the HTML output. If left blank doxygen will generate a default style sheet.
-# See also section "Doxygen usage" for information on how to generate the style
-# sheet that doxygen normally uses.
-# Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as
-# it is more robust and this tag (HTML_STYLESHEET) will in the future become
-# obsolete.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_STYLESHEET =
-
-# The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# cascading style sheets that are included after the standard style sheets
-# created by doxygen. Using this option one can overrule certain style aspects.
-# This is preferred over using HTML_STYLESHEET since it does not replace the
-# standard style sheet and is therefore more robust against future updates.
-# Doxygen will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list). For an example see the documentation.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_STYLESHEET =
-
-# The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the HTML output directory. Note
-# that these files will be copied to the base HTML output directory. Use the
-# $relpath^ marker in the HTML_HEADER and/or HTML_FOOTER files to load these
-# files. In the HTML_STYLESHEET file, use the file name only. Also note that the
-# files will be copied as-is; there are no commands or markers available.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_EXTRA_FILES =
-
-# The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen
-# will adjust the colors in the style sheet and background images according to
-# this color. Hue is specified as an angle on a colorwheel, see
-# http://en.wikipedia.org/wiki/Hue for more information. For instance the value
-# 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300
-# purple, and 360 is red again.
-# Minimum value: 0, maximum value: 359, default value: 220.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_HUE = 220
-
-# The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors
-# in the HTML output. For a value of 0 the output will use grayscales only. A
-# value of 255 will produce the most vivid colors.
-# Minimum value: 0, maximum value: 255, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_SAT = 100
-
-# The HTML_COLORSTYLE_GAMMA tag controls the gamma correction applied to the
-# luminance component of the colors in the HTML output. Values below 100
-# gradually make the output lighter, whereas values above 100 make the output
-# darker. The value divided by 100 is the actual gamma applied, so 80 represents
-# a gamma of 0.8, The value 220 represents a gamma of 2.2, and 100 does not
-# change the gamma.
-# Minimum value: 40, maximum value: 240, default value: 80.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_COLORSTYLE_GAMMA = 80
-
-# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML
-# page will contain the date and time when the page was generated. Setting this
-# to YES can help to show when doxygen was last run and thus if the
-# documentation is up to date.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_TIMESTAMP = NO
-
-# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
-# documentation will contain sections that can be hidden and shown after the
-# page has loaded.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_DYNAMIC_SECTIONS = NO
-
-# With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries
-# shown in the various tree structured indices initially; the user can expand
-# and collapse entries dynamically later on. Doxygen will expand the tree to
-# such a level that at most the specified number of entries are visible (unless
-# a fully collapsed tree already exceeds this amount). So setting the number of
-# entries 1 will produce a full collapsed tree by default. 0 is a special value
-# representing an infinite number of entries and will result in a full expanded
-# tree by default.
-# Minimum value: 0, maximum value: 9999, default value: 100.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-HTML_INDEX_NUM_ENTRIES = 100
-
-# If the GENERATE_DOCSET tag is set to YES, additional index files will be
-# generated that can be used as input for Apple's Xcode 3 integrated development
-# environment (see: http://developer.apple.com/tools/xcode/), introduced with
-# OSX 10.5 (Leopard). To create a documentation set, doxygen will generate a
-# Makefile in the HTML output directory. Running make will produce the docset in
-# that directory and running make install will install the docset in
-# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at
-# startup. See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html
-# for more information.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_DOCSET = NO
-
-# This tag determines the name of the docset feed. A documentation feed provides
-# an umbrella under which multiple documentation sets from a single provider
-# (such as a company or product suite) can be grouped.
-# The default value is: Doxygen generated docs.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_FEEDNAME = "Doxygen generated docs"
-
-# This tag specifies a string that should uniquely identify the documentation
-# set bundle. This should be a reverse domain-name style string, e.g.
-# com.mycompany.MyDocSet. Doxygen will append .docset to the name.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_BUNDLE_ID = org.doxygen.Project
-
-# The DOCSET_PUBLISHER_ID tag specifies a string that should uniquely identify
-# the documentation publisher. This should be a reverse domain-name style
-# string, e.g. com.mycompany.MyDocSet.documentation.
-# The default value is: org.doxygen.Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_ID = org.doxygen.Publisher
-
-# The DOCSET_PUBLISHER_NAME tag identifies the documentation publisher.
-# The default value is: Publisher.
-# This tag requires that the tag GENERATE_DOCSET is set to YES.
-
-DOCSET_PUBLISHER_NAME = Publisher
-
-# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three
-# additional HTML index files: index.hhp, index.hhc, and index.hhk. The
-# index.hhp is a project file that can be read by Microsoft's HTML Help Workshop
-# (see: http://www.microsoft.com/en-us/download/details.aspx?id=21138) on
-# Windows.
-#
-# The HTML Help Workshop contains a compiler that can convert all HTML output
-# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML
-# files are now used as the Windows 98 help format, and will replace the old
-# Windows help format (.hlp) on all Windows platforms in the future. Compressed
-# HTML files also contain an index, a table of contents, and you can search for
-# words in the documentation. The HTML workshop also contains a viewer for
-# compressed HTML files.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_HTMLHELP = NO
-
-# The CHM_FILE tag can be used to specify the file name of the resulting .chm
-# file. You can add a path in front of the file if the result should not be
-# written to the html output directory.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_FILE =
-
-# The HHC_LOCATION tag can be used to specify the location (absolute path
-# including file name) of the HTML help compiler (hhc.exe). If non-empty,
-# doxygen will try to run the HTML help compiler on the generated index.hhp.
-# The file has to be specified with full path.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-HHC_LOCATION =
-
-# The GENERATE_CHI flag controls if a separate .chi index file is generated
-# (YES) or that it should be included in the master .chm file (NO).
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-GENERATE_CHI = NO
-
-# The CHM_INDEX_ENCODING is used to encode HtmlHelp index (hhk), content (hhc)
-# and project file content.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-CHM_INDEX_ENCODING =
-
-# The BINARY_TOC flag controls whether a binary table of contents is generated
-# (YES) or a normal table of contents (NO) in the .chm file. Furthermore it
-# enables the Previous and Next buttons.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-BINARY_TOC = NO
-
-# The TOC_EXPAND flag can be set to YES to add extra items for group members to
-# the table of contents of the HTML help documentation and to the tree view.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTMLHELP is set to YES.
-
-TOC_EXPAND = NO
-
-# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and
-# QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that
-# can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help
-# (.qch) of the generated HTML documentation.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_QHP = NO
-
-# If the QHG_LOCATION tag is specified, the QCH_FILE tag can be used to specify
-# the file name of the resulting .qch file. The path specified is relative to
-# the HTML output folder.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QCH_FILE =
-
-# The QHP_NAMESPACE tag specifies the namespace to use when generating Qt Help
-# Project output. For more information please see Qt Help Project / Namespace
-# (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#namespace).
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_NAMESPACE = org.doxygen.Project
-
-# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating Qt
-# Help Project output. For more information please see Qt Help Project / Virtual
-# Folders (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#virtual-
-# folders).
-# The default value is: doc.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_VIRTUAL_FOLDER = doc
-
-# If the QHP_CUST_FILTER_NAME tag is set, it specifies the name of a custom
-# filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_NAME =
-
-# The QHP_CUST_FILTER_ATTRS tag specifies the list of the attributes of the
-# custom filter to add. For more information please see Qt Help Project / Custom
-# Filters (see: http://qt-project.org/doc/qt-4.8/qthelpproject.html#custom-
-# filters).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_CUST_FILTER_ATTRS =
-
-# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this
-# project's filter section matches. Qt Help Project / Filter Attributes (see:
-# http://qt-project.org/doc/qt-4.8/qthelpproject.html#filter-attributes).
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHP_SECT_FILTER_ATTRS =
-
-# The QHG_LOCATION tag can be used to specify the location of Qt's
-# qhelpgenerator. If non-empty doxygen will try to run qhelpgenerator on the
-# generated .qhp file.
-# This tag requires that the tag GENERATE_QHP is set to YES.
-
-QHG_LOCATION =
-
-# If the GENERATE_ECLIPSEHELP tag is set to YES, additional index files will be
-# generated, together with the HTML files, they form an Eclipse help plugin. To
-# install this plugin and make it available under the help contents menu in
-# Eclipse, the contents of the directory containing the HTML and XML files needs
-# to be copied into the plugins directory of eclipse. The name of the directory
-# within the plugins directory should be the same as the ECLIPSE_DOC_ID value.
-# After copying Eclipse needs to be restarted before the help appears.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_ECLIPSEHELP = NO
-
-# A unique identifier for the Eclipse help plugin. When installing the plugin
-# the directory name containing the HTML and XML files should also have this
-# name. Each documentation set should have its own identifier.
-# The default value is: org.doxygen.Project.
-# This tag requires that the tag GENERATE_ECLIPSEHELP is set to YES.
-
-ECLIPSE_DOC_ID = org.doxygen.Project
-
-# If you want full control over the layout of the generated HTML pages it might
-# be necessary to disable the index and replace it with your own. The
-# DISABLE_INDEX tag can be used to turn on/off the condensed index (tabs) at top
-# of each HTML page. A value of NO enables the index and the value YES disables
-# it. Since the tabs in the index contain the same information as the navigation
-# tree, you can set this option to YES if you also set GENERATE_TREEVIEW to YES.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-DISABLE_INDEX = NO
-
-# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
-# structure should be generated to display hierarchical information. If the tag
-# value is set to YES, a side panel will be generated containing a tree-like
-# index structure (just like the one that is generated for HTML Help). For this
-# to work a browser that supports JavaScript, DHTML, CSS and frames is required
-# (i.e. any modern browser). Windows users are probably better off using the
-# HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can
-# further fine-tune the look of the index. As an example, the default style
-# sheet generated by doxygen has an example that shows how to put an image at
-# the root of the tree instead of the PROJECT_NAME. Since the tree basically has
-# the same information as the tab index, you could consider setting
-# DISABLE_INDEX to YES when enabling this option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-GENERATE_TREEVIEW = NO
-
-# The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that
-# doxygen will group on one line in the generated HTML documentation.
-#
-# Note that a value of 0 will completely suppress the enum values from appearing
-# in the overview section.
-# Minimum value: 0, maximum value: 20, default value: 4.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-ENUM_VALUES_PER_LINE = 4
-
-# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used
-# to set the initial width (in pixels) of the frame in which the tree is shown.
-# Minimum value: 0, maximum value: 1500, default value: 250.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-TREEVIEW_WIDTH = 250
-
-# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to
-# external symbols imported via tag files in a separate window.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-EXT_LINKS_IN_WINDOW = NO
-
-# Use this tag to change the font size of LaTeX formulas included as images in
-# the HTML documentation. When you change the font size after a successful
-# doxygen run you need to manually remove any form_*.png images from the HTML
-# output directory to force them to be regenerated.
-# Minimum value: 8, maximum value: 50, default value: 10.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_FONTSIZE = 10
-
-# Use the FORMULA_TRANPARENT tag to determine whether or not the images
-# generated for formulas are transparent PNGs. Transparent PNGs are not
-# supported properly for IE 6.0, but are supported on all modern browsers.
-#
-# Note that when changing this option you need to delete any form_*.png files in
-# the HTML output directory before the changes have effect.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-FORMULA_TRANSPARENT = YES
-
-# Enable the USE_MATHJAX option to render LaTeX formulas using MathJax (see
-# http://www.mathjax.org) which uses client side Javascript for the rendering
-# instead of using pre-rendered bitmaps. Use this if you do not have LaTeX
-# installed or if you want to formulas look prettier in the HTML output. When
-# enabled you may also need to install MathJax separately and configure the path
-# to it using the MATHJAX_RELPATH option.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-USE_MATHJAX = NO
-
-# When MathJax is enabled you can set the default output format to be used for
-# the MathJax output. See the MathJax site (see:
-# http://docs.mathjax.org/en/latest/output.html) for more details.
-# Possible values are: HTML-CSS (which is slower, but has the best
-# compatibility), NativeMML (i.e. MathML) and SVG.
-# The default value is: HTML-CSS.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_FORMAT = HTML-CSS
-
-# When MathJax is enabled you need to specify the location relative to the HTML
-# output directory using the MATHJAX_RELPATH option. The destination directory
-# should contain the MathJax.js script. For instance, if the mathjax directory
-# is located at the same level as the HTML output directory, then
-# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax
-# Content Delivery Network so you can quickly see the result without installing
-# MathJax. However, it is strongly recommended to install a local copy of
-# MathJax from http://www.mathjax.org before deployment.
-# The default value is: http://cdn.mathjax.org/mathjax/latest.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_RELPATH = http://cdn.mathjax.org/mathjax/latest
-
-# The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax
-# extension names that should be enabled during MathJax rendering. For example
-# MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_EXTENSIONS =
-
-# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces
-# of code that will be used on startup of the MathJax code. See the MathJax site
-# (see: http://docs.mathjax.org/en/latest/output.html) for more details. For an
-# example see the documentation.
-# This tag requires that the tag USE_MATHJAX is set to YES.
-
-MATHJAX_CODEFILE =
-
-# When the SEARCHENGINE tag is enabled doxygen will generate a search box for
-# the HTML output. The underlying search engine uses javascript and DHTML and
-# should work on any modern browser. Note that when using HTML help
-# (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET)
-# there is already a search function so this one should typically be disabled.
-# For large projects the javascript based search engine can be slow, then
-# enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to
-# search using the keyboard; to jump to the search box use <access key> + S
-# (what the <access key> is depends on the OS and browser, but it is typically
-# <CTRL>, <ALT>/<option>, or both). Inside the search box use the <cursor down
-# key> to jump into the search results window, the results can be navigated
-# using the <cursor keys>. Press <Enter> to select an item or <escape> to cancel
-# the search. The filter options can be selected when the cursor is inside the
-# search box by pressing <Shift>+<cursor down>. Also here use the <cursor keys>
-# to select a filter and <Enter> or <escape> to activate or cancel the filter
-# option.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_HTML is set to YES.
-
-SEARCHENGINE = YES
-
-# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
-# implemented using a web server instead of a web client using Javascript. There
-# are two flavors of web server based searching depending on the EXTERNAL_SEARCH
-# setting. When disabled, doxygen will generate a PHP script for searching and
-# an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing
-# and searching needs to be provided by external tools. See the section
-# "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SERVER_BASED_SEARCH = NO
-
-# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP
-# script for searching. Instead the search results are written to an XML file
-# which needs to be processed by an external indexer. Doxygen will invoke an
-# external search engine pointed to by the SEARCHENGINE_URL option to obtain the
-# search results.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/).
-#
-# See the section "External Indexing and Searching" for details.
-# The default value is: NO.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH = NO
-
-# The SEARCHENGINE_URL should point to a search engine hosted by a web server
-# which will return the search results when EXTERNAL_SEARCH is enabled.
-#
-# Doxygen ships with an example indexer (doxyindexer) and search engine
-# (doxysearch.cgi) which are based on the open source search engine library
-# Xapian (see: http://xapian.org/). See the section "External Indexing and
-# Searching" for details.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHENGINE_URL =
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the unindexed
-# search data is written to a file for indexing by an external tool. With the
-# SEARCHDATA_FILE tag the name of this file can be specified.
-# The default file is: searchdata.xml.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-SEARCHDATA_FILE = searchdata.xml
-
-# When SERVER_BASED_SEARCH and EXTERNAL_SEARCH are both enabled the
-# EXTERNAL_SEARCH_ID tag can be used as an identifier for the project. This is
-# useful in combination with EXTRA_SEARCH_MAPPINGS to search through multiple
-# projects and redirect the results back to the right project.
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTERNAL_SEARCH_ID =
-
-# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen
-# projects other than the one defined by this configuration file, but that are
-# all added to the same external search index. Each project needs to have a
-# unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of
-# to a relative location where the documentation can be found. The format is:
-# EXTRA_SEARCH_MAPPINGS = tagname1=loc1 tagname2=loc2 ...
-# This tag requires that the tag SEARCHENGINE is set to YES.
-
-EXTRA_SEARCH_MAPPINGS =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the LaTeX output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output.
-# The default value is: YES.
-
-GENERATE_LATEX = YES
-
-# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_OUTPUT = latex
-
-# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
-# invoked.
-#
-# Note that when enabling USE_PDFLATEX this option is only used for generating
-# bitmaps for formulas in the HTML output, but not in the Makefile that is
-# written to the output directory.
-# The default file is: latex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_CMD_NAME = latex
-
-# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to generate
-# index for LaTeX.
-# The default file is: makeindex.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-MAKEINDEX_CMD_NAME = makeindex
-
-# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-COMPACT_LATEX = NO
-
-# The PAPER_TYPE tag can be used to set the paper type that is used by the
-# printer.
-# Possible values are: a4 (210 x 297 mm), letter (8.5 x 11 inches), legal (8.5 x
-# 14 inches) and executive (7.25 x 10.5 inches).
-# The default value is: a4.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PAPER_TYPE = a4
-
-# The EXTRA_PACKAGES tag can be used to specify one or more LaTeX package names
-# that should be included in the LaTeX output. The package can be specified just
-# by its name or with the correct syntax as to be used with the LaTeX
-# \usepackage command. To get the times font for instance you can specify :
-# EXTRA_PACKAGES=times or EXTRA_PACKAGES={times}
-# To use the option intlimits with the amsmath package you can specify:
-# EXTRA_PACKAGES=[intlimits]{amsmath}
-# If left blank no extra packages will be included.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-EXTRA_PACKAGES =
-
-# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the
-# generated LaTeX document. The header should contain everything until the first
-# chapter. If it is left blank doxygen will generate a standard header. See
-# section "Doxygen usage" for information on how to let doxygen write the
-# default header to a separate file.
-#
-# Note: Only use a user-defined header if you know what you are doing! The
-# following commands have a special meaning inside the header: $title,
-# $datetime, $date, $doxygenversion, $projectname, $projectnumber,
-# $projectbrief, $projectlogo. Doxygen will replace $title with the empty
-# string, for the replacement values of the other commands the user is referred
-# to HTML_HEADER.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HEADER =
-
-# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the
-# generated LaTeX document. The footer should contain everything after the last
-# chapter. If it is left blank doxygen will generate a standard footer. See
-# LATEX_HEADER for more information on how to generate a default footer and what
-# special commands can be used inside the footer.
-#
-# Note: Only use a user-defined footer if you know what you are doing!
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_FOOTER =
-
-# The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined
-# LaTeX style sheets that are included after the standard style sheets created
-# by doxygen. Using this option one can overrule certain style aspects. Doxygen
-# will copy the style sheet files to the output directory.
-# Note: The order of the extra style sheet files is of importance (e.g. the last
-# style sheet in the list overrules the setting of the previous ones in the
-# list).
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_STYLESHEET =
-
-# The LATEX_EXTRA_FILES tag can be used to specify one or more extra images or
-# other source files which should be copied to the LATEX_OUTPUT output
-# directory. Note that the files will be copied as-is; there are no commands or
-# markers available.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_EXTRA_FILES =
-
-# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated is
-# prepared for conversion to PDF (using ps2pdf or pdflatex). The PDF file will
-# contain links (just like the HTML output) instead of page references. This
-# makes the output suitable for online browsing using a PDF viewer.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-PDF_HYPERLINKS = YES
-
-# If the USE_PDFLATEX tag is set to YES, doxygen will use pdflatex to generate
-# the PDF file directly from the LaTeX files. Set this option to YES, to get a
-# higher quality PDF documentation.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-USE_PDFLATEX = YES
-
-# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode
-# command to the generated LaTeX files. This will instruct LaTeX to keep running
-# if errors occur, instead of asking the user for help. This option is also used
-# when generating formulas in HTML.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BATCHMODE = NO
-
-# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the
-# index chapters (such as File Index, Compound Index, etc.) in the output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_HIDE_INDICES = NO
-
-# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source
-# code with syntax highlighting in the LaTeX output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_SOURCE_CODE = NO
-
-# The LATEX_BIB_STYLE tag can be used to specify the style to use for the
-# bibliography, e.g. plainnat, or ieeetr. See
-# http://en.wikipedia.org/wiki/BibTeX and \cite for more info.
-# The default value is: plain.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_BIB_STYLE = plain
-
-# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated
-# page will contain the date and time when the page was generated. Setting this
-# to NO can help when comparing the output of multiple runs.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_LATEX is set to YES.
-
-LATEX_TIMESTAMP = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the RTF output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The
-# RTF output is optimized for Word 97 and may not look too pretty with other RTF
-# readers/editors.
-# The default value is: NO.
-
-GENERATE_RTF = NO
-
-# The RTF_OUTPUT tag is used to specify where the RTF docs will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: rtf.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_OUTPUT = rtf
-
-# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF
-# documents. This may be useful for small projects and may help to save some
-# trees in general.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-COMPACT_RTF = NO
-
-# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated will
-# contain hyperlink fields. The RTF file will contain links (just like the HTML
-# output) instead of page references. This makes the output suitable for online
-# browsing using Word or some other Word compatible readers that support those
-# fields.
-#
-# Note: WordPad (write) and others do not support links.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_HYPERLINKS = NO
-
-# Load stylesheet definitions from file. Syntax is similar to doxygen's config
-# file, i.e. a series of assignments. You only have to provide replacements,
-# missing definitions are set to their default value.
-#
-# See also section "Doxygen usage" for information on how to generate the
-# default style sheet that doxygen normally uses.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_STYLESHEET_FILE =
-
-# Set optional variables used in the generation of an RTF document. Syntax is
-# similar to doxygen's config file. A template extensions file can be generated
-# using doxygen -e rtf extensionFile.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_EXTENSIONS_FILE =
-
-# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code
-# with syntax highlighting in the RTF output.
-#
-# Note that which sources are shown also depends on other settings such as
-# SOURCE_BROWSER.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_RTF is set to YES.
-
-RTF_SOURCE_CODE = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the man page output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for
-# classes and files.
-# The default value is: NO.
-
-GENERATE_MAN = NO
-
-# The MAN_OUTPUT tag is used to specify where the man pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it. A directory man3 will be created inside the directory specified by
-# MAN_OUTPUT.
-# The default directory is: man.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_OUTPUT = man
-
-# The MAN_EXTENSION tag determines the extension that is added to the generated
-# man pages. In case the manual section does not start with a number, the number
-# 3 is prepended. The dot (.) at the beginning of the MAN_EXTENSION tag is
-# optional.
-# The default value is: .3.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_EXTENSION = .3
-
-# The MAN_SUBDIR tag determines the name of the directory created within
-# MAN_OUTPUT in which the man pages are placed. If defaults to man followed by
-# MAN_EXTENSION with the initial . removed.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_SUBDIR =
-
-# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it
-# will generate one additional man file for each entity documented in the real
-# man page(s). These additional files only source the real man page, but without
-# them the man command would be unable to find the correct page.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_MAN is set to YES.
-
-MAN_LINKS = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the XML output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that
-# captures the structure of the code including all documentation.
-# The default value is: NO.
-
-GENERATE_XML = NO
-
-# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
-# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
-# it.
-# The default directory is: xml.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_OUTPUT = xml
-
-# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program
-# listings (including syntax highlighting and cross-referencing information) to
-# the XML output. Note that enabling this will significantly increase the size
-# of the XML output.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_XML is set to YES.
-
-XML_PROGRAMLISTING = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to the DOCBOOK output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files
-# that can be used to generate PDF.
-# The default value is: NO.
-
-GENERATE_DOCBOOK = NO
-
-# The DOCBOOK_OUTPUT tag is used to specify where the Docbook pages will be put.
-# If a relative path is entered the value of OUTPUT_DIRECTORY will be put in
-# front of it.
-# The default directory is: docbook.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_OUTPUT = docbook
-
-# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the
-# program listings (including syntax highlighting and cross-referencing
-# information) to the DOCBOOK output. Note that enabling this will significantly
-# increase the size of the DOCBOOK output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_DOCBOOK is set to YES.
-
-DOCBOOK_PROGRAMLISTING = NO
-
-#---------------------------------------------------------------------------
-# Configuration options for the AutoGen Definitions output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an
-# AutoGen Definitions (see http://autogen.sf.net) file that captures the
-# structure of the code including all documentation. Note that this feature is
-# still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_AUTOGEN_DEF = NO
-
-#---------------------------------------------------------------------------
-# Configuration options related to the Perl module output
-#---------------------------------------------------------------------------
-
-# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module
-# file that captures the structure of the code including all documentation.
-#
-# Note that this feature is still experimental and incomplete at the moment.
-# The default value is: NO.
-
-GENERATE_PERLMOD = NO
-
-# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary
-# Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI
-# output from the Perl module output.
-# The default value is: NO.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_LATEX = NO
-
-# If the PERLMOD_PRETTY tag is set to YES, the Perl module output will be nicely
-# formatted so it can be parsed by a human reader. This is useful if you want to
-# understand what is going on. On the other hand, if this tag is set to NO, the
-# size of the Perl module output will be much smaller and Perl will parse it
-# just the same.
-# The default value is: YES.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_PRETTY = YES
-
-# The names of the make variables in the generated doxyrules.make file are
-# prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX. This is useful
-# so different doxyrules.make files included by the same Makefile don't
-# overwrite each other's variables.
-# This tag requires that the tag GENERATE_PERLMOD is set to YES.
-
-PERLMOD_MAKEVAR_PREFIX =
-
-#---------------------------------------------------------------------------
-# Configuration options related to the preprocessor
-#---------------------------------------------------------------------------
-
-# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all
-# C-preprocessor directives found in the sources and include files.
-# The default value is: YES.
-
-ENABLE_PREPROCESSING = YES
-
-# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names
-# in the source code. If set to NO, only conditional compilation will be
-# performed. Macro expansion can be done in a controlled way by setting
-# EXPAND_ONLY_PREDEF to YES.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-MACRO_EXPANSION = NO
-
-# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
-# the macro expansion is limited to the macros specified with the PREDEFINED and
-# EXPAND_AS_DEFINED tags.
-# The default value is: NO.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_ONLY_PREDEF = NO
-
-# If the SEARCH_INCLUDES tag is set to YES, the include files in the
-# INCLUDE_PATH will be searched if a #include is found.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SEARCH_INCLUDES = YES
-
-# The INCLUDE_PATH tag can be used to specify one or more directories that
-# contain include files that are not input files but should be processed by the
-# preprocessor.
-# This tag requires that the tag SEARCH_INCLUDES is set to YES.
-
-INCLUDE_PATH =
-
-# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
-# patterns (like *.h and *.hpp) to filter out the header-files in the
-# directories. If left blank, the patterns specified with FILE_PATTERNS will be
-# used.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-INCLUDE_FILE_PATTERNS =
-
-# The PREDEFINED tag can be used to specify one or more macro names that are
-# defined before the preprocessor is started (similar to the -D option of e.g.
-# gcc). The argument of the tag is a list of macros of the form: name or
-# name=definition (no spaces). If the definition and the "=" are omitted, "=1"
-# is assumed. To prevent a macro definition from being undefined via #undef or
-# recursively expanded use the := operator instead of the = operator.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-PREDEFINED =
-
-# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
-# tag can be used to specify a list of macro names that should be expanded. The
-# macro definition that is found in the sources will be used. Use the PREDEFINED
-# tag if you want to use a different macro definition that overrules the
-# definition found in the source code.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-EXPAND_AS_DEFINED =
-
-# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will
-# remove all references to function-like macros that are alone on a line, have
-# an all uppercase name, and do not end with a semicolon. Such function macros
-# are typically used for boiler-plate code, and will confuse the parser if not
-# removed.
-# The default value is: YES.
-# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
-
-SKIP_FUNCTION_MACROS = YES
-
-#---------------------------------------------------------------------------
-# Configuration options related to external references
-#---------------------------------------------------------------------------
-
-# The TAGFILES tag can be used to specify one or more tag files. For each tag
-# file the location of the external documentation should be added. The format of
-# a tag file without this location is as follows:
-# TAGFILES = file1 file2 ...
-# Adding location for the tag files is done as follows:
-# TAGFILES = file1=loc1 "file2 = loc2" ...
-# where loc1 and loc2 can be relative or absolute paths or URLs. See the
-# section "Linking to external documentation" for more information about the use
-# of tag files.
-# Note: Each tag file must have a unique name (where the name does NOT include
-# the path). If a tag file is not located in the directory in which doxygen is
-# run, you must also specify the path to the tagfile here.
-
-TAGFILES =
-
-# When a file name is specified after GENERATE_TAGFILE, doxygen will create a
-# tag file that is based on the input files it reads. See section "Linking to
-# external documentation" for more information about the usage of tag files.
-
-GENERATE_TAGFILE =
-
-# If the ALLEXTERNALS tag is set to YES, all external class will be listed in
-# the class index. If set to NO, only the inherited external classes will be
-# listed.
-# The default value is: NO.
-
-ALLEXTERNALS = NO
-
-# If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed
-# in the modules index. If set to NO, only the current project's groups will be
-# listed.
-# The default value is: YES.
-
-EXTERNAL_GROUPS = YES
-
-# If the EXTERNAL_PAGES tag is set to YES, all external pages will be listed in
-# the related pages index. If set to NO, only the current project's pages will
-# be listed.
-# The default value is: YES.
-
-EXTERNAL_PAGES = YES
-
-# The PERL_PATH should be the absolute path and name of the perl script
-# interpreter (i.e. the result of 'which perl').
-# The default file (with absolute path) is: /usr/bin/perl.
-
-PERL_PATH = /usr/bin/perl
-
-#---------------------------------------------------------------------------
-# Configuration options related to the dot tool
-#---------------------------------------------------------------------------
-
-# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram
-# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to
-# NO turns the diagrams off. Note that this option also works with HAVE_DOT
-# disabled, but it is recommended to install and use dot, since it yields more
-# powerful graphs.
-# The default value is: YES.
-
-CLASS_DIAGRAMS = YES
-
-# You can define message sequence charts within doxygen comments using the \msc
-# command. Doxygen will then run the mscgen tool (see:
-# http://www.mcternan.me.uk/mscgen/)) to produce the chart and insert it in the
-# documentation. The MSCGEN_PATH tag allows you to specify the directory where
-# the mscgen tool resides. If left empty the tool is assumed to be found in the
-# default search path.
-
-MSCGEN_PATH =
-
-# You can include diagrams made with dia in doxygen documentation. Doxygen will
-# then run dia to produce the diagram and insert it in the documentation. The
-# DIA_PATH tag allows you to specify the directory where the dia binary resides.
-# If left empty dia is assumed to be found in the default search path.
-
-DIA_PATH =
-
-# If set to YES the inheritance and collaboration graphs will hide inheritance
-# and usage relations if the target is undocumented or is not a class.
-# The default value is: YES.
-
-HIDE_UNDOC_RELATIONS = YES
-
-# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
-# available from the path. This tool is part of Graphviz (see:
-# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent
-# Bell Labs. The other options in this section have no effect if this option is
-# set to NO
-# The default value is: YES.
-
-HAVE_DOT = YES
-
-# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed
-# to run in parallel. When set to 0 doxygen will base this on the number of
-# processors available in the system. You can set it explicitly to a value
-# larger than 0 to get control over the balance between CPU load and processing
-# speed.
-# Minimum value: 0, maximum value: 32, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_NUM_THREADS = 0
-
-# When you want a differently looking font in the dot files that doxygen
-# generates you can specify the font name using DOT_FONTNAME. You need to make
-# sure dot is able to find the font, which can be done by putting it in a
-# standard location or by setting the DOTFONTPATH environment variable or by
-# setting DOT_FONTPATH to the directory containing the font.
-# The default value is: Helvetica.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTNAME = Helvetica
-
-# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of
-# dot graphs.
-# Minimum value: 4, maximum value: 24, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTSIZE = 10
-
-# By default doxygen will tell dot to use the default font as specified with
-# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set
-# the path where dot can find it using this tag.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_FONTPATH =
-
-# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for
-# each documented class showing the direct and indirect inheritance relations.
-# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CLASS_GRAPH = YES
-
-# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a
-# graph for each documented class showing the direct and indirect implementation
-# dependencies (inheritance, containment, and class references variables) of the
-# class with other documented classes.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-COLLABORATION_GRAPH = YES
-
-# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for
-# groups, showing the direct groups dependencies.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GROUP_GRAPHS = YES
-
-# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and
-# collaboration diagrams in a style similar to the OMG's Unified Modeling
-# Language.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LOOK = NO
-
-# If the UML_LOOK tag is enabled, the fields and methods are shown inside the
-# class node. If there are many fields or methods and many nodes the graph may
-# become too big to be useful. The UML_LIMIT_NUM_FIELDS threshold limits the
-# number of items for each type to make the size more manageable. Set this to 0
-# for no limit. Note that the threshold may be exceeded by 50% before the limit
-# is enforced. So when you set the threshold to 10, up to 15 fields may appear,
-# but if the number exceeds 15, the total amount of fields shown is limited to
-# 10.
-# Minimum value: 0, maximum value: 100, default value: 10.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-UML_LIMIT_NUM_FIELDS = 10
-
-# If the TEMPLATE_RELATIONS tag is set to YES then the inheritance and
-# collaboration graphs will show the relations between templates and their
-# instances.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-TEMPLATE_RELATIONS = NO
-
-# If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to
-# YES then doxygen will generate a graph for each documented file showing the
-# direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDE_GRAPH = YES
-
-# If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are
-# set to YES then doxygen will generate a graph for each documented file showing
-# the direct and indirect include dependencies of the file with other documented
-# files.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INCLUDED_BY_GRAPH = YES
-
-# If the CALL_GRAPH tag is set to YES then doxygen will generate a call
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable call graphs for selected
-# functions only using the \callgraph command. Disabling a call graph can be
-# accomplished by means of the command \hidecallgraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALL_GRAPH = NO
-
-# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller
-# dependency graph for every global function or class method.
-#
-# Note that enabling this option will significantly increase the time of a run.
-# So in most cases it will be better to enable caller graphs for selected
-# functions only using the \callergraph command. Disabling a caller graph can be
-# accomplished by means of the command \hidecallergraph.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-CALLER_GRAPH = NO
-
-# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical
-# hierarchy of all classes instead of a textual one.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GRAPHICAL_HIERARCHY = YES
-
-# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the
-# dependencies a directory has on other directories in a graphical way. The
-# dependency relations are determined by the #include relations between the
-# files in the directories.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DIRECTORY_GRAPH = YES
-
-# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
-# generated by dot. For an explanation of the image formats see the section
-# output formats in the documentation of the dot tool (Graphviz (see:
-# http://www.graphviz.org/)).
-# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order
-# to make the SVG files visible in IE 9+ (other browsers do not have this
-# requirement).
-# Possible values are: png, png:cairo, png:cairo:cairo, png:cairo:gd, png:gd,
-# png:gd:gd, jpg, jpg:cairo, jpg:cairo:gd, jpg:gd, jpg:gd:gd, gif, gif:cairo,
-# gif:cairo:gd, gif:gd, gif:gd:gd, svg, png:gd, png:gd:gd, png:cairo,
-# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and
-# png:gdiplus:gdiplus.
-# The default value is: png.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_IMAGE_FORMAT = png
-
-# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to
-# enable generation of interactive SVG images that allow zooming and panning.
-#
-# Note that this requires a modern browser other than Internet Explorer. Tested
-# and working are Firefox, Chrome, Safari, and Opera.
-# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make
-# the SVG files visible. Older versions of IE do not have SVG support.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-INTERACTIVE_SVG = NO
-
-# The DOT_PATH tag can be used to specify the path where the dot tool can be
-# found. If left blank, it is assumed the dot tool can be found in the path.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_PATH =
-
-# The DOTFILE_DIRS tag can be used to specify one or more directories that
-# contain dot files that are included in the documentation (see the \dotfile
-# command).
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOTFILE_DIRS =
-
-# The MSCFILE_DIRS tag can be used to specify one or more directories that
-# contain msc files that are included in the documentation (see the \mscfile
-# command).
-
-MSCFILE_DIRS =
-
-# The DIAFILE_DIRS tag can be used to specify one or more directories that
-# contain dia files that are included in the documentation (see the \diafile
-# command).
-
-DIAFILE_DIRS =
-
-# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the
-# path where java can find the plantuml.jar file. If left blank, it is assumed
-# PlantUML is not used or called during a preprocessing step. Doxygen will
-# generate a warning when it encounters a \startuml command in this case and
-# will not generate output for the diagram.
-
-PLANTUML_JAR_PATH =
-
-# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a
-# configuration file for plantuml.
-
-PLANTUML_CFG_FILE =
-
-# When using plantuml, the specified paths are searched for files specified by
-# the !include statement in a plantuml block.
-
-PLANTUML_INCLUDE_PATH =
-
-# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes
-# that will be shown in the graph. If the number of nodes in a graph becomes
-# larger than this value, doxygen will truncate the graph, which is visualized
-# by representing a node as a red box. Note that doxygen if the number of direct
-# children of the root node in a graph is already larger than
-# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that
-# the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
-# Minimum value: 0, maximum value: 10000, default value: 50.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_GRAPH_MAX_NODES = 50
-
-# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
-# generated by dot. A depth value of 3 means that only nodes reachable from the
-# root by following a path via at most 3 edges will be shown. Nodes that lay
-# further from the root node will be omitted. Note that setting this option to 1
-# or 2 may greatly reduce the computation time needed for large code bases. Also
-# note that the size of a graph can be further restricted by
-# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
-# Minimum value: 0, maximum value: 1000, default value: 0.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-MAX_DOT_GRAPH_DEPTH = 0
-
-# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
-# background. This is disabled by default, because dot on Windows does not seem
-# to support this out of the box.
-#
-# Warning: Depending on the platform used, enabling this option may lead to
-# badly anti-aliased labels on the edges of a graph (i.e. they become hard to
-# read).
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_TRANSPARENT = NO
-
-# Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output
-# files in one run (i.e. multiple -o and -T options on the command line). This
-# makes dot run faster, but since only newer versions of dot (>1.8.10) support
-# this, this feature is disabled by default.
-# The default value is: NO.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_MULTI_TARGETS = NO
-
-# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page
-# explaining the meaning of the various boxes and arrows in the dot generated
-# graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-GENERATE_LEGEND = YES
-
-# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate dot
-# files that are used to generate the various graphs.
-# The default value is: YES.
-# This tag requires that the tag HAVE_DOT is set to YES.
-
-DOT_CLEANUP = YES
diff --git a/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java b/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java
index ea95a01..c51c8fa 100644
--- a/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java
+++ b/media/packages/BluetoothMidiService/src/com/android/bluetoothmidiservice/BluetoothPacketDecoder.java
@@ -22,24 +22,41 @@
import java.io.IOException;
/**
- * This is an abstract base class that decodes a packet buffer and passes it to a
- * {@link android.media.midi.MidiReceiver}
+ * This is an abstract base class that decodes a BLE-MIDI packet
+ * buffer and passes it to a {@link android.media.midi.MidiReceiver}
*/
public class BluetoothPacketDecoder extends PacketDecoder {
private static final String TAG = "BluetoothPacketDecoder";
private final byte[] mBuffer;
+ private int mBytesInBuffer;
private MidiBtleTimeTracker mTimeTracker;
- private final int TIMESTAMP_MASK_HIGH = 0x1F80;
- private final int TIMESTAMP_MASK_LOW = 0x7F;
- private final int HEADER_TIMESTAMP_MASK = 0x3F;
+ private int mLowTimestamp;
+ private long mNanoTimestamp;
+
+ private static final int TIMESTAMP_MASK_HIGH = 0x1F80; // top 7 bits
+ private static final int TIMESTAMP_MASK_LOW = 0x7F; // bottom 7 bits
+ private static final int HEADER_TIMESTAMP_MASK = 0x3F; // bottom 6 bits
public BluetoothPacketDecoder(int maxPacketSize) {
mBuffer = new byte[maxPacketSize];
}
+ private void flushOutput(MidiReceiver receiver) {
+ if (mBytesInBuffer > 0) {
+ try {
+ receiver.send(mBuffer, 0, mBytesInBuffer, mNanoTimestamp);
+ } catch (IOException e) {
+ // ???
+ }
+ mBytesInBuffer = 0;
+ }
+ }
+
+ // NOTE: this code allows running status across packets,
+ // although the specification does not allow that.
@Override
public void decodePacket(byte[] buffer, MidiReceiver receiver) {
if (mTimeTracker == null) {
@@ -47,14 +64,11 @@
}
int length = buffer.length;
-
- // NOTE his code allows running status across packets,
- // although the specification does not allow that.
-
if (length < 1) {
Log.e(TAG, "empty packet");
return;
}
+
byte header = buffer[0];
if ((header & 0xC0) != 0x80) {
Log.e(TAG, "packet does not start with header");
@@ -64,52 +78,46 @@
// shift bits 0 - 5 to bits 7 - 12
int highTimestamp = (header & HEADER_TIMESTAMP_MASK) << 7;
boolean lastWasTimestamp = false;
- int dataCount = 0;
int previousLowTimestamp = 0;
- long nanoTimestamp = 0;
- int currentTimestamp = 0;
+ int currentTimestamp = highTimestamp | mLowTimestamp;
- // iterate through the rest of the packet, separating MIDI data from timestamps
+ // Iterate through the rest of the packet, separating MIDI data from timestamps.
for (int i = 1; i < buffer.length; i++) {
byte b = buffer[i];
+ // Is this a timestamp byte?
if ((b & 0x80) != 0 && !lastWasTimestamp) {
lastWasTimestamp = true;
- int lowTimestamp = b & TIMESTAMP_MASK_LOW;
- if (lowTimestamp < previousLowTimestamp) {
+ mLowTimestamp = b & TIMESTAMP_MASK_LOW;
+
+ // If the low timestamp byte wraps within the packet then
+ // increment the high timestamp byte.
+ if (mLowTimestamp < previousLowTimestamp) {
highTimestamp = (highTimestamp + 0x0080) & TIMESTAMP_MASK_HIGH;
}
- previousLowTimestamp = lowTimestamp;
+ previousLowTimestamp = mLowTimestamp;
- int newTimestamp = highTimestamp | lowTimestamp;
+ // If the timestamp advances then send any pending data.
+ int newTimestamp = highTimestamp | mLowTimestamp;
if (newTimestamp != currentTimestamp) {
- if (dataCount > 0) {
- // send previous message separately since it has a different timestamp
- try {
- receiver.send(mBuffer, 0, dataCount, nanoTimestamp);
- } catch (IOException e) {
- // ???
- }
- dataCount = 0;
- }
+ // Send previous message separately since it has a different timestamp.
+ flushOutput(receiver);
currentTimestamp = newTimestamp;
}
- // calculate nanoTimestamp
+ // Calculate MIDI nanosecond timestamp from BLE timestamp.
long now = System.nanoTime();
- nanoTimestamp = mTimeTracker.convertTimestampToNanotime(currentTimestamp, now);
+ mNanoTimestamp = mTimeTracker.convertTimestampToNanotime(currentTimestamp, now);
} else {
lastWasTimestamp = false;
- mBuffer[dataCount++] = b;
+ // Flush if full before adding more data.
+ if (mBytesInBuffer == mBuffer.length) {
+ flushOutput(receiver);
+ }
+ mBuffer[mBytesInBuffer++] = b;
}
}
- if (dataCount > 0) {
- try {
- receiver.send(mBuffer, 0, dataCount, nanoTimestamp);
- } catch (IOException e) {
- // ???
- }
- }
+ flushOutput(receiver);
}
}
diff --git a/mms/java/android/telephony/MmsManager.java b/mms/java/android/telephony/MmsManager.java
index f07cd5e..805c6db 100644
--- a/mms/java/android/telephony/MmsManager.java
+++ b/mms/java/android/telephony/MmsManager.java
@@ -56,7 +56,8 @@
* @param sentIntent if not NULL this <code>PendingIntent</code> is broadcast when the message
* is successfully sent, or failed
* @param messageId an id that uniquely identifies the message requested to be sent.
- * Used for logging and diagnostics purposes. The id may be 0.
+ * Used for logging and diagnostics purposes. The id may be 0. The messageId
+ * can be found in radio logs from logcat.
*/
public void sendMultimediaMessage(int subId, @NonNull Uri contentUri,
@Nullable String locationUrl, @Nullable Bundle configOverrides,
@@ -86,8 +87,8 @@
* @param downloadedIntent if not NULL this <code>PendingIntent</code> is
* broadcast when the message is downloaded, or the download is failed
* @param messageId an id that uniquely identifies the message requested to be downloaded.
- * Used for logging and diagnostics purposes. The id may be 0.
- * downloaded.
+ * Used for logging and diagnostics purposes. The id may be 0. The messageId
+ * can be found in radio logs from logcat.
* @throws IllegalArgumentException if locationUrl or contentUri is empty
*/
public void downloadMultimediaMessage(int subId, @NonNull String locationUrl,
diff --git a/packages/CarSystemUI/TEST_MAPPING b/packages/CarSystemUI/TEST_MAPPING
index 6056ddf..f520c8a 100644
--- a/packages/CarSystemUI/TEST_MAPPING
+++ b/packages/CarSystemUI/TEST_MAPPING
@@ -8,5 +8,15 @@
}
]
}
+ ],
+ "auto-end-to-end-postsubmit": [
+ {
+ "name": "AndroidAutoUiTests",
+ "options" : [
+ {
+ "include-filter": "android.test.functional.auto.apps.NotificationHelperTest"
+ }
+ ]
+ }
]
}
diff --git a/packages/CarrierDefaultApp/AndroidManifest.xml b/packages/CarrierDefaultApp/AndroidManifest.xml
index f116546..4473610 100644
--- a/packages/CarrierDefaultApp/AndroidManifest.xml
+++ b/packages/CarrierDefaultApp/AndroidManifest.xml
@@ -33,7 +33,8 @@
android:directBootAware="true"
android:usesCleartextTraffic="true"
android:icon="@mipmap/ic_launcher_android">
- <receiver android:name="com.android.carrierdefaultapp.CarrierDefaultBroadcastReceiver">
+ <receiver android:name="com.android.carrierdefaultapp.CarrierDefaultBroadcastReceiver"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.internal.telephony.CARRIER_SIGNAL_REDIRECTED" />
<action android:name="com.android.internal.telephony.CARRIER_SIGNAL_RESET" />
@@ -57,7 +58,8 @@
<activity-alias
android:name="com.android.carrierdefaultapp.URLHandlerActivity"
android:targetActivity="com.android.carrierdefaultapp.CaptivePortalLoginActivity"
- android:enabled="false" >
+ android:enabled="false"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
diff --git a/packages/CompanionDeviceManager/AndroidManifest.xml b/packages/CompanionDeviceManager/AndroidManifest.xml
index ea9b52c..5247ac9 100644
--- a/packages/CompanionDeviceManager/AndroidManifest.xml
+++ b/packages/CompanionDeviceManager/AndroidManifest.xml
@@ -48,7 +48,8 @@
<activity
android:name=".DeviceChooserActivity"
android:theme="@style/ChooserActivity"
- android:permission="android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE">
+ android:permission="android.permission.BIND_COMPANION_DEVICE_MANAGER_SERVICE"
+ android:exported="true">
<!--TODO include url scheme filter similar to PrintSpooler -->
<intent-filter>
<action android:name="android.companiondevice.START_DISCOVERY" />
diff --git a/packages/CtsShim/build/shim/AndroidManifest.xml b/packages/CtsShim/build/shim/AndroidManifest.xml
index 3e546f1e..7d2626d 100644
--- a/packages/CtsShim/build/shim/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim/AndroidManifest.xml
@@ -32,7 +32,8 @@
<!-- These activities don't actually exist; define them just to test the filters !-->
<!-- install test; high priority filter DENIED -->
- <activity android:name=".InstallPriority">
+ <activity android:name=".InstallPriority"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.INFO" />
diff --git a/packages/CtsShim/build/shim_priv/AndroidManifest.xml b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
index 9ab12c9..1f285e9 100644
--- a/packages/CtsShim/build/shim_priv/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv/AndroidManifest.xml
@@ -33,7 +33,8 @@
<!-- These activities don't actually exist; define them just to test the filters !-->
<!-- install test; [some] high priority filters granted -->
- <activity android:name=".InstallPriority">
+ <activity android:name=".InstallPriority"
+ android:exported="true">
<!-- normal actions; priority will be granted -->
<intent-filter android:priority="100">
<action android:name="android.intent.action.SEARCH" />
@@ -57,7 +58,8 @@
</activity>
<!-- upgrade test; single, equivalent filter -->
- <activity android:name=".UpgradeMatch">
+ <activity android:name=".UpgradeMatch"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.MATCH" />
<category android:name="android.intent.category.INFO" />
@@ -65,7 +67,8 @@
</activity>
<!-- upgrade test; multiple, equivalent filters -->
- <activity android:name=".UpgradeMatchMultiple">
+ <activity android:name=".UpgradeMatchMultiple"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.MATCH_MULTIPLE" />
<category android:name="android.intent.category.INFO" />
@@ -83,7 +86,8 @@
</activity>
<!-- upgrade test; lower priority -->
- <activity android:name=".UpgradeLowerPriority">
+ <activity android:name=".UpgradeLowerPriority"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.LOWER_PRIORITY" />
<category android:name="android.intent.category.INFO" />
@@ -91,7 +95,8 @@
</activity>
<!-- upgrade test; action subset -->
- <activity android:name=".UpgradeActionSubset">
+ <activity android:name=".UpgradeActionSubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.ACTION_SUB" />
<action android:name="com.android.cts.action.ACTION_SUB_2" />
@@ -101,7 +106,8 @@
</activity>
<!-- upgrade test; category subset -->
- <activity android:name=".UpgradeCategorySubset">
+ <activity android:name=".UpgradeCategorySubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.CATEGORY_SUB" />
<category android:name="android.intent.category.INFO" />
@@ -110,7 +116,8 @@
</activity>
<!-- upgrade test; scheme subset -->
- <activity android:name=".UpgradeSchemeSubset">
+ <activity android:name=".UpgradeSchemeSubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.SCHEME_SUB" />
<data android:scheme="content" />
@@ -120,7 +127,8 @@
</activity>
<!-- upgrade test; authority subset -->
- <activity android:name=".UpgradeAuthoritySubset">
+ <activity android:name=".UpgradeAuthoritySubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.AUTHORITY_SUB" />
<data android:host="www.google.com" android:port="80" />
@@ -132,7 +140,8 @@
<!-- upgrade test; new action -->
- <activity android:name=".UpgradeNewAction">
+ <activity android:name=".UpgradeNewAction"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_ACTION" />
<category android:name="android.intent.category.DEFAULT" />
@@ -140,7 +149,8 @@
</activity>
<!-- upgrade test; new category -->
- <activity android:name=".UpgradeNewCategory">
+ <activity android:name=".UpgradeNewCategory"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_CATEGORY" />
<category android:name="android.intent.category.DEFAULT" />
@@ -148,7 +158,8 @@
</activity>
<!-- upgrade test; new scheme -->
- <activity android:name=".UpgradeNewScheme">
+ <activity android:name=".UpgradeNewScheme"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_SCHEME" />
<data android:scheme="content" />
@@ -156,7 +167,8 @@
</activity>
<!-- upgrade test; new authority -->
- <activity android:name=".UpgradeNewAuthority">
+ <activity android:name=".UpgradeNewAuthority"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_AUTHORITY" />
<data android:host="www.google.com" android:port="80" />
diff --git a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
index 2354061..c63cba9e 100644
--- a/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
+++ b/packages/CtsShim/build/shim_priv_upgrade/AndroidManifest.xml
@@ -30,7 +30,8 @@
<!-- These activities don't actually exist; define them just to test the filters !-->
<!-- install test; [some] high priority filters granted -->
- <activity android:name=".InstallPriority">
+ <activity android:name=".InstallPriority"
+ android:exported="true">
<!-- normal actions; priority will be granted -->
<intent-filter android:priority="100">
<action android:name="android.intent.action.SEARCH" />
@@ -54,7 +55,8 @@
</activity>
<!-- upgrade test; single, equivalent filter -->
- <activity android:name=".UpgradeMatch">
+ <activity android:name=".UpgradeMatch"
+ android:exported="true">
<intent-filter android:priority="500">
<action android:name="com.android.cts.action.MATCH" />
<category android:name="android.intent.category.INFO" />
@@ -62,14 +64,16 @@
</activity>
<!-- upgrade test; multiple, equivalent filters -->
- <activity android:name=".UpgradeMatchMultiple">
+ <activity android:name=".UpgradeMatchMultiple"
+ android:exported="true">
<intent-filter android:priority="500">
<action android:name="com.android.cts.action.MATCH_MULTIPLE" />
</intent-filter>
</activity>
<!-- upgrade test; lower priority is okay -->
- <activity android:name=".UpgradeLowerPriority">
+ <activity android:name=".UpgradeLowerPriority"
+ android:exported="true">
<intent-filter android:priority="75">
<action android:name="com.android.cts.action.LOWER_PRIORITY" />
<category android:name="android.intent.category.INFO" />
@@ -77,7 +81,8 @@
</activity>
<!-- upgrade test; action subset is "equivalent" -->
- <activity android:name=".UpgradeActionSubset">
+ <activity android:name=".UpgradeActionSubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.ACTION_SUB_2" />
<category android:name="android.intent.category.DEFAULT" />
@@ -85,7 +90,8 @@
</activity>
<!-- upgrade test; category subset is "equivalent" -->
- <activity android:name=".UpgradeCategorySubset">
+ <activity android:name=".UpgradeCategorySubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.CATEGORY_SUB" />
<category android:name="android.intent.category.INFO" />
@@ -93,7 +99,8 @@
</activity>
<!-- upgrade test; scheme subset is "equivalent" -->
- <activity android:name=".UpgradeSchemeSubset">
+ <activity android:name=".UpgradeSchemeSubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.SCHEME_SUB" />
<data android:scheme="flubber" />
@@ -101,7 +108,8 @@
</activity>
<!-- upgrade test; authority subset is "equivalent" -->
- <activity android:name=".UpgradeAuthoritySubset">
+ <activity android:name=".UpgradeAuthoritySubset"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.AUTHORITY_SUB" />
<data android:host="goo.gl" android:port="443" />
@@ -109,7 +117,8 @@
</activity>
<!-- upgrade test; new activity cannot get >0 priority -->
- <activity android:name=".UpgradeNewActivity">
+ <activity android:name=".UpgradeNewActivity"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_ACTIVITY" />
<category android:name="android.intent.category.INFO" />
@@ -117,7 +126,8 @@
</activity>
<!-- upgrade test; new action cannot get >0 priority -->
- <activity android:name=".UpgradeNewAction">
+ <activity android:name=".UpgradeNewAction"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_ACTION" />
<action android:name="com.android.cts.action.NEW_ACTION_2" />
@@ -125,7 +135,8 @@
</activity>
<!-- upgrade test; new category cannot get >0 priority -->
- <activity android:name=".UpgradeNewCategory">
+ <activity android:name=".UpgradeNewCategory"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_CATEGORY" />
<category android:name="android.intent.category.INFO" />
@@ -135,7 +146,8 @@
</activity>
<!-- upgrade test; new scheme cannot get >0 priority -->
- <activity android:name=".UpgradeNewScheme">
+ <activity android:name=".UpgradeNewScheme"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_SCHEME" />
<data android:scheme="content" />
@@ -146,7 +158,8 @@
</activity>
<!-- upgrade test; new authority cannot get >0 priority -->
- <activity android:name=".UpgradeNewAuthority">
+ <activity android:name=".UpgradeNewAuthority"
+ android:exported="true">
<intent-filter android:priority="100">
<action android:name="com.android.cts.action.NEW_AUTHORITY" />
<data android:host="www.google.com" android:port="80" />
diff --git a/packages/EasterEgg/AndroidManifest.xml b/packages/EasterEgg/AndroidManifest.xml
index 7f76a45..2494701 100644
--- a/packages/EasterEgg/AndroidManifest.xml
+++ b/packages/EasterEgg/AndroidManifest.xml
@@ -12,7 +12,8 @@
<activity android:name=".quares.QuaresActivity"
android:icon="@drawable/q_icon"
android:label="@string/q_egg_name"
- android:theme="@style/QuaresTheme">
+ android:theme="@style/QuaresTheme"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
@@ -26,7 +27,8 @@
android:configChanges="orientation|keyboardHidden|screenSize|uiMode"
android:icon="@drawable/p_icon"
android:label="@string/p_egg_name"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
diff --git a/packages/ExternalStorageProvider/AndroidManifest.xml b/packages/ExternalStorageProvider/AndroidManifest.xml
index dfe879f..9b43d9f 100644
--- a/packages/ExternalStorageProvider/AndroidManifest.xml
+++ b/packages/ExternalStorageProvider/AndroidManifest.xml
@@ -24,7 +24,8 @@
android:permission="android.permission.WRITE_MEDIA_STORAGE" />
</provider>
- <receiver android:name=".MountReceiver">
+ <receiver android:name=".MountReceiver"
+ android:exported="true">
<intent-filter>
<action android:name="android.os.storage.action.VOLUME_STATE_CHANGED" />
</intent-filter>
diff --git a/packages/FusedLocation/Android.bp b/packages/FusedLocation/Android.bp
index c70ab71..242caab 100644
--- a/packages/FusedLocation/Android.bp
+++ b/packages/FusedLocation/Android.bp
@@ -42,5 +42,7 @@
"mockito-target-minus-junit4",
"truth-prebuilt",
],
+ platform_apis: true,
+ certificate: "platform",
test_suites: ["device-tests"]
}
\ No newline at end of file
diff --git a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
index fb7dbc8..781efc1 100644
--- a/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
+++ b/packages/FusedLocation/src/com/android/location/fused/FusedLocationProvider.java
@@ -30,9 +30,7 @@
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationRequest;
-import android.os.Bundle;
import android.os.Looper;
-import android.os.Parcelable;
import android.os.WorkSource;
import com.android.internal.annotations.GuardedBy;
@@ -64,7 +62,7 @@
private static final long MAX_LOCATION_COMPARISON_NS = 11 * 1000000000L; // 11 seconds
- private final Object mLock = new Object();
+ final Object mLock = new Object();
private final Context mContext;
private final LocationManager mLocationManager;
@@ -73,7 +71,7 @@
private final BroadcastReceiver mUserChangeReceiver;
@GuardedBy("mLock")
- private ProviderRequestUnbundled mRequest;
+ ProviderRequestUnbundled mRequest;
@GuardedBy("mLock")
private WorkSource mWorkSource;
@GuardedBy("mLock")
@@ -84,12 +82,12 @@
@GuardedBy("mLock")
@Nullable private Location mFusedLocation;
@GuardedBy("mLock")
- @Nullable private Location mGpsLocation;
+ @Nullable Location mGpsLocation;
@GuardedBy("mLock")
- @Nullable private Location mNetworkLocation;
+ @Nullable Location mNetworkLocation;
public FusedLocationProvider(Context context) {
- super(TAG, PROPERTIES);
+ super(context, TAG, PROPERTIES);
mContext = context;
mLocationManager = context.getSystemService(LocationManager.class);
@@ -232,7 +230,7 @@
}
@GuardedBy("mLock")
- private void reportBestLocationLocked() {
+ void reportBestLocationLocked() {
Location bestLocation = chooseBestLocation(mGpsLocation, mNetworkLocation);
if (bestLocation == mFusedLocation) {
return;
@@ -243,28 +241,10 @@
return;
}
- // copy NO_GPS_LOCATION extra from mNetworkLocation into mFusedLocation
- if (mNetworkLocation != null) {
- Bundle srcExtras = mNetworkLocation.getExtras();
- if (srcExtras != null) {
- Parcelable srcParcelable =
- srcExtras.getParcelable(LocationProviderBase.EXTRA_NO_GPS_LOCATION);
- if (srcParcelable instanceof Location) {
- Bundle dstExtras = mFusedLocation.getExtras();
- if (dstExtras == null) {
- dstExtras = new Bundle();
- mFusedLocation.setExtras(dstExtras);
- }
- dstExtras.putParcelable(LocationProviderBase.EXTRA_NO_GPS_LOCATION,
- srcParcelable);
- }
- }
- }
-
reportLocation(mFusedLocation);
}
- private void onUserChanged() {
+ void onUserChanged() {
// clear cached locations when the user changes to prevent leaking user information
synchronized (mLock) {
mFusedLocation = null;
diff --git a/packages/FusedLocation/test/AndroidManifest.xml b/packages/FusedLocation/test/AndroidManifest.xml
index d6c4107..c00d15e 100644
--- a/packages/FusedLocation/test/AndroidManifest.xml
+++ b/packages/FusedLocation/test/AndroidManifest.xml
@@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
+ <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
<application android:label="FusedLocation Tests">
<uses-library android:name="android.test.runner" />
diff --git a/packages/FusedLocation/test/src/com/android/location/fused/tests/FusedLocationServiceTest.java b/packages/FusedLocation/test/src/com/android/location/fused/tests/FusedLocationServiceTest.java
index d1a379a..38f3bcd 100644
--- a/packages/FusedLocation/test/src/com/android/location/fused/tests/FusedLocationServiceTest.java
+++ b/packages/FusedLocation/test/src/com/android/location/fused/tests/FusedLocationServiceTest.java
@@ -52,7 +52,6 @@
import java.io.FileInputStream;
import java.io.IOException;
import java.util.Collections;
-import java.util.List;
import java.util.Random;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
@@ -200,7 +199,7 @@
}
@Override
- public void onSetAdditionalProviderPackages(List<String> packageNames) {
+ public void onSetFeatureId(String featureId) {
}
diff --git a/packages/InputDevices/AndroidManifest.xml b/packages/InputDevices/AndroidManifest.xml
index 9507c9f..da8c0d3 100644
--- a/packages/InputDevices/AndroidManifest.xml
+++ b/packages/InputDevices/AndroidManifest.xml
@@ -11,7 +11,8 @@
android:directBootAware="true">
<receiver android:name=".InputDeviceReceiver"
- android:label="@string/keyboard_layouts_label">
+ android:label="@string/keyboard_layouts_label"
+ android:exported="true">
<intent-filter>
<action android:name="android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS" />
</intent-filter>
diff --git a/packages/InputDevices/res/values-mk/strings.xml b/packages/InputDevices/res/values-mk/strings.xml
index 44069a2..220dd67 100644
--- a/packages/InputDevices/res/values-mk/strings.xml
+++ b/packages/InputDevices/res/values-mk/strings.xml
@@ -3,12 +3,12 @@
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="8016145283189546017">"Влезни уреди"</string>
<string name="keyboard_layouts_label" msgid="6688773268302087545">"Тастатура за Android"</string>
- <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"Англиски (О.К.)"</string>
- <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"Англиски (САД)"</string>
- <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"Англиски (САД), меѓународен стил"</string>
- <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"Англиски (САД), Colemak стил"</string>
- <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"Англиски (САД), Dvorak стил"</string>
- <string name="keyboard_layout_english_us_workman_label" msgid="2944541595262173111">"Англиски (САД), Workman стил"</string>
+ <string name="keyboard_layout_english_uk_label" msgid="6664258463319999632">"англиски (О.К.)"</string>
+ <string name="keyboard_layout_english_us_label" msgid="8994890249649106291">"англиски (САД)"</string>
+ <string name="keyboard_layout_english_us_intl" msgid="3705168594034233583">"англиски (САД), меѓународен стил"</string>
+ <string name="keyboard_layout_english_us_colemak_label" msgid="4194969610343455380">"англиски (САД), Colemak стил"</string>
+ <string name="keyboard_layout_english_us_dvorak_label" msgid="793528923171145202">"англиски (САД), Dvorak стил"</string>
+ <string name="keyboard_layout_english_us_workman_label" msgid="2944541595262173111">"англиски (САД), Workman стил"</string>
<string name="keyboard_layout_german_label" msgid="8451565865467909999">"Германски"</string>
<string name="keyboard_layout_french_label" msgid="813450119589383723">"Француски"</string>
<string name="keyboard_layout_french_ca_label" msgid="365352601060604832">"Француски (Канада)"</string>
diff --git a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
index e87148e..4c29614 100644
--- a/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
+++ b/packages/LocalTransport/src/com/android/localtransport/LocalTransport.java
@@ -333,7 +333,7 @@
try (FileOutputStream out = new FileOutputStream(element)) {
out.write(op.value, 0, op.value.length);
} catch (IOException e) {
- Log.e(TAG, "Unable to update key file " + element);
+ Log.e(TAG, "Unable to update key file " + element, e);
return TRANSPORT_ERROR;
}
}
diff --git a/packages/OsuLogin/AndroidManifest.xml b/packages/OsuLogin/AndroidManifest.xml
index a428cb3..730cd87 100644
--- a/packages/OsuLogin/AndroidManifest.xml
+++ b/packages/OsuLogin/AndroidManifest.xml
@@ -31,7 +31,8 @@
<activity android:name="com.android.hotspot2.osulogin.OsuLoginActivity"
android:label="@string/action_bar_label"
android:theme="@style/AppTheme"
- android:configChanges="keyboardHidden|orientation|screenSize">
+ android:configChanges="keyboardHidden|orientation|screenSize"
+ android:exported="true">
<intent-filter>
<action android:name="android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
diff --git a/packages/OsuLogin/res/values-af/strings.xml b/packages/OsuLogin/res/values-af/strings.xml
new file mode 100644
index 0000000..bfeee10
--- /dev/null
+++ b/packages/OsuLogin/res/values-af/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Sluit aanlyn aan"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Kon nie aanmeld nie"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-am/strings.xml b/packages/OsuLogin/res/values-am/strings.xml
new file mode 100644
index 0000000..e27c578
--- /dev/null
+++ b/packages/OsuLogin/res/values-am/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"የመስመር ላይ ምዝገባ"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ምዝገባ አልተሳካም"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ar/strings.xml b/packages/OsuLogin/res/values-ar/strings.xml
new file mode 100644
index 0000000..b72d7c1
--- /dev/null
+++ b/packages/OsuLogin/res/values-ar/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"الاشتراك على الإنترنت"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"تعذّر الاشتراك."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-as/strings.xml b/packages/OsuLogin/res/values-as/strings.xml
new file mode 100644
index 0000000..422de32
--- /dev/null
+++ b/packages/OsuLogin/res/values-as/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"অনলাইনত ছাই আপ কৰক"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ছাইন আপ কৰিব পৰা নগ’ল"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-az/strings.xml b/packages/OsuLogin/res/values-az/strings.xml
new file mode 100644
index 0000000..977f939
--- /dev/null
+++ b/packages/OsuLogin/res/values-az/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Onlayn Qeydiyyat"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Qeydiyyat alınmadı"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-b+sr+Latn/strings.xml b/packages/OsuLogin/res/values-b+sr+Latn/strings.xml
new file mode 100644
index 0000000..6eb2cc1
--- /dev/null
+++ b/packages/OsuLogin/res/values-b+sr+Latn/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Onlajn registracija"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registracija nije uspela"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-be/strings.xml b/packages/OsuLogin/res/values-be/strings.xml
new file mode 100644
index 0000000..158c3f2
--- /dev/null
+++ b/packages/OsuLogin/res/values-be/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Зарэгістравацца ў інтэрнэце"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Не ўдалося зарэгістравацца"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-bg/strings.xml b/packages/OsuLogin/res/values-bg/strings.xml
new file mode 100644
index 0000000..ea3145d
--- /dev/null
+++ b/packages/OsuLogin/res/values-bg/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлайн регистрация"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Регистрацията не бе успешна"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-bn/strings.xml b/packages/OsuLogin/res/values-bn/strings.xml
new file mode 100644
index 0000000..c9f615e
--- /dev/null
+++ b/packages/OsuLogin/res/values-bn/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"অনলাইনে সাইন-আপ করুন"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"সাইন-আপ করা যায়নি"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-bs/strings.xml b/packages/OsuLogin/res/values-bs/strings.xml
new file mode 100644
index 0000000..e9b9751
--- /dev/null
+++ b/packages/OsuLogin/res/values-bs/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online registracija"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registracija nije uspjela"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ca/strings.xml b/packages/OsuLogin/res/values-ca/strings.xml
new file mode 100644
index 0000000..7d93096
--- /dev/null
+++ b/packages/OsuLogin/res/values-ca/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registre en línia"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Ha fallat el registre"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-cs/strings.xml b/packages/OsuLogin/res/values-cs/strings.xml
new file mode 100644
index 0000000..b9cb794
--- /dev/null
+++ b/packages/OsuLogin/res/values-cs/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online registrace"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registrace selhala"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-da/strings.xml b/packages/OsuLogin/res/values-da/strings.xml
new file mode 100644
index 0000000..68c93b7
--- /dev/null
+++ b/packages/OsuLogin/res/values-da/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online registrering"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registrering mislykkedes"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-de/strings.xml b/packages/OsuLogin/res/values-de/strings.xml
new file mode 100644
index 0000000..7e5a310
--- /dev/null
+++ b/packages/OsuLogin/res/values-de/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online-Registrierung"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registrierung fehlgeschlagen"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-el/strings.xml b/packages/OsuLogin/res/values-el/strings.xml
new file mode 100644
index 0000000..a58e481
--- /dev/null
+++ b/packages/OsuLogin/res/values-el/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Εγγραφή στο διαδίκτυο"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Αποτυχία εγγραφής"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-en-rAU/strings.xml b/packages/OsuLogin/res/values-en-rAU/strings.xml
new file mode 100644
index 0000000..fbbcab1
--- /dev/null
+++ b/packages/OsuLogin/res/values-en-rAU/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online sign-up"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Sign-up failed"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-en-rCA/strings.xml b/packages/OsuLogin/res/values-en-rCA/strings.xml
new file mode 100644
index 0000000..fbbcab1
--- /dev/null
+++ b/packages/OsuLogin/res/values-en-rCA/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online sign-up"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Sign-up failed"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-en-rGB/strings.xml b/packages/OsuLogin/res/values-en-rGB/strings.xml
new file mode 100644
index 0000000..fbbcab1
--- /dev/null
+++ b/packages/OsuLogin/res/values-en-rGB/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online sign-up"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Sign-up failed"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-en-rIN/strings.xml b/packages/OsuLogin/res/values-en-rIN/strings.xml
new file mode 100644
index 0000000..fbbcab1
--- /dev/null
+++ b/packages/OsuLogin/res/values-en-rIN/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online sign-up"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Sign-up failed"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-en-rXC/strings.xml b/packages/OsuLogin/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..af7ff67
--- /dev/null
+++ b/packages/OsuLogin/res/values-en-rXC/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online Sign Up"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Sign-up failed"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-es-rUS/strings.xml b/packages/OsuLogin/res/values-es-rUS/strings.xml
new file mode 100644
index 0000000..144804c
--- /dev/null
+++ b/packages/OsuLogin/res/values-es-rUS/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registrarse en línea"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Se produjo un error de registro"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-es/strings.xml b/packages/OsuLogin/res/values-es/strings.xml
new file mode 100644
index 0000000..3ad95cd8
--- /dev/null
+++ b/packages/OsuLogin/res/values-es/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registro online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Error al completar el registro"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-et/strings.xml b/packages/OsuLogin/res/values-et/strings.xml
new file mode 100644
index 0000000..94c5cea
--- /dev/null
+++ b/packages/OsuLogin/res/values-et/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Veebis registreerimine"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registreerimine ebaõnnestus"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-eu/strings.xml b/packages/OsuLogin/res/values-eu/strings.xml
new file mode 100644
index 0000000..30caa87
--- /dev/null
+++ b/packages/OsuLogin/res/values-eu/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Sarean izen-ematea"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Ezin izan da eman izena"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-fa/strings.xml b/packages/OsuLogin/res/values-fa/strings.xml
new file mode 100644
index 0000000..3005203
--- /dev/null
+++ b/packages/OsuLogin/res/values-fa/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ثبتنام آنلاین"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ثبتنام انجام نشد"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-fi/strings.xml b/packages/OsuLogin/res/values-fi/strings.xml
new file mode 100644
index 0000000..24eac8a
--- /dev/null
+++ b/packages/OsuLogin/res/values-fi/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Rekisteröidy verkossa"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Rekisteröityminen ei onnistunut"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-fr-rCA/strings.xml b/packages/OsuLogin/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..bcaa662
--- /dev/null
+++ b/packages/OsuLogin/res/values-fr-rCA/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Inscription en ligne"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Échec de l\'inscription"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-fr/strings.xml b/packages/OsuLogin/res/values-fr/strings.xml
new file mode 100644
index 0000000..bcaa662
--- /dev/null
+++ b/packages/OsuLogin/res/values-fr/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Inscription en ligne"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Échec de l\'inscription"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-gl/strings.xml b/packages/OsuLogin/res/values-gl/strings.xml
new file mode 100644
index 0000000..5fc4444
--- /dev/null
+++ b/packages/OsuLogin/res/values-gl/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Rexistro en liña"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Produciuse un erro co rexistro"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-gu/strings.xml b/packages/OsuLogin/res/values-gu/strings.xml
new file mode 100644
index 0000000..8449963
--- /dev/null
+++ b/packages/OsuLogin/res/values-gu/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ઑનલાઇન સાઇન અપ કરો"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"સાઇન અપ નિષ્ફળ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-hi/strings.xml b/packages/OsuLogin/res/values-hi/strings.xml
new file mode 100644
index 0000000..9e07438
--- /dev/null
+++ b/packages/OsuLogin/res/values-hi/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ऑनलाइन साइन अप करें"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"साइन अप नहीं किया जा सका"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-hr/strings.xml b/packages/OsuLogin/res/values-hr/strings.xml
new file mode 100644
index 0000000..e9b9751
--- /dev/null
+++ b/packages/OsuLogin/res/values-hr/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online registracija"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registracija nije uspjela"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-hu/strings.xml b/packages/OsuLogin/res/values-hu/strings.xml
new file mode 100644
index 0000000..cb0e036
--- /dev/null
+++ b/packages/OsuLogin/res/values-hu/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online regisztráció"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"A regisztráció nem sikerült"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-hy/strings.xml b/packages/OsuLogin/res/values-hy/strings.xml
new file mode 100644
index 0000000..ae1c36a
--- /dev/null
+++ b/packages/OsuLogin/res/values-hy/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Առցանց գրանցում"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Չհաջողվեց գրանցվել"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-in/strings.xml b/packages/OsuLogin/res/values-in/strings.xml
new file mode 100644
index 0000000..6aaf694
--- /dev/null
+++ b/packages/OsuLogin/res/values-in/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Pendaftaran Online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Pendaftaran gagal"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-is/strings.xml b/packages/OsuLogin/res/values-is/strings.xml
new file mode 100644
index 0000000..f1ae520
--- /dev/null
+++ b/packages/OsuLogin/res/values-is/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Skráning á netinu"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Skráning mistókst"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-it/strings.xml b/packages/OsuLogin/res/values-it/strings.xml
new file mode 100644
index 0000000..fbff7b0
--- /dev/null
+++ b/packages/OsuLogin/res/values-it/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registrazione online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registrazione non riuscita"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-iw/strings.xml b/packages/OsuLogin/res/values-iw/strings.xml
new file mode 100644
index 0000000..866ef88
--- /dev/null
+++ b/packages/OsuLogin/res/values-iw/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"הרשמה אונליין"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ההרשמה נכשלה"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ja/strings.xml b/packages/OsuLogin/res/values-ja/strings.xml
new file mode 100644
index 0000000..8a220d6
--- /dev/null
+++ b/packages/OsuLogin/res/values-ja/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"オンライン登録"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"登録できませんでした"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ka/strings.xml b/packages/OsuLogin/res/values-ka/strings.xml
new file mode 100644
index 0000000..bf08006
--- /dev/null
+++ b/packages/OsuLogin/res/values-ka/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ონლაინ რეგისტრაცია"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"რეგისტრაცია ვერ მოხერხდა"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-kk/strings.xml b/packages/OsuLogin/res/values-kk/strings.xml
new file mode 100644
index 0000000..8b87356
--- /dev/null
+++ b/packages/OsuLogin/res/values-kk/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлайн тіркелу"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Тіркелмеді."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-km/strings.xml b/packages/OsuLogin/res/values-km/strings.xml
new file mode 100644
index 0000000..f58ccc3
--- /dev/null
+++ b/packages/OsuLogin/res/values-km/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ការចុះឈ្មោះលើអ៊ីនធឺណិត"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ការចុះឈ្មោះមិនបានសម្រេច"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-kn/strings.xml b/packages/OsuLogin/res/values-kn/strings.xml
new file mode 100644
index 0000000..49a6562
--- /dev/null
+++ b/packages/OsuLogin/res/values-kn/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ಆನ್ಲೈನ್ ಸೈನ್ ಅಪ್"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ಸೈನ್ ಅಪ್ ವಿಫಲವಾಗಿದೆ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ko/strings.xml b/packages/OsuLogin/res/values-ko/strings.xml
new file mode 100644
index 0000000..e647ca0
--- /dev/null
+++ b/packages/OsuLogin/res/values-ko/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"온라인 가입"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"가입에 실패했습니다."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ky/strings.xml b/packages/OsuLogin/res/values-ky/strings.xml
new file mode 100644
index 0000000..42da248
--- /dev/null
+++ b/packages/OsuLogin/res/values-ky/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Интернет аркылуу катталуу"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Катталган жоксуз"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-lo/strings.xml b/packages/OsuLogin/res/values-lo/strings.xml
new file mode 100644
index 0000000..9ff2241
--- /dev/null
+++ b/packages/OsuLogin/res/values-lo/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ສະໝັກອອນລາຍ"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ສະໝັກບໍ່ສຳເລັດ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-lt/strings.xml b/packages/OsuLogin/res/values-lt/strings.xml
new file mode 100644
index 0000000..1a4c06e
--- /dev/null
+++ b/packages/OsuLogin/res/values-lt/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Internetinis prisiregistravimas"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Nepavyko prisiregistruoti"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-lv/strings.xml b/packages/OsuLogin/res/values-lv/strings.xml
new file mode 100644
index 0000000..11cdb97
--- /dev/null
+++ b/packages/OsuLogin/res/values-lv/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Reģistrācija tiešsaistē"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Reģistrācija neizdevās."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-mk/strings.xml b/packages/OsuLogin/res/values-mk/strings.xml
new file mode 100644
index 0000000..de608e1
--- /dev/null
+++ b/packages/OsuLogin/res/values-mk/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлајн регистрација"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Регистрацијата не успеа"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ml/strings.xml b/packages/OsuLogin/res/values-ml/strings.xml
new file mode 100644
index 0000000..8e797c8
--- /dev/null
+++ b/packages/OsuLogin/res/values-ml/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ഓൺലെെൻ സെെൻ അപ്പ്"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"സൈൻ അപ്പ് ചെയ്യാനായില്ല"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-mn/strings.xml b/packages/OsuLogin/res/values-mn/strings.xml
new file mode 100644
index 0000000..59d79d0
--- /dev/null
+++ b/packages/OsuLogin/res/values-mn/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлайнаар бүртгүүлэх"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Бүртгүүлж чадсангүй"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-mr/strings.xml b/packages/OsuLogin/res/values-mr/strings.xml
new file mode 100644
index 0000000..15479a6
--- /dev/null
+++ b/packages/OsuLogin/res/values-mr/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ऑनलाइन साइन अप करा"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"साइन-अप करता आले नाही"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ms/strings.xml b/packages/OsuLogin/res/values-ms/strings.xml
new file mode 100644
index 0000000..7e1cf95
--- /dev/null
+++ b/packages/OsuLogin/res/values-ms/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Pendaftaran Dalam Talian"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Pendaftaran gagal"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-my/strings.xml b/packages/OsuLogin/res/values-my/strings.xml
new file mode 100644
index 0000000..1bd992e
--- /dev/null
+++ b/packages/OsuLogin/res/values-my/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"အွန်လိုင်း အကောင့်ဖွင့်ရန်"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"အကောင့်ဖွင့်၍ မရပါ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-nb/strings.xml b/packages/OsuLogin/res/values-nb/strings.xml
new file mode 100644
index 0000000..2e0c47a1
--- /dev/null
+++ b/packages/OsuLogin/res/values-nb/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registrering på nettet"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registreringen mislyktes"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ne/strings.xml b/packages/OsuLogin/res/values-ne/strings.xml
new file mode 100644
index 0000000..16bd92f
--- /dev/null
+++ b/packages/OsuLogin/res/values-ne/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"अनलाइन साइन अप"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"साइन अप गर्न सकिएन"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-nl/strings.xml b/packages/OsuLogin/res/values-nl/strings.xml
new file mode 100644
index 0000000..7cf8bd2
--- /dev/null
+++ b/packages/OsuLogin/res/values-nl/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online aanmelding"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Aanmelding mislukt"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-or/strings.xml b/packages/OsuLogin/res/values-or/strings.xml
new file mode 100644
index 0000000..e0584d7
--- /dev/null
+++ b/packages/OsuLogin/res/values-or/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ଅନଲାଇନ୍ ସାଇନ୍ ଅପ୍ କରନ୍ତୁ"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ସାଇନ୍ ଅପ୍ ବିଫଳ ହୋଇଛି"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-pa/strings.xml b/packages/OsuLogin/res/values-pa/strings.xml
new file mode 100644
index 0000000..7e47d0e
--- /dev/null
+++ b/packages/OsuLogin/res/values-pa/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ਆਨਲਾਈਨ ਸਾਈਨ-ਅੱਪ ਕਰੋ"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ਸਾਈਨ-ਅੱਪ ਕਰਨਾ ਅਸਫਲ ਰਿਹਾ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-pl/strings.xml b/packages/OsuLogin/res/values-pl/strings.xml
new file mode 100644
index 0000000..c0722ab
--- /dev/null
+++ b/packages/OsuLogin/res/values-pl/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Rejestracja online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Nie udało się zarejestrować"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-pt-rBR/strings.xml b/packages/OsuLogin/res/values-pt-rBR/strings.xml
new file mode 100644
index 0000000..c9fe377
--- /dev/null
+++ b/packages/OsuLogin/res/values-pt-rBR/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Inscrição on-line"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Falha na inscrição"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-pt-rPT/strings.xml b/packages/OsuLogin/res/values-pt-rPT/strings.xml
new file mode 100644
index 0000000..0059281
--- /dev/null
+++ b/packages/OsuLogin/res/values-pt-rPT/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Inscrição online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Falha na inscrição."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-pt/strings.xml b/packages/OsuLogin/res/values-pt/strings.xml
new file mode 100644
index 0000000..c9fe377
--- /dev/null
+++ b/packages/OsuLogin/res/values-pt/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Inscrição on-line"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Falha na inscrição"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ro/strings.xml b/packages/OsuLogin/res/values-ro/strings.xml
new file mode 100644
index 0000000..eead127
--- /dev/null
+++ b/packages/OsuLogin/res/values-ro/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Înscriere online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Nu s-a înscris"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ru/strings.xml b/packages/OsuLogin/res/values-ru/strings.xml
new file mode 100644
index 0000000..a271ef7
--- /dev/null
+++ b/packages/OsuLogin/res/values-ru/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Регистрация в Интернете"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Не удалось зарегистрироваться."</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-si/strings.xml b/packages/OsuLogin/res/values-si/strings.xml
new file mode 100644
index 0000000..52e5979
--- /dev/null
+++ b/packages/OsuLogin/res/values-si/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"සබැඳි ලියාපදිංචිය"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ලියාපදිංචිය අසාර්ථක විය"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sk/strings.xml b/packages/OsuLogin/res/values-sk/strings.xml
new file mode 100644
index 0000000..f6b9f70
--- /dev/null
+++ b/packages/OsuLogin/res/values-sk/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online registrácia"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registrácia zlyhala"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sl/strings.xml b/packages/OsuLogin/res/values-sl/strings.xml
new file mode 100644
index 0000000..6e6b95c
--- /dev/null
+++ b/packages/OsuLogin/res/values-sl/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Spletna registracija"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registracija ni uspela"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sq/strings.xml b/packages/OsuLogin/res/values-sq/strings.xml
new file mode 100644
index 0000000..f67a238
--- /dev/null
+++ b/packages/OsuLogin/res/values-sq/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Regjistrimi në linjë"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Regjistrimi dështoi"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sr/strings.xml b/packages/OsuLogin/res/values-sr/strings.xml
new file mode 100644
index 0000000..14e0828
--- /dev/null
+++ b/packages/OsuLogin/res/values-sr/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлајн регистрација"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Регистрација није успела"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sv/strings.xml b/packages/OsuLogin/res/values-sv/strings.xml
new file mode 100644
index 0000000..ea5fdfd
--- /dev/null
+++ b/packages/OsuLogin/res/values-sv/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Registrering online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registreringen misslyckades"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-sw/strings.xml b/packages/OsuLogin/res/values-sw/strings.xml
new file mode 100644
index 0000000..c20a402
--- /dev/null
+++ b/packages/OsuLogin/res/values-sw/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Kujisajili Mtandaoni"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Imeshindwa kukusajili"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ta/strings.xml b/packages/OsuLogin/res/values-ta/strings.xml
new file mode 100644
index 0000000..e2eb567
--- /dev/null
+++ b/packages/OsuLogin/res/values-ta/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ஆன்லைனில் பதிவு செய்"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"பதிவு செய்ய முடியவில்லை"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-te/strings.xml b/packages/OsuLogin/res/values-te/strings.xml
new file mode 100644
index 0000000..56b0b44
--- /dev/null
+++ b/packages/OsuLogin/res/values-te/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"ఆన్లైన్ సైన్ అప్"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"సైన్-అప్ విఫలమయ్యింది"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-th/strings.xml b/packages/OsuLogin/res/values-th/strings.xml
new file mode 100644
index 0000000..552dca2
--- /dev/null
+++ b/packages/OsuLogin/res/values-th/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"การลงชื่อสมัครใช้ออนไลน์"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"ลงชื่อสมัครใช้ไม่สำเร็จ"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-tl/strings.xml b/packages/OsuLogin/res/values-tl/strings.xml
new file mode 100644
index 0000000..ba89e96
--- /dev/null
+++ b/packages/OsuLogin/res/values-tl/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Pag-sign Up Online"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Hindi nakapag-sign up"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-tr/strings.xml b/packages/OsuLogin/res/values-tr/strings.xml
new file mode 100644
index 0000000..1d927fe
--- /dev/null
+++ b/packages/OsuLogin/res/values-tr/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Online Kaydolma"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Kaydolma işlemi başarısız oldu"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-uk/strings.xml b/packages/OsuLogin/res/values-uk/strings.xml
new file mode 100644
index 0000000..6e60ff0
--- /dev/null
+++ b/packages/OsuLogin/res/values-uk/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Онлайн-реєстрація"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Не вдалося зареєструватись"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-ur/strings.xml b/packages/OsuLogin/res/values-ur/strings.xml
new file mode 100644
index 0000000..eed7686
--- /dev/null
+++ b/packages/OsuLogin/res/values-ur/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"آن لائن سائن اپ کریں"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"سائن اپ ناکام ہو گیا"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-uz/strings.xml b/packages/OsuLogin/res/values-uz/strings.xml
new file mode 100644
index 0000000..152d129
--- /dev/null
+++ b/packages/OsuLogin/res/values-uz/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Onlayn registratsiya"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Registratsiya qilinmadi"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-vi/strings.xml b/packages/OsuLogin/res/values-vi/strings.xml
new file mode 100644
index 0000000..84558076
--- /dev/null
+++ b/packages/OsuLogin/res/values-vi/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Đăng ký trực tuyến"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Không đăng ký được"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-zh-rCN/strings.xml b/packages/OsuLogin/res/values-zh-rCN/strings.xml
new file mode 100644
index 0000000..7f13647
--- /dev/null
+++ b/packages/OsuLogin/res/values-zh-rCN/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"在线注册"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"注册失败"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-zh-rHK/strings.xml b/packages/OsuLogin/res/values-zh-rHK/strings.xml
new file mode 100644
index 0000000..8731791
--- /dev/null
+++ b/packages/OsuLogin/res/values-zh-rHK/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"網上申請"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"無法申請"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-zh-rTW/strings.xml b/packages/OsuLogin/res/values-zh-rTW/strings.xml
new file mode 100644
index 0000000..79208c8
--- /dev/null
+++ b/packages/OsuLogin/res/values-zh-rTW/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"線上註冊"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"註冊失敗"</string>
+</resources>
diff --git a/packages/OsuLogin/res/values-zu/strings.xml b/packages/OsuLogin/res/values-zu/strings.xml
new file mode 100644
index 0000000..27ac6bb
--- /dev/null
+++ b/packages/OsuLogin/res/values-zu/strings.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="app_name" msgid="8288271429327488421">"I-OsuLogin"</string>
+ <string name="action_bar_label" msgid="550995560341508693">"Ukubhalisa Okuku-inthanethi"</string>
+ <string name="sign_up_failed" msgid="837216244603867568">"Ukubhalisa kuhlulekile"</string>
+</resources>
diff --git a/packages/PackageInstaller/AndroidManifest.xml b/packages/PackageInstaller/AndroidManifest.xml
index fe4fdd3..48cdf16 100644
--- a/packages/PackageInstaller/AndroidManifest.xml
+++ b/packages/PackageInstaller/AndroidManifest.xml
@@ -94,7 +94,8 @@
android:configChanges="orientation|keyboardHidden|screenSize"
android:theme="@style/Theme.AlertDialogActivity.NoActionBar"
android:excludeFromRecents="true"
- android:noHistory="true">
+ android:noHistory="true"
+ android:exported="true">
<intent-filter android:priority="1">
<action android:name="android.intent.action.DELETE" />
<action android:name="android.intent.action.UNINSTALL_PACKAGE" />
diff --git a/packages/PackageInstaller/res/values-ar/strings.xml b/packages/PackageInstaller/res/values-ar/strings.xml
index 2392c96..87f89ce 100644
--- a/packages/PackageInstaller/res/values-ar/strings.xml
+++ b/packages/PackageInstaller/res/values-ar/strings.xml
@@ -24,8 +24,8 @@
<string name="installing_app" msgid="1165095864863849422">"جارٍ تثبيت <xliff:g id="PACKAGE_LABEL">%1$s</xliff:g>…"</string>
<string name="install_done" msgid="5987363587661783896">"تم تثبيت التطبيق."</string>
<string name="install_confirm_question" msgid="8176284075816604590">"هل تريد تثبيت هذا التطبيق؟"</string>
- <string name="install_confirm_question_update" msgid="7942235418781274635">"هل تريد تثبيت إعادة تحميل لهذا التطبيق الحالي؟ لن تفقد بياناتك الحالية."</string>
- <string name="install_confirm_question_update_system" msgid="4713001702777910263">"هل تريد تثبيت إعادة تحميل لهذا التطبيق المضمَّن؟ لن تفقد بياناتك الحالية."</string>
+ <string name="install_confirm_question_update" msgid="7942235418781274635">"هل تريد تثبيت تحديث لهذا التطبيق الحالي؟ لن تفقد بياناتك الحالية."</string>
+ <string name="install_confirm_question_update_system" msgid="4713001702777910263">"هل تريد تثبيت تحديث لهذا التطبيق المضمَّن؟ لن تفقد بياناتك الحالية."</string>
<string name="install_failed" msgid="5777824004474125469">"التطبيق ليس مثبتًا."</string>
<string name="install_failed_blocked" msgid="8512284352994752094">"تم حظر تثبيت الحزمة."</string>
<string name="install_failed_conflict" msgid="3493184212162521426">"لم يتم تثبيت التطبيق لأن حزمة التثبيت تتعارض مع حزمة حالية."</string>
diff --git a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
index 4f85eea..dd991e0 100755
--- a/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
+++ b/packages/PackageInstaller/src/com/android/packageinstaller/InstallInstalling.java
@@ -89,7 +89,8 @@
getPackageManager().installExistingPackage(appInfo.packageName);
launchSuccess();
} catch (PackageManager.NameNotFoundException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
+ launchFailure(PackageInstaller.STATUS_FAILURE,
+ PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
}
} else {
final File sourceFile = new File(mPackageURI.getPath());
@@ -163,13 +164,15 @@
.addObserver(this, EventResultPersister.GENERATE_NEW_ID,
this::launchFinishBasedOnResult);
} catch (EventResultPersister.OutOfIdsException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
+ launchFailure(PackageInstaller.STATUS_FAILURE,
+ PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
}
try {
mSessionId = getPackageManager().getPackageInstaller().createSession(params);
} catch (IOException e) {
- launchFailure(PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
+ launchFailure(PackageInstaller.STATUS_FAILURE,
+ PackageManager.INSTALL_FAILED_INTERNAL_ERROR, null);
}
}
@@ -194,13 +197,15 @@
/**
* Launch the "failure" version of the final package installer dialog
*
+ * @param statusCode The generic status code as returned by the package installer.
* @param legacyStatus The status as used internally in the package manager.
* @param statusMessage The status description.
*/
- private void launchFailure(int legacyStatus, String statusMessage) {
+ private void launchFailure(int statusCode, int legacyStatus, String statusMessage) {
Intent failureIntent = new Intent(getIntent());
failureIntent.setClass(this, InstallFailed.class);
failureIntent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
+ failureIntent.putExtra(PackageInstaller.EXTRA_STATUS, statusCode);
failureIntent.putExtra(PackageInstaller.EXTRA_LEGACY_STATUS, legacyStatus);
failureIntent.putExtra(PackageInstaller.EXTRA_STATUS_MESSAGE, statusMessage);
@@ -289,7 +294,7 @@
if (statusCode == PackageInstaller.STATUS_SUCCESS) {
launchSuccess();
} else {
- launchFailure(legacyStatus, statusMessage);
+ launchFailure(statusCode, legacyStatus, statusMessage);
}
}
@@ -410,7 +415,8 @@
getPackageManager().getPackageInstaller().abandonSession(mSessionId);
if (!isCancelled()) {
- launchFailure(PackageManager.INSTALL_FAILED_INVALID_APK, null);
+ launchFailure(PackageInstaller.STATUS_FAILURE,
+ PackageManager.INSTALL_FAILED_INVALID_APK, null);
}
}
}
diff --git a/packages/PrintRecommendationService/AndroidManifest.xml b/packages/PrintRecommendationService/AndroidManifest.xml
index 8db1bf4..4e0c6bf 100644
--- a/packages/PrintRecommendationService/AndroidManifest.xml
+++ b/packages/PrintRecommendationService/AndroidManifest.xml
@@ -31,7 +31,8 @@
<service
android:name=".RecommendationServiceImpl"
- android:permission="android.permission.BIND_PRINT_RECOMMENDATION_SERVICE">
+ android:permission="android.permission.BIND_PRINT_RECOMMENDATION_SERVICE"
+ android:exported="true">
<intent-filter>
<action android:name="android.printservice.recommendation.RecommendationService" />
diff --git a/packages/PrintSpooler/AndroidManifest.xml b/packages/PrintSpooler/AndroidManifest.xml
index e47aa05..58cec62 100644
--- a/packages/PrintSpooler/AndroidManifest.xml
+++ b/packages/PrintSpooler/AndroidManifest.xml
@@ -68,7 +68,8 @@
android:name=".ui.PrintActivity"
android:configChanges="mnc|mnc|touchscreen|navigation|screenLayout|screenSize|smallestScreenSize|orientation|locale|keyboard|keyboardHidden|fontScale|uiMode|layoutDirection|density"
android:permission="android.permission.BIND_PRINT_SPOOLER_SERVICE"
- android:theme="@style/Theme.PrintActivity">
+ android:theme="@style/Theme.PrintActivity"
+ android:exported="true">
<intent-filter>
<action android:name="android.print.PRINT_DIALOG" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/packages/PrintSpooler/tests/outofprocess/AndroidManifest.xml b/packages/PrintSpooler/tests/outofprocess/AndroidManifest.xml
index fdcaa52..e7c78df7 100644
--- a/packages/PrintSpooler/tests/outofprocess/AndroidManifest.xml
+++ b/packages/PrintSpooler/tests/outofprocess/AndroidManifest.xml
@@ -27,7 +27,8 @@
<service
android:name="android.print.test.services.FirstPrintService"
- android:permission="android.permission.BIND_PRINT_SERVICE">
+ android:permission="android.permission.BIND_PRINT_SERVICE"
+ android:exported="true">
<intent-filter>
<action android:name="android.printservice.PrintService" />
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 762053e..649fcb1 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Wys Bluetooth-toestelle sonder name"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Deaktiveer absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktiveer Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Verbeterde konnektiwiteit"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP-weergawe"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Kies Bluetooth AVRCP-weergawe"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-weergawe"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-toestelle sonder name (net MAC-adresse) sal gewys word"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Deaktiveer die Bluetooth-kenmerk vir absolute volume indien daar volumeprobleme met afgeleë toestelle is, soos onaanvaarbare harde klank of geen beheer nie."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiveer die Bluetooth Gabeldorsche-kenmerkstapel."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktiveer die Verbeterde Konnektiwiteit-kenmerk."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Plaaslike terminaal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktiveer terminaalprogram wat plaaslike skermtoegang bied"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-kontrolering"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profiel-HWUI-lewering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Aktiveer GPU-ontfoutlae"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Laat laai van GPU-ontfoutlae vir ontfoutprogramme toe"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktiveer woordryke verkoperloginskrywing"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sluit bykomende toestelspesifieke verkoperloglêers by foutverslae in, wat privaat inligting kan bevat, meer batterykrag kan gebruik, en/of meer berging kan gebruik."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Vensteranimasieskaal"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Oorganganimasieskaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator-tydsduurskaal"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Vra elke keer"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Totdat jy dit afskakel"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Sopas"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Hierdie toestel"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Foonluidspreker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Kan nie koppel nie. Skakel toestel af en weer aan"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedrade oudiotoestel"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 3e6886c..f55b30e 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"የብሉቱዝ መሣሪያዎችን ያለ ስሞች አሳይ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ፍጹማዊ ድምፅን አሰናክል"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorscheን አንቃ"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"የተሻሻለ ተገናኝነት"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"የብሉቱዝ AVRCP ስሪት"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"የብሉቱዝ AVRCP ስሪት ይምረጡ"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"የብሉቱዝ MAP ስሪት"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"የብሉቱዝ መሣሪያዎች ያለ ስሞች (MAC አድራሻዎች ብቻ) ይታያሉ"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"እንደ ተቀባይነት በሌለው ደረጃ ድምፁ ከፍ ማለት ወይም መቆጣጠር አለመቻል ያሉ ከሩቅ መሣሪያዎች ጋር የድምፅ ችግር በሚኖርበት ጊዜ የብሉቱዝ ፍጹማዊ ድምፅን ባሕሪ ያሰናክላል።"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"የብሉቱዝ Gabeldorsche ባህሪ ቁልሉን ያነቃል።"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"የተሻሻለ ተገናኝነት ባህሪውን ያነቃል።"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"አካባቢያዊ ተርሚናል"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"የአካባቢያዊ ሼል መዳረሻ የሚያቀርብ የተርሚናል መተግበሪያ አንቃ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"የHDCP ምልከታ"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"የመገለጫ HWUI ምስልን በመስራት ላይ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"የጂፒዩ ስህተት ማረሚያ ንብርብሮችን ያንቁ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ለስህተት ማረሚያ መተግበሪያዎች የጂፒዩ ንብርብሮችን መስቀልን ፍቀድ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"የዝርክርክ ቃላት አቅራቢ ምዝግብ ማስታወሻን መያዝ አንቃ"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"በሳንካ ሪፖርቶች ውስጥ ተጨማሪ መሣሪያ-ተኮር የአቅራቢ ምዝግብ ማስታወሻዎችን ያካትቱ፣ ይህም የግል መረጃን ሊይዝ፣ ተጨማሪ ባትሪ ሊፈጅ እና/ወይም ተጨማሪ ማከማቻ ሊጠቀም ይችላል።"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"የዊንዶው እነማ ልኬት ለውጥ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"የእነማ ልኬት ለውጥ ሽግግር"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"እነማ አድራጊ ቆይታ መለኪያ"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ሁልጊዜ ጠይቅ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"እስኪያጠፉት ድረስ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ልክ አሁን"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ይህ መሣሪያ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"የስልክ ድምጽ ማጉያ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"መገናኘት ላይ ችግር። መሳሪያውን ያጥፉት እና እንደገና ያብሩት"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ባለገመድ የኦዲዮ መሣሪያ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 7fa6b7f..1798e45 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -57,7 +57,7 @@
<string name="osu_sign_up_complete" msgid="7640183358878916847">"اكتمل الاشتراك. جارٍ الاتصال…"</string>
<string name="speed_label_very_slow" msgid="8526005255731597666">"بطيئة جدًا"</string>
<string name="speed_label_slow" msgid="6069917670665664161">"بطيئة"</string>
- <string name="speed_label_okay" msgid="1253594383880810424">"موافق"</string>
+ <string name="speed_label_okay" msgid="1253594383880810424">"حسنًا"</string>
<string name="speed_label_medium" msgid="9078405312828606976">"متوسطة"</string>
<string name="speed_label_fast" msgid="2677719134596044051">"سريعة"</string>
<string name="speed_label_very_fast" msgid="8215718029533182439">"سريعة جدًا"</string>
@@ -206,60 +206,33 @@
<string name="enable_adb" msgid="8072776357237289039">"تصحيح أخطاء USB"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"وضع تصحيح الأخطاء عند توصيل USB"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"إلغاء عمليات تفويض تصحيح أخطاء USB"</string>
- <!-- no translation found for enable_adb_wireless (6973226350963971018) -->
- <skip />
- <!-- no translation found for enable_adb_wireless_summary (7344391423657093011) -->
- <skip />
- <!-- no translation found for adb_wireless_error (721958772149779856) -->
- <skip />
- <!-- no translation found for adb_wireless_settings (2295017847215680229) -->
- <skip />
- <!-- no translation found for adb_wireless_list_empty_off (1713707973837255490) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_title (6982904096137468634) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_summary (3729901496856458634) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_title (1122590300445142904) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_summary (6370414511333685185) -->
- <skip />
- <!-- no translation found for adb_paired_devices_title (5268997341526217362) -->
- <skip />
- <!-- no translation found for adb_wireless_device_connected_summary (3039660790249148713) -->
- <skip />
- <!-- no translation found for adb_wireless_device_details_title (7129369670526565786) -->
- <skip />
- <!-- no translation found for adb_device_forget (193072400783068417) -->
- <skip />
- <!-- no translation found for adb_device_fingerprint_title_format (291504822917843701) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_title (664211177427438438) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_message (9213896700171602073) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_title (7141739231018530210) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_pairing_code_label (3639239786669722731) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_title (3426758947882091735) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_msg (6611097519661997148) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_summary (8051414549011801917) -->
- <skip />
- <!-- no translation found for adb_wireless_verifying_qrcode_text (6123192424916029207) -->
- <skip />
- <!-- no translation found for adb_qrcode_pairing_device_failed_msg (6936292092592914132) -->
- <skip />
- <!-- no translation found for adb_wireless_ip_addr_preference_title (8335132107715311730) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_title (1906409667944674707) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_description (8578868049289910131) -->
- <skip />
- <!-- no translation found for keywords_adb_wireless (6507505581882171240) -->
- <skip />
+ <string name="enable_adb_wireless" msgid="6973226350963971018">"تصحيح الأخطاء عبر شبكة Wi-Fi"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"وضع تصحيح الأخطاء عندما يتم الاتصال بشبكة Wi‑Fi"</string>
+ <string name="adb_wireless_error" msgid="721958772149779856">"خطأ"</string>
+ <string name="adb_wireless_settings" msgid="2295017847215680229">"تصحيح الأخطاء عبر شبكة Wi-Fi"</string>
+ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"لعرض الأجهزة المتاحة واستخدامها، فعِّل ميزة تصحيح الأخطاء لاسلكيًا."</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"إقران الجهاز باستخدام رمز الاستجابة السريعة"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"إقران الأجهزة الجديدة باستخدام الماسح الضوئي لرموز الاستجابة السريعة"</string>
+ <string name="adb_pair_method_code_title" msgid="1122590300445142904">"إقران الجهاز باستخدام رمز الإقران"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"إقران الأجهزة الجديدة باستخدام رمز مكوّن من 6 أعداد"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"الأجهزة المقترنة"</string>
+ <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"الأجهزة المتصلة حاليًا"</string>
+ <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"تفاصيل الجهاز"</string>
+ <string name="adb_device_forget" msgid="193072400783068417">"حذف"</string>
+ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"بصمة الإصبع للجهاز: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
+ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"تعذّر الاتصال بالشبكة"</string>
+ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"تأكّدْ من اتصال <xliff:g id="DEVICE_NAME">%1$s</xliff:g> بالشبكة الصحيحة."</string>
+ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"الإقران مع الجهاز"</string>
+ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"رمز إقران Wi‑Fi"</string>
+ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"تعذّر الإقران"</string>
+ <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"تأكّد من توصيل الجهاز بالشبكة نفسها."</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"إقران الجهاز من خلال شبكة Wi‑Fi عن طريق المسح الضوئي لرمز استجابة سريعة"</string>
+ <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"جارٍ إقران الجهاز…"</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"تعذّر إقران الجهاز. إما أن رمز الاستجابة السريعة غير صحيح أو أن الجهاز غير متصل بالشبكة نفسها."</string>
+ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"عنوان IP والمنفذ"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"المسح الضوئي لرمز الاستجابة السريعة"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"إقران الجهاز من خلال شبكة Wi‑Fi عن طريق المسح الضوئي لرمز استجابة سريعة"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb، تصحيح الأخطاء، مطور برامج"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"اختصار تقرير الأخطاء"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"عرض زر في قائمة خيارات التشغيل لإعداد تقرير بالأخطاء"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"البقاء في الوضع النشط"</string>
@@ -269,7 +242,7 @@
<string name="oem_unlock_enable" msgid="5334869171871566731">"فتح قفل المصنّع الأصلي للجهاز"</string>
<string name="oem_unlock_enable_summary" msgid="5857388174390953829">"السماح بإلغاء قفل برنامج bootloader"</string>
<string name="confirm_enable_oem_unlock_title" msgid="8249318129774367535">"هل تريد السماح بإلغاء قفل المصنّع الأصلي للجهاز؟"</string>
- <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"تحذير: لن تعمل ميزات الحماية على هذا الجهاز أثناء تشغيل هذا الإعداد."</string>
+ <string name="confirm_enable_oem_unlock_text" msgid="854131050791011970">"تحذير: لن تعمل ميزات الحماية على هذا الجهاز أثناء تفعيل هذا الإعداد."</string>
<string name="mock_location_app" msgid="6269380172542248304">"اختيار تطبيق الموقع الزائف"</string>
<string name="mock_location_app_not_set" msgid="6972032787262831155">"لم يتم تعيين تطبيق موقع زائف"</string>
<string name="mock_location_app_set" msgid="4706722469342913843">"تطبيق الموقع الزائف: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
@@ -282,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"عرض أجهزة البلوتوث بدون أسماء"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"إيقاف مستوى الصوت المطلق"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"تفعيل Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"إمكانية اتصال محسّن"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"إصدار Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"اختيار إصدار Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"إصدار Bluetooth MAP"</string>
@@ -325,10 +299,8 @@
<string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"استخدام إعداد تسريع الأجهزة للتوصيل إن كان متاحًا"</string>
<string name="adb_warning_title" msgid="7708653449506485728">"هل تريد السماح بتصحيح أخطاء USB؟"</string>
<string name="adb_warning_message" msgid="8145270656419669221">"تم تصميم تصحيح أخطاء USB لأغراض التطوير فقط. يمكن استخدامه لنسخ البيانات بين الكمبيوتر والجهاز، وتثبيت التطبيقات على جهازك بدون تنبيه، وقراءة بيانات السجل."</string>
- <!-- no translation found for adbwifi_warning_title (727104571653031865) -->
- <skip />
- <!-- no translation found for adbwifi_warning_message (8005936574322702388) -->
- <skip />
+ <string name="adbwifi_warning_title" msgid="727104571653031865">"هل تريد السماح بتصحيح الأخطاء عبر شبكة Wi-Fi؟"</string>
+ <string name="adbwifi_warning_message" msgid="8005936574322702388">"تم تصميم ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\" لأغراض التطوير فقط. يمكن استخدامها لنسخ البيانات بين الكمبيوتر والجهاز وتثبيت التطبيقات على جهازك بدون إرسال إشعار وقراءة بيانات السجلّ."</string>
<string name="adb_keys_warning_message" msgid="2968555274488101220">"هل تريد إلغاء إمكانية الدخول إلى تصحيح أخطاء USB من جميع أجهزة الكمبيوتر التي تم التصريح لها سابقًا؟"</string>
<string name="dev_settings_warning_title" msgid="8251234890169074553">"هل تريد السماح لإعدادات التطوير؟"</string>
<string name="dev_settings_warning_message" msgid="37741686486073668">"هذه الإعدادات مخصصة لاستخدام التطوير فقط. قد يتسبب هذا في حدوث أعطال أو خلل في أداء الجهاز والتطبيقات المثبتة عليه."</string>
@@ -337,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"سيتم عرض أجهزة البلوتوث بدون أسماء (عناوين MAC فقط)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"لإيقاف ميزة مستوى الصوت المطلق للبلوتوث في حال حدوث مشاكل متعلقة بمستوى الصوت في الأجهزة البعيدة، مثل مستوى صوت عالٍ بشكل غير مقبول أو عدم إمكانية التحكّم في الصوت"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"تفعيل حِزم ميزة Bluetooth Gabeldorsche"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"لتفعيل الميزة \"إمكانية اتصال محسّن\""</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"تطبيق طرفي محلي"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"تفعيل تطبيق طرفي يوفر إمكانية الدخول إلى واجهة النظام المحلية"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"التحقق من HDCP"</string>
@@ -383,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"عرض ملف التعريف HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"تفعيل طبقات تصحيح أخطاء GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"السماح بتحميل طبقات تصحيح أخطاء GPU لتطبيقات تصحيح الأخطاء"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"تفعيل التسجيل المطوَّل للمورّد"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"يمكنك تضمين سجلات المورّدين الإضافية الخاصة بالجهاز في تقارير الخطأ، وقد تحتوي على معلومات شخصية و/أو تستهلك المزيد من شحن البطارية و/أو تستهلك المزيد من مساحة التخزين."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"حجم الرسوم المتحركة للنافذة"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"حجم الرسوم المتحركة للنقل"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"طول مدة الرسوم المتحركة"</string>
@@ -427,11 +402,11 @@
<string name="select_webview_provider_title" msgid="3917815648099445503">"تطبيق WebView"</string>
<string name="select_webview_provider_dialog_title" msgid="2444261109877277714">"تعيين تطبيق WebView"</string>
<string name="select_webview_provider_toast_text" msgid="8512254949169359848">"لم يعد هذا الاختيار صالحًا. أعد المحاولة."</string>
- <string name="convert_to_file_encryption" msgid="2828976934129751818">"التحويل إلى تشفير ملفات"</string>
+ <string name="convert_to_file_encryption" msgid="2828976934129751818">"التحويل إلى ترميز ملفات"</string>
<string name="convert_to_file_encryption_enabled" msgid="840757431284311754">"تحويل…"</string>
- <string name="convert_to_file_encryption_done" msgid="8965831011811180627">"تم استخدام تشفير ملفات من قبل"</string>
- <string name="title_convert_fbe" msgid="5780013350366495149">"التحويل إلى تشفير على الملف"</string>
- <string name="convert_to_fbe_warning" msgid="34294381569282109">"تحويل قسم البيانات إلى تشفير على الملف.\n !!تحذير!! سيؤدي هذا إلى محو جميع بياناتك.\n لا تزال هذه الميزة في مرحلة ألفا، وقد لا تعمل على نحو سليم.\n للمتابعة، اضغط على \"مسح وتحويل…\"."</string>
+ <string name="convert_to_file_encryption_done" msgid="8965831011811180627">"تم استخدام ترميز ملفات من قبل"</string>
+ <string name="title_convert_fbe" msgid="5780013350366495149">"التحويل إلى ترميز على الملف"</string>
+ <string name="convert_to_fbe_warning" msgid="34294381569282109">"تحويل قسم البيانات إلى ترميز على الملف.\n !!تحذير!! سيؤدي هذا إلى محو جميع بياناتك.\n لا تزال هذه الميزة في مرحلة ألفا، وقد لا تعمل على نحو سليم.\n للمتابعة، اضغط على \"مسح وتحويل…\"."</string>
<string name="button_convert_fbe" msgid="1159861795137727671">"مسح وتحويل…"</string>
<string name="picture_color_mode" msgid="1013807330552931903">"نمط لون الصورة"</string>
<string name="picture_color_mode_desc" msgid="151780973768136200">"استخدام sRGB"</string>
@@ -441,8 +416,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"غطش الأحمر (الأحمر والأخضر)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"غمش الأزرق (الأزرق والأصفر)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"تصحيح الألوان"</string>
- <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
- <skip />
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"تساعد ميزة تصحيح الألوان المصابين بعمى الألوان على رؤية الألوان بدقة أكبر"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"تم الاستبدال بـ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"يتبقى <xliff:g id="TIME_REMAINING">%1$s</xliff:g> تقريبًا"</string>
@@ -461,27 +435,19 @@
<string name="power_remaining_less_than_duration" msgid="1812668275239801236">"يتبقى أقل من <xliff:g id="THRESHOLD">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"يتبقى أكثر من <xliff:g id="TIME_REMAINING">%1$s</xliff:g> (<xliff:g id="LEVEL">%2$s</xliff:g>)."</string>
<string name="power_remaining_only_more_than_subtext" msgid="3274496164769110480">"يتبقى أكثر من <xliff:g id="TIME_REMAINING">%1$s</xliff:g>."</string>
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (137330009791560774) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (145489081521468132) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (1070562682853942350) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4429259621177089719) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (7703677921000858479) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4374784375644214578) -->
- <skip />
+ <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"قد يتم إغلاق الهاتف قريبًا"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"قد يتم إغلاق الجهاز اللوحي قريبًا"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"قد يتم إغلاق الجهاز قريبًا"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"قد يتم إغلاق الهاتف قريبًا (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"قد يتم إغلاق الجهاز اللوحي قريبًا (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"قد يتم إغلاق الجهاز قريبًا (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="7415639699283965818">"<xliff:g id="TIME">%1$s</xliff:g> إلى أن يتم شحن الجهاز بالكامل"</string>
<string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> إلى أن يتم شحن الجهاز بالكامل"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"غير معروف"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"جارٍ الشحن"</string>
- <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
- <skip />
- <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
- <skip />
+ <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"جارٍ الشحن سريعًا"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"جارٍ الشحن ببطء"</string>
<string name="battery_info_status_discharging" msgid="6962689305413556485">"لا يتم الشحن"</string>
<string name="battery_info_status_not_charging" msgid="8330015078868707899">"تم التوصيل، ولكن يتعذّر الشحن الآن"</string>
<string name="battery_info_status_full" msgid="4443168946046847468">"ممتلئة"</string>
@@ -529,9 +495,9 @@
<string name="accessibility_manual_zen_more_time" msgid="5141801092071134235">"وقت أكثر."</string>
<string name="accessibility_manual_zen_less_time" msgid="6828877595848229965">"وقت أقل."</string>
<string name="cancel" msgid="5665114069455378395">"إلغاء"</string>
- <string name="okay" msgid="949938843324579502">"موافق"</string>
- <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"تشغيل"</string>
- <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"تشغيل وضع \"الرجاء عدم الإزعاج\""</string>
+ <string name="okay" msgid="949938843324579502">"حسنًا"</string>
+ <string name="zen_mode_enable_dialog_turn_on" msgid="6418297231575050426">"تفعيل"</string>
+ <string name="zen_mode_settings_turn_on_dialog_title" msgid="2760567063190790696">"تفعيل وضع \"الرجاء عدم الإزعاج\""</string>
<string name="zen_mode_settings_summary_off" msgid="3832876036123504076">"مطلقًا"</string>
<string name="zen_interruption_level_priority" msgid="5392140786447823299">"الأولوية فقط"</string>
<string name="zen_mode_and_condition" msgid="8877086090066332516">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
@@ -543,6 +509,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"الطلب في كل مرة"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"إلى أن توقف الوضع يدويًا"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"للتو"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"هذا الجهاز"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"مكبر صوت الهاتف"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"حدثت مشكلة أثناء الاتصال. يُرجى إيقاف الجهاز ثم إعادة تشغيله."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"جهاز سماعي سلكي"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index dc22f29..ce967a3 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"নামবিহীন ব্লুটুথ ডিভাইচসমূহ দেখুৱাওক"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"পূৰ্ণ মাত্ৰাৰ ভলিউম অক্ষম কৰক"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche সক্ষম কৰক"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"উন্নত সংযোগ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ব্লুটুথ AVRCP সংস্কৰণ"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ব্লুটুথ AVRCP সংস্কৰণ বাছনি কৰক"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ব্লুটুথ MAP সংস্কৰণ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"নামহীন ব্লুটুথ ডিভাইচসমূহ (মাত্ৰ MAC ঠিকনাযুক্ত) দেখুওৱা হ\'ব"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ৰিম\'ট ডিভাইচবিলাকৰ সৈতে ভলিউম সম্পৰ্কীয় সমস্যা, যেনেকৈ অতি উচ্চ ভলিউম বা নিয়ন্ত্ৰণ কৰিবই নোৱাৰা অৱস্থাত ব্লুটুথৰ পূৰ্ণ ভলিউম সুবিধা অক্ষম কৰে।"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ব্লুটুথ Gabeldorche সুবিধাৰ সমষ্টিটো সক্ষম কৰে।"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"উন্নত সংযোগ সুবিধাটো সক্ষম কৰে।"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"স্থানীয় টাৰ্মিনেল"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"স্থানীয় শ্বেল প্ৰৱেশাধিকাৰ দিয়া টাৰ্মিনেল এপ্ সক্ষম কৰক"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP পৰীক্ষণ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"প্ৰ\'ফাইল HWUI ৰেণ্ডাৰিং"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"জিপিইউ ডিবাগ স্তৰবোৰ সক্ষম কৰক"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ডিবাগ এপসমূহৰ বাবে জিপিইউ ডিবাগ তৰপ ল\'ড কৰিবলৈ অনুমতি দিয়ক"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"বিক্ৰেতাৰ ভাৰ্ব’ছ লগিং সক্ষম কৰক"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"ৱিণ্ড\' এনিমেশ্বন স্কেল"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্ৰাঞ্জিশ্বন এনিমেশ্বন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"এনিমেটৰ কালদৈৰ্ঘ্য স্কেল"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"প্ৰতিবাৰতে সোধক"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"আপুনি অফ নকৰা পর্যন্ত"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"এই মাত্ৰ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"এই ডিভাইচটো"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ফ’নৰ স্পীকাৰ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"সংযোগ হোৱাত সমস্যা হৈছে। ডিভাইচটো অফ কৰি পুনৰ অন কৰক"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"তাঁৰযুক্ত অডিঅ’ ডিভাইচ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 9b082b6..29624ab 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth cihazlarını adsız göstərin"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Mütləq səs həcmi deaktiv edin"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche\'ni aktiv edin"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Təkmilləşdirilmiş Bağlantı"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP Versiya"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP Versiyasını seçin"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP Versiyası"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Adsız Bluetooth cihazları (yalnız MAC ünvanları) göstəriləcək"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Uzaqdan idarə olunan cihazlarda dözülməz yüksək səs həcmi və ya nəzarət çatışmazlığı kimi səs problemləri olduqda Bluetooth mütləq səs həcmi xüsusiyyətini deaktiv edir."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche funksiyasını aktiv edir."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Təkmilləşdirilmiş Bağlantı funksiyasını aktiv edir."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Yerli terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Yerli örtük girişini təklif edən terminal tətbiqi aktiv edin"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP yoxlanılır"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil HWUI bərpası"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU debaq təbəqələrini aktiv edin"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU debaq təbəqələrinin yüklənməsinə icazə verin"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Detallı təchizatçı qeydini aktiv edin"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Xəta hesabatlarına cihaza xas əlavə təchizatçı jurnallarını daxil edin, lakin nəzərə alın ki, onlar şəxsi məlumatları ehtiva edə, daha çox batareya istifadə edə və/və ya daha çox yaddaş istifadə edə bilər."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Pəncərə animasiya miqyası"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animasiya keçid miqyası"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator müddət şkalası"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Hər dəfə soruşun"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Deaktiv edənə qədər"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"İndicə"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Bu cihaz"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon dinamiki"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Qoşulmaqla bağlı problem. Cihazı deaktiv edin, sonra yenidən aktiv edin"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio cihaz"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index cc63740..2d28006 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogući glavno podešavanje jačine zvuka"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogući Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Poboljšano povezivanje"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Verzija Bluetooth AVRCP-a"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Izaberite verziju Bluetooth AVRCP-a"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Verzija Bluetooth MAP-a"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Biće prikazani Bluetooth uređaji bez naziva (samo sa MAC adresama)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogućava glavno podešavanje jačine zvuka na Bluetooth uređaju u slučaju problema sa jačinom zvuka na daljinskim uređajima, kao što su izuzetno velika jačina zvuka ili nedostatak kontrole."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogućava grupu Bluetooth Gabeldorsche funkcija."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogućava funkciju Poboljšano povezivanje."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Omogući apl. terminala za pristup lokalnom komandnom okruženju"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP provera"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Renderuj pomoću HWUI-a"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omogući slojeve za otklanjanje grešaka GPU-a"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omogući učitavanje otk. greš. GPU-a u apl. za otk. greš."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Opširne evidencije prodavca"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uvrstite u izveštaje o greškama dodatne posebne evidencije prodavca za uređaje, koje mogu da sadrže privatne podatke, da troše više baterije i/ili da koriste više memorije."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Razmera animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Razmera animacije prelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorova razmera trajanja"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pitaj svaki put"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Upravo"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ovaj uređaj"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem pri povezivanju. Isključite uređaj, pa ga ponovo uključite"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index f08726e..bd6fdf3 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Паказваць прылады Bluetooth без назваў"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Адключыць абсалютны гук"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Уключыць Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Палепшанае падключэнне"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Версія Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Выбраць версію Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Версія Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Прылады Bluetooth будуць паказаны без назваў (толькі MAC-адрасы)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Адключыць функцыю абсалютнага гуку Bluetooth у выпадку праблем з гукам на аддаленых прыладах, напрыклад, пры непрымальна высокай гучнасці або адсутнасці кіравання."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Уключае стос функцый Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Уключае функцыю \"Палепшанае падключэнне\"."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Лакальны тэрмінал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Уключэнне прыкладання тэрмінала, якое прапануе доступ да лакальнай абалонкі"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Праверка HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Профіль візуалізацыі HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Уключыць слаі адладкі GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Загружаць слаі адладкі GPU для праграм адладкі"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Уключыць падрабязны журнал пастаўшчыка"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Дадаваць у справаздачы пра памылкі дадатковыя журналы пастаўшчыка для пэўнай прылады (могуць утрымлівацца прыватныя даныя, можа павышацца выкарыстанне акумулятара і/ці памяці)."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Маштаб анімацыі акна"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Маштаб перадачы анімацыі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Працягласць анімацыі"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Заўсёды пытацца"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Пакуль не выключыце"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Толькі што"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Гэта прылада"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Дынамік тэлефона"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Праблема з падключэннем. Выключыце і зноў уключыце прыладу"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Правадная аўдыяпрылада"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 78ab01a..3d27f63 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Показване на устройствата с Bluetooth без имена"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Деактивиране на пълната сила на звука"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Активиране на Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Подобрена свързаност"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Версия на AVRCP за Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Избиране на версия на AVRCP за Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"MAP версия за Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Ще бъдат показани устройствата с Bluetooth без имена (само MAC адресите)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Деактивира функцията на Bluetooth за пълна сила на звука в случай на проблеми със звука на отдалечени устройства, като например неприемливо висока сила на звука или липса на управление."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Активира стека на функциите на Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Активира функцията за подобрена свързаност."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локален терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Актив. на прил. за терминал с достъп до локалния команден ред"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Проверка с HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Изобр. на HWUI: Профилир."</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Активиране на слоевете за отстр. на грешки в ГП"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Разреш. на зарежд. на слоевете за отстр. на грешки в ГП за съотв. прилож."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Подр. рег. файлове за доставчиците: Актив."</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включване на допълнителни регистрационни файлове за доставчиците на конкретни устройства в сигналите за програмни грешки, които може да съдържат поверителна информация, да изразходват батерията в по-голяма степен и/или да използват повече място в хранилището."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Скала на аним.: Прозорец"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Скала на преходната анимация"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Скала за Animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Да се пита винаги"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"До изключване"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Току-що"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Това устройство"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Високоговорител на телефона"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"При свързването възникна проблем. Изключете устройството и го включете отново"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Аудиоустройство с кабел"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 15ebfb8..6c459fc 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"নামহীন ব্লুটুথ ডিভাইসগুলি দেখুন"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"চূড়ান্ত ভলিউম অক্ষম করুন"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ফিচার চালু করুন"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"কানেক্টিভিটি উন্নত করা হয়েছে"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ব্লুটুথ AVRCP ভার্সন"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ব্লুটুথ AVRCP ভার্সন বেছে নিন"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ব্লুটুথ MAP ভার্সন"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"নামহীন ব্লুটুথ ডিভাইসগুলি দেখানো হবে (শুধুমাত্র MAC অ্যাড্রেস)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"অপ্রত্যাশিত উচ্চ ভলিউম বা নিয়ন্ত্রণের অভাবের মত দূরবর্তী ডিভাইসের ভলিউম সমস্যাগুলির ক্ষেত্রে, ব্লুটুথ চুড়ান্ত ভলিউম বৈশিষ্ট্য অক্ষম করে৷"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ব্লুটুথ Gabeldorche ফিচার স্ট্যাক চালু করে।"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"কানেক্টিভিটি ফিচার উন্নত করার বিষয়টি চালু করা হয়েছে।"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"স্থানীয় টার্মিনাল"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"স্থানীয় শেল অ্যাক্সেসের প্রস্তাব করে এমন টার্মিনাল অ্যাপ্লিকেশন সক্ষম করুন"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP পরীক্ষণ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"প্রোফাইল HWUI রেন্ডারিং"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ডিবাগ স্তর চালু করুন"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ডিবাগ অ্যাপের জন্য GPU ডিবাগ স্তর লোড হতে দিন"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ভারবোস ভেন্ডর লগ-ইন চালু করুন"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"উইন্ডো অ্যানিমেশন স্কেল"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ট্র্যানজিশন অ্যানিমেশন স্কেল"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"অ্যানিমেটর সময়কাল স্কেল"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"প্রতিবার জিজ্ঞেস করা হবে"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"যতক্ষণ না আপনি বন্ধ করছেন"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"এখনই"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"এই ডিভাইস"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ফেনের স্পিকার"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"কানেক্ট করতে সমস্যা হচ্ছে। ডিভাইস বন্ধ করে আবার চালু করুন"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ওয়্যার অডিও ডিভাইস"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index cb55c5d..e4c6e0c 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogući apsolutnu jačinu zvuka"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogući Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Poboljšana povezivost"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP verzija"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Odaberite Bluetooth AVRCP verziju"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP verzija"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazat će se Bluetooth uređaji bez naziva (samo MAC adrese)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogućava funkciju apsolutne jačine zvuka za Bluetooth u slučaju problema s jačinom zvuka na udaljenim uređajima, kao što je neprihvatljivo glasan zvuk ili nedostatak kontrole."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogućava grupisanje funkcije Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogućava funkciju Poboljšane povezivosti."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Omogući terminalnu aplik. koja nudi pristup lok. kom. okruženju"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP provjera"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil HWUI iscrtavanja"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omogući slojeve za otklanjanje grešaka na GPU-u"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omoguć. učit. sloj. za otkl. greš. na GPU-u za apl. za otkl. greš."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogući opširni zapisnik"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"U izvještaje o greškama uključite dodatne zapisnike dobavljača specifične za uređaj, koji mogu sadržavati lične informacije, povećati potrošnju baterije i/ili koristiti više prostora za pohranu."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala trajanja animatora"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pitaj svaki put"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Upravo"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ovaj uređaj"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Došlo je do problema prilikom povezivanja. Isključite, pa ponovo uključite uređaj"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audio uređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 7ac03aa..1a6e078 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostra els dispositius Bluetooth sense el nom"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desactiva el volum absolut"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Activa Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Connectivitat millorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versió AVRCP de Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecciona la versió AVRCP de Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versió MAP de Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Es mostraran els dispositius Bluetooth sense el nom (només l\'adreça MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desactiva la funció de volum absolut del Bluetooth en cas que es produeixin problemes de volum amb dispositius remots, com ara un volum massa alt o una manca de control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activa el conjunt de funcions de Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Activa la funció de connectivitat millorada."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activa l\'aplicació de terminal que ofereix accés al shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Comprovació d\'HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Renderització perfil HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activa les capes de depuració de GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permet capes de depuració de GPU en apps de depuració"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activa el registre detallat"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclou altres registres de proveïdor específics del dispositiu als informes d’errors; és possible que continguin informació privada, consumeixin més bateria o utilitzin més espai d\'emmagatzematge."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala d\'animació finestra"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala d\'animació transició"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de durada d\'animació"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pregunta sempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Fins que no ho desactivis"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Ara mateix"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Aquest dispositiu"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altaveu del telèfon"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Hi ha hagut un problema amb la connexió. Desactiva el dispositiu i torna\'l a activar."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositiu d\'àudio amb cable"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 932051d..cdec461 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Zobrazovat zařízení Bluetooth bez názvů"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Zakázat absolutní hlasitost"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Zapnout funkci Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Lepší připojování"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Verze profilu Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Vyberte verzi profilu Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Verze MAP pro Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Zařízení Bluetooth se budou zobrazovat bez názvů (pouze adresy MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Zakáže funkci absolutní hlasitosti Bluetooth. Zabrání tak problémům s hlasitostí vzdálených zařízení (jako je příliš vysoká hlasitost nebo nemožnost ovládání)."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Zapne sadu funkcí Bluetooth Gabeldorche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktivuje funkci Lepší připojování."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Místní terminál"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktivovat terminálovou aplikaci pro místní přístup k prostředí shell"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Kontrola HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil – vykres. HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Povolit vrstvy ladění GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povolit načítání vrstev ladění GPU pro ladicí aplikace"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Povolit podrobné protokolování dodavatele"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahrnovat do zpráv o chybách dodatečné protokoly dodavatelů specifické pro zařízení, které mohou obsahovat soukromé údaje, více vybíjet baterii nebo využívat více místa v úložišti."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Měřítko animace okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Měřítko animace přeměny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Měřítko délky animace"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pokaždé se zeptat"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dokud tuto funkci nevypnete"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Právě teď"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Toto zařízení"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Reproduktor telefonu"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problém s připojením. Vypněte zařízení a znovu jej zapněte"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kabelové audiozařízení"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index 20fbf94..d88c149 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Vis Bluetooth-enheder uden navne"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Deaktiver absolut lydstyrke"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktivér Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced Connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"AVRCP-version for Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Vælg AVRCP-version for Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"MAP-version for Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-enheder uden navne (kun MAC-adresser) vises"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Deaktiverer funktionen til absolut lydstyrke via Bluetooth i tilfælde af problemer med lydstyrken på eksterne enheder, f.eks. uacceptabel høj lyd eller manglende kontrol."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiverer funktioner fra Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktivér funktionen Enhanced Connectivity."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokal terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktivér terminalappen, der giver lokal shell-adgang"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-kontrol"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-profilgengivelse"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Aktivér fejlretningslag for grafikprocessor"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillad, at fejlretningslag indlæses for grafikprocessor i apps til fejlretning"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivér detaljeret leverandørlogging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Medtag yderligere enhedsspecifikke leverandørlogfiler i fejlrapporter, som muligvis indeholder personlige oplysninger. Dette bruger muligvis mere batteri og/eller lagerplads."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animationsskala for vindue"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimationsskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatorvarighedsskala"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Spørg hver gang"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Indtil du deaktiverer"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Lige nu"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Denne enhed"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonens højttaler"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Der kunne ikke oprettes forbindelse. Sluk og tænd enheden"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhed med ledning"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index 3d46649a..b388686 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth-Geräte ohne Namen anzeigen"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Absolute Lautstärkeregelung deaktivieren"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Bluetooth-Gabeldorsche aktivieren"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Verbesserte Konnektivität"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP-Version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP-Version auswählen"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-Version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-Geräte werden ohne Namen und nur mit ihren MAC-Adressen angezeigt"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Deaktiviert die Funktion \"Absolute Lautstärkeregelung\" für Bluetooth-Geräte, falls auf Remote-Geräten Probleme mit der Lautstärke auftreten, wie beispielsweise übermäßig laute Wiedergabe oder fehlende Steuerungsmöglichkeiten."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiviert das Bluetooth-Gabeldorsche-Funktionspaket."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktiviert die Funktion \"Verbesserte Konnektivität\"."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokales Terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Terminal-App mit Zugriff auf lokale Shell aktivieren"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-Prüfung"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-Rendering für Profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-Debug-Ebenen zulassen"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Debug-Apps das Laden von GPU-Debug-Ebenen erlauben"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ausführliche Protokollierung aktivieren"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"Fensteranimationsfaktor"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Übergangsanimationsfaktor"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animationsdauerfaktor"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Jedes Mal fragen"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Bis zur Deaktivierung"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"gerade eben"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Dieses Gerät"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Smartphone-Lautsprecher"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Verbindung kann nicht hergestellt werden. Schalte das Gerät aus & und wieder ein."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Netzbetriebenes Audiogerät"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 6bd8736..07f73c3 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Εμφάνιση συσκευών Bluetooth χωρίς ονόματα"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Απενεργοποίηση απόλυτης έντασης"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Ενεργοποίηση Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Βελτιωμένη συνδεσιμότητα"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Έκδοση AVRCP Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Επιλογή έκδοσης AVRCP Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Έκδοση MAP Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Θα εμφανιστούν οι συσκευές Bluetooth χωρίς ονόματα (μόνο διευθύνσεις MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Απενεργοποιεί τη δυνατότητα απόλυτης έντασης του Bluetooth σε περίπτωση προβλημάτων έντασης με απομακρυσμένες συσκευές, όπως όταν υπάρχει μη αποδεκτά υψηλή ένταση ή απουσία ελέγχου."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ενεργοποιεί τη στοίβα λειτουργιών Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Επιτρέπει τη λειτουργία Βελτιωμένης συνδεσιμότητας."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Τοπική τερματική εφαρμογή"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Ενεργοπ.τερμ.εφαρμογής που προσφέρει πρόσβαση στο τοπικό κέλυφος"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Έλεγχος HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Απόδοση HWUI προφίλ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ενεργ. επιπ. εντ. σφ. GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Φόρτωση επιπ. εντοπ. σφ. GPU για εφαρμ. αντιμ. σφ."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ενεργ. λεπτ. καταγραφής προμ."</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Συμπερίληψη πρόσθετων αρχείων καταγραφής προμηθευτή για συγκεκριμένες συσκευές στις αναφορές σφαλμάτων, τα οποία ενδέχεται να περιέχουν ιδιωτικές πληροφορίες, να χρησιμοποιούν περισσότερη μπαταρία ή/και να χρησιμοποιούν περισσότερο αποθηκευτικό χώρο."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Κλίμακα κίνησης παραθύρου"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Κλίμακα κίνησης μετάβασης"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Κλίμ. διάρ. Animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Να ερωτώμαι κάθε φορά"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Μέχρι την απενεργοποίηση"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Μόλις τώρα"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Αυτή η συσκευή"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Ηχείο τηλεφώνου"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Πρόβλημα κατά τη σύνδεση. Απενεργοποιήστε τη συσκευή και ενεργοποιήστε την ξανά"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Ενσύρματη συσκευή ήχου"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index 810f81e..79cf4df 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disable absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Enable Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Select Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth devices without names (MAC addresses only) will be displayed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Enables the Bluetooth Gabeldorsche feature stack."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Enables the enhanced connectivity feature."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Local terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Enable terminal app that offers local shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP checking"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profile HWUI rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Enable GPU debug layers"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ask every time"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Just now"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"This device"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index 810f81e..79cf4df 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disable absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Enable Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Select Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth devices without names (MAC addresses only) will be displayed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Enables the Bluetooth Gabeldorsche feature stack."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Enables the enhanced connectivity feature."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Local terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Enable terminal app that offers local shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP checking"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profile HWUI rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Enable GPU debug layers"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ask every time"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Just now"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"This device"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index 810f81e..79cf4df 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disable absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Enable Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Select Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth devices without names (MAC addresses only) will be displayed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Enables the Bluetooth Gabeldorsche feature stack."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Enables the enhanced connectivity feature."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Local terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Enable terminal app that offers local shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP checking"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profile HWUI rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Enable GPU debug layers"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ask every time"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Just now"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"This device"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index 810f81e..79cf4df 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disable absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Enable Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Select Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth devices without names (MAC addresses only) will be displayed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Enables the Bluetooth Gabeldorsche feature stack."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Enables the enhanced connectivity feature."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Local terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Enable terminal app that offers local shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP checking"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profile HWUI rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Enable GPU debug layers"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery and/or use more storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ask every time"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Just now"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"This device"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off and back on"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index d142c0a..c128e2c 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Show Bluetooth devices without names"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disable absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Enable Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced Connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Select Bluetooth AVRCP Version"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP Version"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth devices without names (MAC addresses only) will be displayed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disables the Bluetooth absolute volume feature in case of volume issues with remote devices such as unacceptably loud volume or lack of control."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Enables the Bluetooth Gabeldorsche feature stack."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Enables the Enhanced Connectivity feature."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Local terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Enable terminal app that offers local shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP checking"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profile HWUI rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Enable GPU debug layers"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Allow loading GPU debug layers for debug apps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Include additional device-specific vendor logs in bug reports, which may contain private information, use more battery, and/or use more storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window animation scale"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Transition animation scale"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator duration scale"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ask every time"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Until you turn off"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Just now"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"This device"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Phone speaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem connecting. Turn device off & back on"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index 8b99f72..06660ee 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sin nombre"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Inhabilitar volumen absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Habilitar Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectividad mejorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versión de AVRCP del Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecciona la versión de AVRCP del Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versión de MAP de Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Se mostrarán los dispositivos Bluetooth sin nombre (solo direcciones MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Inhabilita la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen demasiado alto o falta de control)."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Habilita la pila de funciones de Bluetooth Gabeldorsche"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Habilita la función Conectividad mejorada."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Habilitar aplicac. de terminal que ofrece acceso al shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Comprobación HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Perfil procesamiento HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Habilitar depuración GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir capas de GPU para apps de depuración"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilitar registro detallado"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en los informes de errores, que podrían contener información privada, consumir más batería o usar más espacio de almacenamiento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación de ventana"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animador"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Preguntar siempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Hasta que lo desactives"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Recién"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altavoz del teléfono"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Error al establecer la conexión. Apaga el dispositivo y vuelve a encenderlo."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index 5c8efc5..2e5adb8 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -202,7 +202,7 @@
<string name="development_settings_not_available" msgid="355070198089140951">"Las opciones de desarrollador no están disponibles para este usuario"</string>
<string name="vpn_settings_not_available" msgid="2894137119965668920">"Los ajustes de VPN no están disponibles para este usuario"</string>
<string name="tethering_settings_not_available" msgid="266821736434699780">"Los ajustes para compartir conexión no están disponibles para este usuario"</string>
- <string name="apn_settings_not_available" msgid="1147111671403342300">"Los ajustes del nombre de punto de acceso no están disponibles para este usuario"</string>
+ <string name="apn_settings_not_available" msgid="1147111671403342300">"Los ajustes del nombre del punto de acceso no están disponibles para este usuario"</string>
<string name="enable_adb" msgid="8072776357237289039">"Depuración por USB"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"Activar el modo de depuración cuando el dispositivo esté conectado por USB"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"Revocar autorizaciones de depuración USB"</string>
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sin nombre"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Inhabilitar volumen absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Habilitar Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectividad mejorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versión AVRCP de Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecciona la versión AVRCP de Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versión de MAP de Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Mostrar dispositivos Bluetooth sin nombre (solo direcciones MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Inhabilitar la función de volumen absoluto de Bluetooth si se producen problemas de volumen con dispositivos remotos (por ejemplo, volumen demasiado alto o falta de control)"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Habilita la pila de funciones de Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Habilita la función de conectividad mejorada."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Habilitar aplicación de terminal que ofrece acceso a shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Comprobación de HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Trazar la renderización de HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activar capas de depuración de GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir cargar capas de depuración de GPU en aplicaciones"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Habilit. registro de proveedor"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Incluye otros registros de proveedor específicos del dispositivo en informes de errores; es posible que contenga información privada, que consuma más batería o que ocupe más espacio de almacenamiento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación de ventana"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animación de transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duración de animación"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Preguntar siempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Hasta que se desactive"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Justo ahora"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altavoz del teléfono"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"No se ha podido conectar; reinicia el dispositivo"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index 7597476..027ab1a 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Kuva ilma nimedeta Bluetoothi seadmed"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Keela absoluutne helitugevus"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Luba Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Täiustatud ühenduvus"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetoothi AVRCP versioon"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Valige Bluetoothi AVRCP versioon"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetoothi MAP-i versioon"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Kuvatakse ilma nimedeta (ainult MAC-aadressidega) Bluetoothi seadmed"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Keelatakse Bluetoothi absoluutse helitugevuse funktsioon, kui kaugseadmetega on helitugevuse probleeme (nt liiga vali heli või juhitavuse puudumine)."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Lubab Bluetooth Gabeldorsche\'i funktsiooni virnastamise."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Lubab täiustatud ühenduvuse funktsiooni."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Kohalik terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Luba kohalikku turvalist juurdepääsu pakkuv terminalirakendus"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-kontrollimine"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profiili HWUI renderdamine"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU silumise kihtide lubamine"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU silumise kihtide laadimise lubamine silumisrakendustele"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Luba paljusõnaline logimine"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Veaaruannetesse kaasatakse täiendavad seadmepõhised teenusepakkuja logid, mis võivad sisaldada privaatset teavet, kasutada rohkem akut ja/või salvestusruumi."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Akna animatsioonimastaap"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ülemineku animatsioonimastaap"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaatori kestuse mastaap"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Küsi iga kord"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Kuni välja lülitate"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Äsja"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"See seade"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefoni kõlar"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem ühendamisel. Lülitage seade välja ja uuesti sisse"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Juhtmega heliseade"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index fd2635a..95ed7f0 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -212,9 +212,9 @@
<string name="adb_wireless_settings" msgid="2295017847215680229">"Hari gabeko arazketa"</string>
<string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"Erabilgarri dauden gailuak ikusteko eta erabiltzeko, aktibatu hari gabeko arazketa"</string>
<string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"Parekatu gailua QR kodearekin"</string>
- <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"Parekatu gailu berriak QR kodea eskaneatuta"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"Parekatu gailu gehiago QR kodea eskaneatuta"</string>
<string name="adb_pair_method_code_title" msgid="1122590300445142904">"Parekatu gailua parekatze-kodearekin"</string>
- <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parekatu gailu berriak sei digituko kodearekin"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"Parekatu gailu gehiago sei digituko kodearekin"</string>
<string name="adb_paired_devices_title" msgid="5268997341526217362">"Parekatutako gailuak"</string>
<string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"Konektatuta daudenak"</string>
<string name="adb_wireless_device_details_title" msgid="7129369670526565786">"Gailuaren xehetasunak"</string>
@@ -226,12 +226,12 @@
<string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Wifi bidezko parekatze-kodea"</string>
<string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Ezin izan da parekatu gailua"</string>
<string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Ziurtatu gailua sare berera konektatuta dagoela."</string>
- <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parekatu gailua wifi sare baten bidez QR kode bat eskaneatuta"</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Parekatu gailua wifi-sare baten bidez QR kode bat eskaneatuta"</string>
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Gailua parekatzen…"</string>
- <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Ezin izan da parekatu gailua. QR kodea ez zen zuzena zen edo gailua ez dago sare berera konektatuta."</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Ezin izan da parekatu gailua. QR kodea ez da zuzena edo gailua ez dago sare berera konektatuta."</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP helbidea eta ataka"</string>
<string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Eskaneatu QR kodea"</string>
- <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parekatu gailua wifi sare baten bidez QR kode bat eskaneatuta"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Parekatu gailua wifi-sare baten bidez QR kode bat eskaneatuta"</string>
<string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, araztu, gailua"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"Akatsen txostenerako lasterbidea"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"Bateriaren menuan, erakutsi akatsen txostena sortzeko botoia"</string>
@@ -252,9 +252,10 @@
<string name="wifi_scan_throttling" msgid="2985624788509913617">"Wifi-sareen bilaketaren muga"</string>
<string name="mobile_data_always_on" msgid="8275958101875563572">"Datu-konexioa beti aktibo"</string>
<string name="tethering_hardware_offload" msgid="4116053719006939161">"Konexioa partekatzeko hardwarearen azelerazioa"</string>
- <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Erakutsi Bluetooth gailuak izenik gabe"</string>
+ <string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Erakutsi Bluetooth bidezko gailuak izenik gabe"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desgaitu bolumen absolutua"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gaitu Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Konexio hobeak"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP bertsioa"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Hautatu Bluetooth AVRCP bertsioa"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAParen bertsioa"</string>
@@ -305,9 +306,10 @@
<string name="dev_settings_warning_message" msgid="37741686486073668">"Ezarpen hauek garapen-xedeetarako pentsatu dira soilik. Baliteke ezarpenen eraginez gailua matxuratzea edo funtzionamendu okerra izatea."</string>
<string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Egiaztatu USBko aplikazioak"</string>
<string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Egiaztatu ADB/ADT bidez instalatutako aplikazioak portaera kaltegarriak atzemateko"</string>
- <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth gailuak izenik gabe (MAC helbideak soilik) erakutsiko dira"</string>
+ <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth bidezko gailuak izenik gabe (MAC helbideak soilik) erakutsiko dira"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Bluetooth bidezko bolumen absolutuaren eginbidea desgaitu egiten du urruneko gailuetan arazoak hautematen badira; esaterako, bolumena ozenegia bada edo ezin bada kontrolatu"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche eginbide sorta gaitzen du."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Konexioak hobetzeko eginbidea gaitzen du."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Tokiko terminala"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Gaitu tokiko shell-sarbidea duen terminal-aplikazioa"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP egiaztapena"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"Profilaren HWUI errendatzea"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Gaitu GPUaren arazketa-geruzak"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Eman GPUaren arazketa-geruzak kargatzeko baimena arazketa-aplikazioei"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Gaitu saltzaileen erregistro xehatuak"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"Leihoen animazio-eskala"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Trantsizioen animazio-eskala"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatzailearen iraupena"</string>
@@ -412,7 +417,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopia (gorri-berdeak)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopia (urdin-horia)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koloreen zuzenketa"</string>
- <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"Kolore-zuzenketak kolore zehatzagoak ikusten laguntzen die kolore-itsutasuna duten pertsonei"</string>
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"Koloreen zuzenketak kolore zehatzagoak ikusten laguntzen die kolore-itsutasuna duten pertsonei"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> hobespena gainjarri zaio"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> inguru gelditzen dira"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Galdetu beti"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Zuk desaktibatu arte"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Oraintxe"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Gailu hau"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonoaren bozgorailua"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Arazoren bat izan da konektatzean. Itzali gailua eta pitz ezazu berriro."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio-gailu kableduna"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 9d92cfe..4cc6974 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"نمایش دستگاههای بلوتوث بدون نام"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"غیرفعال کردن میزان صدای مطلق"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"فعال کردن Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"اتصال بهبودیافته"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"نسخه AVRCP بلوتوث"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"انتخاب نسخه AVRCP بلوتوث"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"نسخه MAP بلوتوث"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"دستگاههای بلوتوث بدون نام (فقط نشانیهای MAC) نشان داده خواهند شد"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"درصورت وجود مشکل در صدا با دستگاههای راه دور مثل صدای بلند ناخوشایند یا عدم کنترل صدا، ویژگی میزان صدای کامل بلوتوث را غیرفعال کنید."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"دسته ویژگی Gabeldorsche، بلوتوث را فعال میکند."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ویژگی «اتصال بهبودیافته» را فعال میکند."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ترمینال محلی"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"فعال کردن ترمینال برنامه کاربردی که دسترسی به برنامه محلی را پیشنهاد میکند"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"بررسی HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"پرداز زدن HWUI نمایه"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"فعال کردن لایههای اشکالزدایی GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"مجاز کردن بارگیری لایههای اشکالزدایی GPU برای برنامههای اشکالزدایی"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"فعال کردن گزارش طولانی فروشنده"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"شامل گزارشات اشکال تکمیلی ورود به سیستم فروشنده ویژه دستگاه میشود که ممکن است دربرگیرنده اطلاعات خصوصی، استفاده بیشتر از باتری، و/یا استفاده بیشتر از فضای ذخیرهسازی باشد."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"مقیاس پویانمایی پنجره"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"مقیاس پویانمایی انتقالی"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"مقیاس طول مدت انیماتور"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"هربار پرسیده شود"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"تا زمانیکه آن را خاموش کنید"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"هماکنون"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"این دستگاه"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"بلندگوی تلفن"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"مشکل در اتصال. دستگاه را خاموش و دوباره روشن کنید"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"دستگاه صوتی سیمی"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 6bb6d5b..a2531d5 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Näytä nimettömät Bluetooth-laitteet"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Poista yleinen äänenvoimakkuuden säätö käytöstä"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Ota Gabeldorsche käyttöön"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Parannetut yhteydet"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetoothin AVRCP-versio"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Valitse Bluetoothin AVRCP-versio"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetoothin MAP-versio"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Näytetään Bluetooth-laitteet, joilla ei ole nimiä (vain MAC-osoitteet)."</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Bluetoothin yleinen äänenvoimakkuuden säätö poistetaan käytöstä ongelmien välttämiseksi esimerkiksi silloin, kun laitteen äänenvoimakkuus on liian kova tai sitä ei voi säätää."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetoothin Gabeldorsche-ominaisuuspino otetaan käyttöön."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ottaa käyttöön Parannetut yhteydet ‑ominaisuuden."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Paikallinen pääte"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Ota käyttöön päätesov. joka mahdollistaa paikall. liittymäkäytön"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-tarkistus"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-profiilirenderöinti"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-virheenkorjaus päälle"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Salli GPU:n virheenkorjauskerrosten lataus."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Käytä laajennettua kirjausta"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sisällytä virheraportteihin muita laitekohtaisia myyjälokeja, jotka voivat sisältää yksityisiä tietoja, käyttää enemmän akkua ja/tai käyttää enemmän tallennustilaa."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Ikkuna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Siirtymä"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animaattori"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Kysy aina"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Kunnes poistat sen käytöstä"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Äsken"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Tämä laite"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Puhelimen kaiutin"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Yhteysvirhe. Sammuta laite ja käynnistä se uudelleen."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Langallinen äänilaite"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index b040be9..8ee44ac 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -226,13 +226,13 @@
<string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"Code d\'association Wi-Fi"</string>
<string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"Échec de l\'association"</string>
<string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"Vérifier que l\'appareil est connecté au même réseau."</string>
- <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Associer un appareil au Wi-Fi en numérisant un code QR"</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"Associer un appareil par Wi-Fi en numérisant un code QR"</string>
<string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"Association de l\'appareil en cours…"</string>
<string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"Échec de l\'association de l\'appareil Soit le code QR est incorrect, soit l\'appareil n\'est pas connecté au même réseau."</string>
<string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"Adresse IP et port"</string>
<string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"Numériser le code QR"</string>
- <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Associer un appareil au Wi-Fi en numérisant un code QR"</string>
- <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, débogage, appareil"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"Associer un appareil par Wi-Fi en numérisant un code QR"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, débogage, concepteur"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"Raccourci de rapport de bogue"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"Afficher un bouton permettant d\'établir un rapport de bogue dans le menu de démarrage"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"Rester activé"</string>
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afficher les appareils Bluetooth sans nom"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Désactiver le volume absolu"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Activer le Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Connectivité améliorée"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Version du profil Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Sélectionner la version du profil Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Version du profil Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Les appareils Bluetooth sans nom (adresses MAC seulement) seront affichés"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Désactive la fonctionnalité de volume absolu par Bluetooth en cas de problème de volume sur les appareils à distance, par exemple si le volume est trop élevé ou s\'il ne peut pas être contrôlé."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Active la pile de la fonctionnalité Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Active la fonctionnalité Connectivité améliorée."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activer l\'application Terminal permettant l\'accès au shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Vérification HDCP"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"Rendu HWUI du profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activer couches débogage GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Autoriser couches débogage GPU pour applis de débogage"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activer le journal détaillé des fournisseurs"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle animation fenêtres"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle animination transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle durée animation"</string>
@@ -443,7 +448,7 @@
<string name="battery_info_status_unknown" msgid="268625384868401114">"Inconnu"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"Charge en cours…"</string>
<string name="battery_info_status_charging_fast" msgid="8027559755902954885">"Recharge rapide"</string>
- <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Charge lente"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"Recharge lente"</string>
<string name="battery_info_status_discharging" msgid="6962689305413556485">"N\'est pas en charge"</string>
<string name="battery_info_status_not_charging" msgid="8330015078868707899">"L\'appareil est branché, mais il ne peut pas être chargé pour le moment"</string>
<string name="battery_info_status_full" msgid="4443168946046847468">"Pleine"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Toujours demander"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Jusqu\'à la désactivation"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"À l\'instant"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Cet appareil"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Haut-parleur du téléphone"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problème de connexion. Éteingez et rallumez l\'appareil"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Appareil audio à câble"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index fb70c88..271c52b 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afficher les appareils Bluetooth sans nom"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Désactiver le volume absolu"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Activer Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Connectivité améliorée"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Version Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Sélectionner la version Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Version Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Les appareils Bluetooth sans nom (adresses MAC seulement) seront affichés"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Désactive la fonctionnalité de volume absolu du Bluetooth en cas de problème de volume sur les appareils à distance, par exemple si le volume est trop élevé ou s\'il ne peut pas être contrôlé"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Active la pile de fonctionnalités Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Active la fonctionnalité Connectivité améliorée."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activer l\'application Terminal permettant l\'accès au shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Vérification HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Rendu HWUI du profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activer les couches de débogage GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Autoriser le chargement de couches de débogage GPU"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Act. journalisation détaillée"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclure les journaux supplémentaires du fournisseur, spécifiques à l\'appareil, dans les rapports de bug. Ils peuvent contenir des informations personnelles, solliciter davantage la batterie et/ou utiliser plus d\'espace de stockage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Échelle d\'animation des fenêtres"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Échelle d\'animation des transitions"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Échelle de durée d\'animation"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Toujours demander"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Jusqu\'à la désactivation"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"À l\'instant"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Cet appareil"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Haut-parleur du téléphone"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problème de connexion. Éteignez l\'appareil, puis rallumez-le"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Appareil audio filaire"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index 1407a50..ec600c0 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sen nomes"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desactivar volume absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Activar Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectividade mellorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versión de Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecciona a versión de Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versión de MAP de Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Mostraranse dispositivos Bluetooth sen nomes (só enderezos MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desactiva a función do volume absoluto do Bluetooth en caso de que se produzan problemas de volume cos dispositivos remotos, como volume demasiado alto ou falta de control"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activa o conxunto de funcións de Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Activa a función de conectividade mellorada."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activa a aplicación terminal que ofrece acceso ao shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Comprobación HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Perfil procesamento HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activar depuración da GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permite capas da GPU para apps de depuración"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activar rexistro de provedores"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclúe outros rexistros de provedores específicos do dispositivo en informes de erros; pode conter información privada, consumir máis batería e ocupar máis espazo almacenamento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animación da ventá"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala animación-transición"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala duración animador"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Preguntar sempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Ata a desactivación"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Agora mesmo"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altofalante do teléfono"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Produciuse un problema coa conexión. Apaga e acende o dispositivo."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de audio con cable"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 889857a..00c7b37 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"નામ વિનાના બ્લૂટૂથ ઉપકરણો બતાવો"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ચોક્કસ વૉલ્યૂમને અક્ષમ કરો"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ચાલુ કરો"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"વિસ્તૃત કનેક્ટિવિટી"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"બ્લૂટૂથ AVRCP સંસ્કરણ"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"બ્લૂટૂથ AVRCP સંસ્કરણ પસંદ કરો"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"બ્લૂટૂથ MAP વર્ઝન"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"નામ વગરના (ફક્ત MAC ઍડ્રેસવાળા) બ્લૂટૂથ ઉપકરણો બતાવવામાં આવશે"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"રિમોટ ઉપકરણોમાં વધુ પડતું ઊંચું વૉલ્યૂમ અથવા નિયંત્રણની કમી જેવી વૉલ્યૂમની સમસ્યાઓની સ્થિતિમાં બ્લૂટૂથ ચોક્કસ વૉલ્યૂમ સુવિધાને અક્ષમ કરે છે."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"બ્લૂટૂથ Gabeldorsche સુવિધાનું સ્ટૅક ચાલુ કરે છે."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"કનેક્ટિવિટીની વિસ્તૃત સુવિધા ચાલુ કરે છે."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"સ્થાનિક ટર્મિનલ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"સ્થાનિક શેલ અૅક્સેસની ઑફર કરતી ટર્મિનલ એપ્લિકેશનને સક્ષમ કરો"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP તપાસણી"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUIની પ્રોફાઇલ રેંડરીંગ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ડિબગ સ્તરોને સક્ષમ કરો"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ડિબગ ઍપ માટે GPU ડિબગ સ્તરો લોડ કરવાની મંજૂરી આપો"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"વર્બોઝ વેન્ડર લૉગિંગ ચાલુ કરો"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"વિંડો એનિમેશન સ્કેલ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"સંક્રમણ એનિમેશન સ્કેલ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"એનિમેટર અવધિ સ્કેલ"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"દર વખતે પૂછો"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"તમે બંધ ન કરો ત્યાં સુધી"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"હમણાં જ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"આ ડિવાઇસ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ફોન સ્પીકર"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"કનેક્ટ કરવામાં સમસ્યા આવી રહી છે. ડિવાઇસને બંધ કરીને ફરી ચાલુ કરો"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"વાયરવાળો ઑડિયો ડિવાઇસ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 24153b9..b382234 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -206,60 +206,33 @@
<string name="enable_adb" msgid="8072776357237289039">"USB डीबग करना"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"डीबग मोड जब USB कनेक्ट किया गया हो"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"USB डीबग करने की मंज़ूरी रद्द करें"</string>
- <!-- no translation found for enable_adb_wireless (6973226350963971018) -->
- <skip />
- <!-- no translation found for enable_adb_wireless_summary (7344391423657093011) -->
- <skip />
- <!-- no translation found for adb_wireless_error (721958772149779856) -->
- <skip />
- <!-- no translation found for adb_wireless_settings (2295017847215680229) -->
- <skip />
- <!-- no translation found for adb_wireless_list_empty_off (1713707973837255490) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_title (6982904096137468634) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_summary (3729901496856458634) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_title (1122590300445142904) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_summary (6370414511333685185) -->
- <skip />
- <!-- no translation found for adb_paired_devices_title (5268997341526217362) -->
- <skip />
- <!-- no translation found for adb_wireless_device_connected_summary (3039660790249148713) -->
- <skip />
- <!-- no translation found for adb_wireless_device_details_title (7129369670526565786) -->
- <skip />
- <!-- no translation found for adb_device_forget (193072400783068417) -->
- <skip />
- <!-- no translation found for adb_device_fingerprint_title_format (291504822917843701) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_title (664211177427438438) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_message (9213896700171602073) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_title (7141739231018530210) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_pairing_code_label (3639239786669722731) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_title (3426758947882091735) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_msg (6611097519661997148) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_summary (8051414549011801917) -->
- <skip />
- <!-- no translation found for adb_wireless_verifying_qrcode_text (6123192424916029207) -->
- <skip />
- <!-- no translation found for adb_qrcode_pairing_device_failed_msg (6936292092592914132) -->
- <skip />
- <!-- no translation found for adb_wireless_ip_addr_preference_title (8335132107715311730) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_title (1906409667944674707) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_description (8578868049289910131) -->
- <skip />
- <!-- no translation found for keywords_adb_wireless (6507505581882171240) -->
- <skip />
+ <string name="enable_adb_wireless" msgid="6973226350963971018">"वायरलेस डीबग करना"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"डिवाइस के वाई-फ़ाई से कनेक्ट हाेने पर, डीबग मोड चालू करें"</string>
+ <string name="adb_wireless_error" msgid="721958772149779856">"गड़बड़ी"</string>
+ <string name="adb_wireless_settings" msgid="2295017847215680229">"वायरलेस डीबग करना"</string>
+ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"उपलब्ध डिवाइस देखने और इस्तेमाल करने के लिए, वायरलेस डीबग करने की सुविधा चालू करें"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"क्यूआर कोड की मदद से डिवाइस जोड़ें"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"क्यूआर कोड स्कैनर का इस्तेमाल करके, नए डिवाइस जोड़ें"</string>
+ <string name="adb_pair_method_code_title" msgid="1122590300445142904">"जोड़ने का कोड इस्तेमाल करके, डिवाइस जोड़ें"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"छह अंकों का कोड इस्तेमाल करके, नए डिवाइस जोड़ें"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"जोड़े गए डिवाइस"</string>
+ <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"फ़िलहाल, कनेक्ट किया गया"</string>
+ <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"डिवाइस की जानकारी"</string>
+ <string name="adb_device_forget" msgid="193072400783068417">"जानकारी हटाएं"</string>
+ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"डिवाइस फ़िंगरप्रिंट: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
+ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"कनेक्ट नहीं किया जा सका"</string>
+ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"पक्का करें कि <xliff:g id="DEVICE_NAME">%1$s</xliff:g> सही नेटवर्क से कनेक्ट किया गया है"</string>
+ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"डिवाइस से जोड़ें"</string>
+ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"वाई-फ़ाई से जोड़ने का कोड"</string>
+ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"दूसरे डिवाइस से जोड़ा नहीं जा सका"</string>
+ <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"पक्का करें कि आपका डिवाइस और दूसरा डिवाइस, दाेनाें एक ही नेटवर्क से जुड़े हैं."</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"क्यूआर कोड स्कैन करके, वाई-फ़ाई से डिवाइस को जोड़ें"</string>
+ <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"डिवाइस जोड़ा जा रहा है…"</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"डिवाइस को जोड़ा नहीं जा सका. शायद, क्यूआर कोड ठीक नहीं था या फिर आपका डिवाइस और दूसरा डिवाइस, दाेनाें एक ही नेटवर्क से नहीं जुड़े हैं."</string>
+ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"आईपी पता और पोर्ट"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"क्यूआर कोड स्कैन करें"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"क्यूआर कोड स्कैन करके, वाई-फ़ाई से डिवाइस को जोड़ें"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"गड़बड़ी की रिपोर्ट का शॉर्टकट"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"गड़बड़ी की रिपोर्ट लेने के लिए पावर मेन्यू में कोई बटन दिखाएं"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"स्क्रीन को चालू रखें"</string>
@@ -282,6 +255,8 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"बिना नाम वाले ब्लूटूथ डिवाइस दिखाएं"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ब्लूटूथ से आवाज़ के नियंत्रण की सुविधा रोकें"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche चालू करें"</string>
+ <!-- no translation found for enhanced_connectivity (7201127377781666804) -->
+ <skip />
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ब्लूटूथ एवीआरसीपी वर्शन"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ब्लूटूथ AVRCP वर्शन चुनें"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ब्लूटूथ का MAP वर्शन"</string>
@@ -325,10 +300,8 @@
<string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"हार्डवेयर से तेज़ी लाने के लिए टेदर करने की सुविधा मौजूद होने पर उसका इस्तेमाल करें"</string>
<string name="adb_warning_title" msgid="7708653449506485728">"USB डीबग करने की अनुमति दें?"</string>
<string name="adb_warning_message" msgid="8145270656419669221">"USB डीबग करने का मकसद केवल डेवेलप करना है. इसका इस्तेमाल आपके कंप्यूटर और आपके डिवाइस के बीच डेटा को कॉपी करने, बिना सूचना के आपके डिवाइस पर ऐप इंस्टॉल करने और लॉग डेटा पढ़ने के लिए करें."</string>
- <!-- no translation found for adbwifi_warning_title (727104571653031865) -->
- <skip />
- <!-- no translation found for adbwifi_warning_message (8005936574322702388) -->
- <skip />
+ <string name="adbwifi_warning_title" msgid="727104571653031865">"वायरलेस डीबग करने की अनुमति देना चाहते हैं?"</string>
+ <string name="adbwifi_warning_message" msgid="8005936574322702388">"वायरलेस डीबग करने का मकसद सिर्फ़ डेवलपमेंट करना है. इसका इस्तेमाल, आपके कंप्यूटर और डिवाइस के बीच डेटा कॉपी करने, बिना सूचना के आपके डिवाइस पर ऐप्लिकेशन इंस्टॉल करने, और लॉग डेटा पढ़ने के लिए करें."</string>
<string name="adb_keys_warning_message" msgid="2968555274488101220">"उन सभी कंप्यूटरों से USB डीबग करने की पहुंचर रद्द करें, जिन्हें आपने पहले इसकी मंज़ूरी दी थी?"</string>
<string name="dev_settings_warning_title" msgid="8251234890169074553">"विकास सेटिंग की अनुमति दें?"</string>
<string name="dev_settings_warning_message" msgid="37741686486073668">"ये सेटिंग केवल विकास संबंधी उपयोग के प्रयोजन से हैं. वे आपके डिवाइस और उस पर स्थित ऐप्लिकेशन को खराब कर सकती हैं या उनके दुर्व्यवहार का कारण हो सकती हैं."</string>
@@ -337,6 +310,8 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"बिना नाम वाले ब्लूटूथ डिवाइस (केवल MAC पते वाले) दिखाए जाएंगे"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"दूर के डिवाइस पर आवाज़ बहुत बढ़ जाने या उससे नियंत्रण हटने जैसी समस्याएं होने पर, यह ब्लूटूथ के ज़रिए आवाज़ के नियंत्रण की सुविधा रोक देता है."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ब्लूटूथ सेटिंग में Gabeldorsche सुविधा को चालू करता है."</string>
+ <!-- no translation found for enhanced_connectivity_summary (1576414159820676330) -->
+ <skip />
<string name="enable_terminal_title" msgid="3834790541986303654">"स्थानीय टर्मिनल"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"लोकल शेल तक पहुंचने की सुविधा देने वाले टर्मिनल ऐप को चालू करें"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"एचडीसीपी जाँच"</string>
@@ -383,6 +358,9 @@
<string name="track_frame_time" msgid="522674651937771106">"प्रोफ़ाइल HWUI रेंडरिंग"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"जीपीयू डीबग लेयर चालू करें"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डीबग ऐप के लिए जीपीयू डीबग लेयर लोड करने दें"</string>
+ <!-- no translation found for enable_verbose_vendor_logging (1196698788267682072) -->
+ <skip />
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"गड़बड़ियों की रिपोर्ट में खास डिवाइस से जुड़े वेंडर लॉग शामिल करें. इन लॉग में निजी जानकारी, बैटरी का ज़्यादा इस्तेमाल, और/या डिवाइस की मेमोरी ज़्यादा इस्तेमाल करने की जानकारी हो सकती है."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"विंडो एनिमेशन स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांज़िशन एनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"एनिमेटर अवधि स्केल"</string>
@@ -441,8 +419,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"लाल रंग पहचान न पाना (लाल-हरा)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"नीला रंग पहचान न पाना (नीला-पीला)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रंग सुधार"</string>
- <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
- <skip />
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"रंग में सुधार करने की सेटिंग, वर्णान्धता (कलर ब्लाइंडनेस) वाले लोगों को ज़्यादा सटीक रंग देखने में मदद करती है"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> के द्वारा ओवरराइड किया गया"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"बैटरी करीब <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string>
@@ -461,27 +438,19 @@
<string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g> से कम बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> से ज़्यादा चलने लायक बैटरी बची है (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_only_more_than_subtext" msgid="3274496164769110480">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> से ज़्यादा चलने लायक बैटरी बची है"</string>
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (137330009791560774) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (145489081521468132) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (1070562682853942350) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4429259621177089719) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (7703677921000858479) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4374784375644214578) -->
- <skip />
+ <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"फ़ोन जल्द ही बंद हो सकता है"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"टैबलेट जल्द ही बंद हो सकता है"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"डिवाइस जल्द ही बंद हो सकता है"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"फ़ोन जल्द ही बंद हो सकता है (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"टैबलेट जल्द ही बंद हो सकता है (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"डिवाइस जल्द ही बंद हो सकता है (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="7415639699283965818">"चार्ज पूरा होने में <xliff:g id="TIME">%1$s</xliff:g> बचा है"</string>
<string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> में पूरा चार्ज हो जाएगा"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हो रही है"</string>
- <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
- <skip />
- <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
- <skip />
+ <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"तेज़ चार्ज हो रही है"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"धीरे चार्ज हो रही है"</string>
<string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज नहीं हो रही है"</string>
<string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लग इन है, अभी चार्ज नहीं हो सकती"</string>
<string name="battery_info_status_full" msgid="4443168946046847468">"पूरी"</string>
@@ -539,6 +508,9 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"हर बार पूछें"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"जब तक आप इसे बंद नहीं करते"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"अभी-अभी"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"यह डिवाइस"</string>
+ <!-- no translation found for media_transfer_this_device_name (2716555073132169240) -->
+ <skip />
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्ट करने में समस्या हो रही है. डिवाइस को बंद करके चालू करें"</string>
+ <!-- no translation found for media_transfer_wired_device_name (4447880899964056007) -->
+ <skip />
</resources>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 28a8858..a3d1b95 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži Bluetooth uređaje bez naziva"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogući apsolutnu glasnoću"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogući Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Poboljšana povezivost"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Verzija AVRCP-a za Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Odaberite verziju AVRCP-a za Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Verzija MAP-a za Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazivat će se Bluetooth uređaji bez naziva (samo MAC adrese)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogućuje Bluetoothovu značajku apsolutne glasnoće ako udaljeni uređaji imaju poteškoća sa zvukom, kao što su neprihvatljiva glasnoća ili nepostojanje kontrole"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogućuje nizove značajke Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogućuje značajku Poboljšana povezivost."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Omogući aplikaciju terminala koja nudi pristup lokalnoj ovojnici"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP provjera"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil HWUI generiranja"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omogući slojeve za otklanjanje pogrešaka GPU-a"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Omogućite učitavanje slojeva za otklanjanje pogrešaka GPU-a za aplikacije za otklanjanje pogrešaka"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogući opširni zapisnik"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Uključite dodatne zapisnike dobavljača pojedinog uređaja u izvješća o programskoj pogrešci koja mogu sadržavati privatne podatke, trošiti više baterije i/ili zauzeti više prostora za pohranu."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Brzina animacije prozora"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Brzina animacije prijelaza"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Razmjer duljine animatora"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pitaj svaki put"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dok ne isključite"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Upravo sad"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ovaj uređaj"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvučnik telefona"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem s povezivanjem. Isključite i ponovo uključite uređaj"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žičani audiouređaj"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index 61433be..e1c49c8 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Név nélküli Bluetooth-eszközök megjelenítése"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Abszolút hangerő funkció letiltása"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"A Gabeldorsche engedélyezése"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Enhanced Connectivity"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"A Bluetooth AVRCP-verziója"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"A Bluetooth AVRCP-verziójának kiválasztása"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"A Bluetooth MAP-verziója"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Név nélküli Bluetooth-eszközök jelennek meg (csak MAC-címekkel)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Letiltja a Bluetooth abszolút hangerő funkcióját a távoli eszközökkel kapcsolatos hangerőproblémák – például elfogadhatatlanul magas vagy nem vezérelhető hangerő – esetén."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Engedélyezi a Bluetooth Gabeldorsche funkcióit."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Bekapcsolja az Enhanced Connectivity funkciót."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Helyi végpont"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Végalkalmazás engedélyezése a helyi rendszerhéj eléréséhez"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ellenőrzés"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil HWUI-renderelése"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-hibakeresési rétegek engedélyezése"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU-hibakeresési rétegek betöltésének engedélyezése"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Részletes szolgáltatói naplózás engedélyezése"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"További eszközspecifikus szolgáltatói naplók felvétele a hibajelentésekbe. Ezek a naplók tartalmazhatnak privát információkat, ezenkívül előfordulhat, hogy jobban merítik az akkumulátort, illetve nagyobb tárhelyet foglalnak el."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Ablakanimáció tempója"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Áttűnési animáció tempója"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animáció tempója"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Mindig kérdezzen rá"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Kikapcsolásig"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Az imént"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ez az eszköz"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon hangszórója"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sikertelen csatlakozás. Kapcsolja ki az eszközt, majd kapcsolja be újra."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vezetékes audioeszköz"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 2e39f2c..db1748d 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Ցուցադրել Bluetooth սարքերն առանց անունների"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Անջատել ձայնի բացարձակ ուժգնությունը"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Միացնել Gabeldorsche-ը"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Տվյալների լավացված փոխանակում"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP տարբերակը"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Ընտրել Bluetooth AVRCP տարբերակը"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-ի տարբերակ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth սարքերը կցուցադրվեն առանց անունների (միայն MAC հասցեները)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Կասեցնում է Bluetooth-ի ձայնի բացարձակ ուժգնության գործառույթը՝ հեռավոր սարքերի հետ ձայնի ուժգնությանը վերաբերող խնդիրներ ունենալու դեպքում (օրինակ՝ երբ ձայնի ուժգնությունն անընդունելի է կամ դրա կառավարումը հնարավոր չէ):"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Միացնել Bluetooth Gabeldorsche գործառույթի զտիչը"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Միացնում է «Տվյալների լավացված փոխանակում» գործառույթը։"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Տեղային տերմինալ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Միացնել տերմինալային հավելվածը, որն առաջարկում է մուտք տեղային խեցի"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ստուգում"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Պրոֆիլի HWUI արտապատկերում"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Միացնել GPU վրիպազերծման շերտերը"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Թույլատրել GPU վրիպազերծման շերտերի բեռնումը վրիպազերծման հավելվածների համար"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Մատակարարի մանրամասն գրանցամատյան"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Վրիպակների հաշվետվություններում ներառել կոնկրետ սարքի վերաբերյալ մատակարարի լրացուցիչ մատյանները։ Դա կարող է պարունակել խիստ անձնական տեղեկություններ, ավելի արագ սպառել մարտկոցի լիցքը և/կամ ավելի շատ տարածք օգտագործել։"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Պատուհանի շարժապատկերի սանդղակ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Անցումային շարժական սանդղակ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Շարժանկարի տևողության սանդղակ"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Հարցնել ամեն անգամ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Մինչև չանջատեք"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Հենց նոր"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Այս սարքը"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Հեռախոսի բարձրախոս"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Կապի խնդիր կա: Սարքն անջատեք և նորից միացրեք:"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Լարով աուդիո սարք"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index b75fa35..02500ef 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Tampilkan perangkat Bluetooth tanpa nama"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Nonaktifkan volume absolut"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktifkan Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Konektivitas Yang Disempurnakan"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versi AVRCP Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Pilih Versi AVRCP Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versi MAP Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Perangkat Bluetooth tanpa nama (hanya alamat MAC) akan ditampilkan"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Menonaktifkan fitur volume absolut Bluetooth jika ada masalah volume dengan perangkat jarak jauh, misalnya volume terlalu keras atau kurangnya kontrol."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Mengaktifkan stack fitur Gabeldorsche Bluetooth."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Mengaktifkan fitur Konektivitas Yang Disempurnakan."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal lokal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktifkan aplikasi terminal yang menawarkan akses kerangka lokal"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Pemeriksaan HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Rendering HWUI profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Aktifkan lapisan debug GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Izinkan memuat lapisan debug GPU untuk aplikasi debug"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktifkan logging vendor panjang"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sertakan log vendor khusus perangkat tambahan dalam laporan bug, yang mungkin berisi informasi pribadi, menggunakan lebih banyak baterai, dan/atau menggunakan lebih banyak ruang penyimpanan."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animasi jendela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi transisi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala durasi animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Selalu tanya"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Sampai Anda menonaktifkannya"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Baru saja"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Perangkat ini"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Speaker ponsel"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ada masalah saat menghubungkan. Nonaktifkan perangkat & aktifkan kembali"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Perangkat audio berkabel"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index c75c689..7a7ba4c 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Sýna Bluetooth-tæki án heita"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Slökkva á samstillingu hljóðstyrks"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Virkja Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Aukin tengigeta"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP-útgáfa"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Velja Bluetooth AVRCP-útgáfu"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-útgáfa"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-tæki án heita (aðeins MAC-vistfang) verða birt"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Slekkur á samstillingu Bluetooth-hljóðstyrks ef vandamál koma upp með hljóðstyrk hjá fjartengdum tækjum, svo sem of hár hljóðstyrkur eða erfiðleikar við stjórnun."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Kveikir á eiginleikastafla Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Virkjar eiginleika aukinnar tengigetu."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Staðbundin skipanalína"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Virkja skipanalínuforrit sem leyfir staðbundinn skeljaraðgang"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-athugun"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-teiknun prófíls"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Virkja villuleit skják."</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Leyfa villuleit skjákorts fyrir villuleit forrita"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Nákvæm skráning söluaðila"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"Kvarði gluggahreyfinga"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Lengd hreyfiumbreytinga"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tímalengd hreyfiáhrifa"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Spyrja í hvert skipti"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Þar til þú slekkur"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Rétt í þessu"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Þetta tæki"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Símahátalari"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Vandamál í tengingu. Slökktu og kveiktu á tækinu"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Snúrutengt hljómtæki"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index f0dba68..01d7a65 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostra dispositivi Bluetooth senza nome"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Disattiva volume assoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Attiva Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Connettività migliorata"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versione Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Seleziona versione Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versione Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Verranno mostrati solo dispositivi Bluetooth senza nome (solo indirizzo MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Disattiva la funzione del volume assoluto Bluetooth in caso di problemi con il volume dei dispositivi remoti, ad esempio un volume troppo alto o la mancanza di controllo"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Consente di attivare lo stack delle funzionalità Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Consente di attivare la funzionalità Connettività migliorata."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminale locale"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Abilita l\'app Terminale che offre l\'accesso alla shell locale"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Verifica HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Rendering HWUI profilo"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Attiva livelli debug GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Consenti caricamento livelli debug GPU per app di debug"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Attiva reg. dettagl. fornitori"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Includi log aggiuntivi di fornitori relativi a un dispositivo specifico nelle segnalazioni di bug che potrebbero contenere informazioni private, causare un maggior consumo della batteria e/o utilizzare più spazio di archiviazione."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scala animazione finestra"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scala animazione transizione"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scala durata animatore"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Chiedi ogni volta"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Fino alla disattivazione"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Adesso"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Questo dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altoparlante telefono"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problema di connessione. Spegni e riaccendi il dispositivo"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo audio cablato"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 524a87d..49929d4 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"הצגת מכשירי Bluetooth ללא שמות"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"השבת עוצמת קול מוחלטת"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"הפעלת Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"קישוריות משופרת"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth גרסה AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"בחר Bluetooth גרסה AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"גרסת Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"יוצגו מכשירי Bluetooth ללא שמות (כתובות MAC בלבד)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"משבית את תכונת עוצמת הקול המוחלטת ב-Bluetooth במקרה של בעיות בעוצמת הקול במכשירים מרוחקים, כגון עוצמת קול רמה מדי או חוסר שליטה ברמת העוצמה."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"הפעלת מקבץ הפיצ\'רים של Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"הפעלה של תכונת הקישוריות המשופרת."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"מסוף מקומי"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"הפעל אפליקציית מסוף המציעה גישה מקומית למעטפת"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"בדיקת HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"עיבוד פרופיל ב-HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"הפעלת שכבות לניפוי באגים ב-GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"טעינת שכבות לניפוי באגים ב-GPU לאפליקציות ניפוי באגים"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"הפעלת רישום ספקים מפורט ביומן"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"הכללת יומני ספקים נוספים, ספציפיים למכשירים, בדוחות על באגים, שעשויים להכיל מידע פרטי, לצרוך יותר מהסוללה ו/או להשתמש ביותר אחסון."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"קנה מידה לאנימציה של חלון"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"קנה מידה לאנימציית מעבר"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"קנה מידה למשך זמן אנימציה"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"שאל בכל פעם"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"עד הכיבוי"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"הרגע"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"המכשיר הזה"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"רמקול של טלפון"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"יש בעיה בחיבור. עליך לכבות את המכשיר ולהפעיל אותו מחדש"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"התקן אודיו חוטי"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index acefe20..c7380f6 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth デバイスを名前なしで表示"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"絶対音量を無効にする"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche を有効にする"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"接続強化"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP バージョン"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP バージョンを選択する"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP バージョン"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth デバイスを名前なしで(MAC アドレスのみで)表示します"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"リモートデバイスで音量に関する問題(音量が大きすぎる、制御できないなど)が発生した場合に、Bluetooth の絶対音量の機能を無効にする"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche 機能スタックを有効にします。"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"接続強化機能を有効にします。"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ローカルターミナル"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ローカルシェルアクセスを提供するターミナルアプリを有効にします"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCPチェック"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI レンダリングのプロファイル作成"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU デバッグレイヤの有効化"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"デバッグアプリに GPU デバッグレイヤの読み込みを許可"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ベンダーの詳細なロギングを有効にする"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"バグレポートには、その他のデバイス固有のベンダーログが含まれます。これには、非公開の情報が含まれることがあります。また、電池やストレージの使用量が増えることもあります。"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ウィンドウアニメスケール"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"トランジションアニメスケール"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator再生時間スケール"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"毎回確認"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"OFF にするまで"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"たった今"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"このデバイス"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"スマートフォンのスピーカー"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"接続エラーです。デバイスを OFF にしてから ON に戻してください"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線オーディオ デバイス"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index ddc46ad..43a52f3 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth-მოწყობილობების ჩვენება სახელების გარეშე"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ხმის აბსოლუტური სიძლიერის გათიშვა"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche-ის ჩართვა"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"კავშირის გაძლიერებული შესაძლებლობა"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth-ის AVRCP-ის ვერსია"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"აირჩიეთ Bluetooth-ის AVRCP-ის ვერსია"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-ის ვერსია"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-მოწყობილობები ნაჩვენები იქნება სახელების გარეშე (მხოლოდ MAC-მისამართები)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"გათიშავს Bluetooth-ის ხმის აბსოლუტური სიძლიერის ფუნქციას დისტანციურ მოწყობილობებზე ხმასთან დაკავშირებული ისეთი პრობლემების არსებობის შემთხვევაში, როგორიცაა ხმის დაუშვებლად მაღალი სიძლიერე ან კონტროლის შეუძლებლობა."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ჩართავს Bluetooth Gabeldorsche-ის ფუნქციების დასტას."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ჩართავს კავშირის გაძლიერებული შესაძლებლობის ფუნქციას."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ადგილობრივი ტერმინალი"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ლოკალურ გარსზე წვდომის ტერმინალური აპლიკაციის ჩართვა"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP შემოწმება"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"პროფილის HWUI რენდერი"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-ს შეცდომების გამართვის შრეების ჩართვა"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"გასამართი აპებისთვის GPU-ს შეცდომების გამართვის შრეების გაშვების დაშვება"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ჟურნალებში მომწოდებელთა დაწვრილებითი აღრიცხვის ჩართვა"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"გამყიდველის მოწყობილობისთვის სპეციფიკური დამატებითი ჟურნალები შევიდეს სისტემის ხარვეზის ანგარიშებში, რომლებიც შეიძლება შეიცავდეს პირად ინფორმაციას, ხარჯავდეს ბატარეის მეტ მუხტს და/ან იყენებდეს მეტ მეხსიერებას."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ფანჯარა: მასშტაბი"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"გადასვლის მასშტაბი"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ანიმაციების ხანგრძლივობის მასშტაბი"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ყოველთვის მკითხეთ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"გამორთვამდე"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ახლახან"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ეს მოწყობილობა"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ტელეფონის დინამიკი"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"დაკავშირებისას წარმოიქმნა პრობლემა. გამორთეთ და კვლავ ჩართეთ მოწყობილობა"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"სადენიანი აუდიო მოწყობილობა"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 47babb1..2b2093b 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth құрылғыларын атаусыз көрсету"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Абсолютті дыбыс деңгейін өшіру"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche функциясын іске қосу"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Жетілдірілген байланыс"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP нұсқасы"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP нұсқасын таңдау"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP нұсқасы"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth құрылғылары атаусыз (тек MAC мекенжайымен) көрсетіледі"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Қашықтағы құрылғыларда дыбыстың тым қатты шығуы немесе реттеуге келмеуі сияқты дыбыс деңгейіне қатысты мәселелер туындағанда, Bluetooth абсолютті дыбыс деңгейі функциясын өшіреді."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche функциясы стегін қосады."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Жетілдірілген байланыс функциясын қосады."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Жергілікті терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Жергілікті шелл-код қол жетімділігін ұсынатын терминалды қолданбаны қосу"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP тексеру"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Профиль бойынша HWUI рендерингі"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU жөндеу қабаттарын қосу"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU жөндеу қабаттарының жүктелуіне рұқсат ету"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Жеткізушілерді журналға тіркеу"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Қате туралы есепте қызмет көрсетушінің құрылғыға қатысты қосымша ақпаратын қамту. Мұнда жеке ақпарат көрсетілуі, батарея шығыны артуы және/немесе қосымша жад пайдаланылуы мүмкін."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Терезе анимациясының өлшемі"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Ауысу анимациясының өлшемі"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматор ұзақтығы"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Әрдайым сұрау"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Өшірілгенге дейін"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Дәл қазір"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Осы құрылғы"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефон динамигі"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Байланыс орнату қатесі шығуып жатыр. Құрылғыны өшіріп, қайта қосыңыз."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Сымды аудио құрылғысы"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index f62408d..337bb8b 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"បង្ហាញឧបករណ៍ប្ល៊ូធូសគ្មានឈ្មោះ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"បិទកម្រិតសំឡេងលឺខ្លាំង"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"បើក Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"ការតភ្ជាប់ដែលបានធ្វើឱ្យប្រសើរឡើង"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"កំណែប្ល៊ូធូស AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ជ្រើសរើសកំណែប្ល៊ូធូស AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"កំណែប៊្លូធូស MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"ឧបករណ៍ប្ល៊ូធូសគ្មានឈ្មោះ (អាសយដ្ឋាន MAC តែប៉ុណ្ណោះ) នឹងបង្ហាញ"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"បិទមុខងារកម្រិតសំឡេងឮខ្លាំងពេលភ្ជាប់ប៊្លូធូសក្នុងករណីមានបញ្ហាជាមួយឧបករណ៍បញ្ជាពីចម្ងាយ ដូចជាកម្រិតសំឡេងឮខ្លាំងដែលមិនអាចទទួលយកបាន ឬខ្វះការគ្រប់គ្រង។"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"បើកជង់មុខងារប៊្លូធូស Gabeldorsche។"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"បើកមុខងារការតភ្ជាប់ដែលបានធ្វើឱ្យប្រសើរឡើង។"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ស្ថានីយមូលដ្ឋាន"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"បើកកម្មវិធីស្ថានីយដែលផ្ដល់ការចូលសែលមូលដ្ឋាន"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"ពិនិត្យ HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"ការបំប្លែងកម្រងព័ត៌មាន HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"បើកស្រទាប់ជួសជុល GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"អនុញ្ញាតឱ្យផ្ទុកស្រទាប់ជួសជុល GPU សម្រាប់កម្មវិធីជួសជុល"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"បើកកំណត់ហេតុរៀបរាប់អំពីអ្នកលក់"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"រួមមានកំណត់ហេតុបន្ថែមអំពីអ្នកលក់ឧបករណ៍ជាក់លាក់នៅក្នុងរបាយការណ៍អំពីបញ្ហា ដែលអាចមានព័ត៌មានឯកជន ប្រើប្រាស់ថ្មច្រើនជាងមុន និង/ឬប្រើប្រាស់ទំហំផ្ទុកច្រើនជាងមុន។"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"មាត្រដ្ឋានចលនាវិនដូ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"មាត្រដ្ឋានដំណើរផ្លាស់ប្ដូរចលនា"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"មាត្រដ្ឋានរយៈពេលនៃកម្មវិធីចលនា"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"សួរគ្រប់ពេល"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"រហូតទាល់តែអ្នកបិទ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"អម្បាញ់មិញ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ឧបករណ៍នេះ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ឧបករណ៍បំពងសំឡេងទូរសព្ទ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"មានបញ្ហាក្នុងការភ្ជាប់។ បិទ រួចបើកឧបករណ៍វិញ"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ឧបករណ៍សំឡេងប្រើខ្សែ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 39d6069..926c98a 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"ಹೆಸರುಗಳಿಲ್ಲದ ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ತೋರಿಸಿ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ಸಂಪೂರ್ಣ ವಾಲ್ಯೂಮ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"ವರ್ಧಿತ ಸಂಪರ್ಕ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ಬ್ಲೂಟೂತ್ AVRCP ಆವೃತ್ತಿ"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ಬ್ಲೂಟೂತ್ AVRCP ಆವೃತ್ತಿಯನ್ನು ಆಯ್ಕೆ ಮಾಡಿ"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ಬ್ಲೂಟೂತ್ MAP ಆವೃತ್ತಿ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"ಹೆಸರುಗಳಿಲ್ಲದ (ಕೇವಲ MAC ವಿಳಾಸಗಳು ಮಾತ್ರ) ಬ್ಲೂಟೂತ್ ಸಾಧನಗಳನ್ನು ಪ್ರದರ್ಶಿಸಲಾಗುತ್ತದೆ"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ರಿಮೋಟ್ ಸಾಧನಗಳಲ್ಲಿ ಕಂಡುಬರುವ ಸ್ವೀಕಾರಾರ್ಹವಲ್ಲದ ಜೋರಾದ ವಾಲ್ಯೂಮ್ ಅಥವಾ ನಿಯಂತ್ರಣದ ಕೊರತೆಯಂತಹ ವಾಲ್ಯೂಮ್ ಸಮಸ್ಯೆಗಳಂತಹ ಸಂದರ್ಭದಲ್ಲಿ ಬ್ಲೂಟೂತ್ನ ನಿಚ್ಚಳ ವಾಲ್ಯೂಮ್ ವೈಶಿಷ್ಟ್ಯವನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ಬ್ಲೂಟೂತ್ Gabeldorsche ವೈಶಿಷ್ಟ್ಯದ ಸ್ಟ್ಯಾಕ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ವರ್ಧಿತ ಸಂಪರ್ಕ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ಸ್ಥಳೀಯ ಟರ್ಮಿನಲ್"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ಸ್ಥಳೀಯ ಶೆಲ್ ಪ್ರವೇಶವನ್ನು ಒದಗಿಸುವ ಟರ್ಮಿನಲ್ ಅಪ್ಲಿಕೇಶನ್ ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ಪರೀಕ್ಷಿಸುವಿಕೆ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"ಪ್ರೊಫೈಲ್ HWUI ಸಲ್ಲಿಸಲಾಗುತ್ತಿದೆ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ಡೀಬಗ್ ಲೇಯರ್ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಿ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ಡೀಬಗ್ ಅಪ್ಲಿಕೇಶನ್ಗಳಿಗಾಗಿ GPU ಡೀಬಗ್ ಲೇಯರ್ಗಳನ್ನು ಲೋಡ್ ಮಾಡುವುದನ್ನು ಅನುಮತಿಸಿ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ವೆರ್ಬೋಸ್ ವೆಂಡರ್ ಲಾಗಿಂಗ್ ಆನ್"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"Window ಅನಿಮೇಶನ್ ಸ್ಕೇಲ್"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ಪರಿವರ್ತನೆ ಅನಿಮೇಶನ್ ಸ್ಕೇಲ್"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ಅನಿಮೇಟರ್ ಅವಧಿಯ ಪ್ರಮಾಣ"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ಪ್ರತಿ ಬಾರಿ ಕೇಳಿ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ನೀವು ಆಫ್ ಮಾಡುವವರೆಗೆ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ಇದೀಗ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ಈ ಸಾಧನ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ಫೋನ್ ಸ್ಪೀಕರ್"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ಕನೆಕ್ಟ್ ಮಾಡುವಾಗ ಸಮಸ್ಯೆ ಎದುರಾಗಿದೆ ಸಾಧನವನ್ನು ಆಫ್ ಮಾಡಿ ಹಾಗೂ ನಂತರ ಪುನಃ ಆನ್ ಮಾಡಿ"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ವೈರ್ ಹೊಂದಿರುವ ಆಡಿಯೋ ಸಾಧನ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 1ac029c..991bc22 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"이름이 없는 블루투스 기기 표시"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"절대 볼륨 사용 안함"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche 사용 설정"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"향상된 연결"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"블루투스 AVRCP 버전"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"블루투스 AVRCP 버전 선택"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"블루투스 MAP 버전"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"이름이 없이 MAC 주소만 있는 블루투스 기기 표시"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"참기 어려울 정도로 볼륨이 크거나 제어가 되지 않는 등 원격 기기에서 볼륨 문제가 발생할 경우 블루투스 절대 볼륨 기능을 사용 중지"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"블루투스 Gabeldorsche 기능 스택을 사용 설정합니다."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"향상된 연결 기능을 사용 설정합니다."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"로컬 터미널"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"로컬 셸 액세스를 제공하는 터미널 앱 사용"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP 확인"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"프로필 HWUI 렌더링"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU 디버그 레이어 사용 설정"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"디버그 앱에 GPU 디버그 레이어 로드 허용"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"상세 공급업체 로깅 사용 설정"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"버그 신고에 추가적인 기기별 공급업체 로그를 포함합니다. 여기에는 개인정보가 포함될 수 있으며, 배터리 또는 저장공간 사용량이 늘어날 수 있습니다."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"창 애니메이션 배율"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"전환 애니메이션 배율"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 길이 배율"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"항상 확인"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"사용 중지할 때까지"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"조금 전"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"이 기기"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"휴대전화 스피커"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"연결 중에 문제가 발생했습니다. 기기를 껐다가 다시 켜 보세요."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"유선 오디오 기기"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 2070056..d6ed074 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -26,7 +26,7 @@
<string name="wifi_disconnected" msgid="7054450256284661757">"Ажыратылды"</string>
<string name="wifi_disabled_generic" msgid="2651916945380294607">"Өчүрүлгөн"</string>
<string name="wifi_disabled_network_failure" msgid="2660396183242399585">"IP конфигурациясы бузулду"</string>
- <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"Тармактын сапаты начар болгондуктан туташкан жок"</string>
+ <string name="wifi_disabled_by_recommendation_provider" msgid="1302938248432705534">"Тармактын сапаты начар болгондуктан, туташкан жок"</string>
<string name="wifi_disabled_wifi_failure" msgid="8819554899148331100">"WiFi туташуусу бузулду"</string>
<string name="wifi_disabled_password_failure" msgid="6892387079613226738">"Аутентификация маселеси бар"</string>
<string name="wifi_cant_connect" msgid="5718417542623056783">"Туташпай жатат"</string>
@@ -117,7 +117,7 @@
<string name="bluetooth_pairing_decline" msgid="6483118841204885890">"Жок"</string>
<string name="bluetooth_pairing_will_share_phonebook" msgid="3064334458659165176">"Жупташканда байланыштарыңыз менен чалуу таржымалыңызды пайдалана аласыз."</string>
<string name="bluetooth_pairing_error_message" msgid="6626399020672335565">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен жупташуу мүмкүн эмес."</string>
- <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN же код туура эмес болгондуктан <xliff:g id="DEVICE_NAME">%1$s</xliff:g> туташуу мүмкүн эмес."</string>
+ <string name="bluetooth_pairing_pin_error_message" msgid="264422127613704940">"PIN же код туура эмес болгондуктан, <xliff:g id="DEVICE_NAME">%1$s</xliff:g> туташуу мүмкүн эмес."</string>
<string name="bluetooth_pairing_device_down_error_message" msgid="2554424863101358857">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> менен байланышуу мүмкүн эмес."</string>
<string name="bluetooth_pairing_rejected_error_message" msgid="5943444352777314442">"Жупташтырууну <xliff:g id="DEVICE_NAME">%1$s</xliff:g> четке какты."</string>
<string name="bluetooth_talkback_computer" msgid="3736623135703893773">"Компьютер"</string>
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Аталышсыз Bluetooth түзмөктөрү көрсөтүлсүн"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Үндүн абсолюттук деңгээли өчүрүлсүн"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche функциясын иштетүү"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Жакшыртылган туташуу"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP версиясы"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP версиясын тандоо"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP версиясы"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Аталышсыз Bluetooth түзмөктөрү (MAC даректери менен гана) көрсөтүлөт"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Алыскы түзмөктөр өтө катуу добуш чыгарып же көзөмөлдөнбөй жатса Bluetooth \"Үндүн абсолюттук деңгээли\" функциясын өчүрөт."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche функциясынын топтомун иштетет."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Жакшыртылган туташуу функциясын иштетет."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Жергиликтүү терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Жергиликтүү буйрук кабыгын сунуштаган терминалга уруксат берүү"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP текшерүү"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI профили түзүлүүдө"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU мүчүлүштүктөрдү оңдоо катмарларын иштетүү"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"GPU мүчүлүштүктөрдү оңдоо катмарларын иштетет"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Кызмат көрсөтүүчүнү оозеки киргизүүнү иштетет"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Түзмөккө байланыштуу кызмат көрсөтүүчүнүн кирүүлөрү боюнча мүчүлүштүк тууралуу кабар берүү камтылсын. Анда купуя маалымат көрсөтүлүп, батарея тезирээк отуруп жана/же сактагычтан көбүрөөк орун ээлениши мүмкүн."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Терезелердин анимациясы"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Өткөрүү анимацснн шкаласы"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Анимациянын узактыгы"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Ар дайым суралсын"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Бул функция өчүрүлгөнгө чейин"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Азыр эле"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ушул түзмөк"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефондун динамиги"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Туташууда маселе келип чыкты. Түзмөктү өчүрүп, кайра күйгүзүп көрүңүз"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Зымдуу аудио түзмөк"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 5d504d4..5f58dfb 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"ສະແດງອຸປະກອນ Bluetooth ທີ່ບໍ່ມີຊື່"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ປິດໃຊ້ລະດັບສຽງສົມບູນ"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"ເປີດໃຊ້ Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"ການເຊື່ອມຕໍ່ທີ່ເສີມແຕ່ງແລ້ວ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ເວີຊັນ Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ເລືອກເວີຊັນ Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ເວີຊັນ Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"ຈະສະແດງອຸປະກອນ Bluetooth ທີ່ບໍ່ມີຊື່ (ທີ່ຢູ່ MAC ເທົ່ານັ້ນ)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ປິດໃຊ້ຄຸນສົມບັດລະດັບສຽງສົມບູນຂອງ Bluetooth ໃນກໍລະນີເກີດບັນຫາລະດັບສຽງສົມບູນກັບອຸປະກອນທາງໄກ ເຊັ່ນວ່າ ລະດັບສຽງດັງເກີນຍອມຮັບໄດ້ ຫຼື ຄວບຄຸມບໍ່ໄດ້."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ເປີດໃຊ້ສະແຕັກຄຸນສົມບັດ Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ເປີດນຳໃຊ້ຄຸນສົມບັດການເຊື່ອມຕໍ່ທີ່ເສີມແຕ່ງແລ້ວ"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal ໃນໂຕເຄື່ອງ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ເປີດນຳໃຊ້ແອັບຯ Terminal ທີ່ໃຫ້ການເຂົ້າເຖິງ shell ໃນໂຕເຄື່ອງໄດ້"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"ການກວດສອບ HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"ການປະມວນຜົນໂປຣໄຟລ໌ HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"ເປີດໃຊ້ຊັ້ນຂໍ້ມູນດີບັກ GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ອະນຸຍາດການໂຫລດຊັ້ນຂໍ້ມູນດີບັກ GPU ສຳລັບແອັບດີບັກ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ເປີດໃຊ້ການບັນທຶກຜູ້ຂາຍແບບລະອຽດ"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ຮວມທັງການລາຍງານຂໍ້ຜິດພາດການເຂົ້າສູ່ລະບົບຂອງຜູ້ຂາຍສະເພາະອຸປະກອນເພີ່ມເຕີມ, ເຊິ່ງອາດມີຂໍ້ມູນສ່ວນຕົວ, ໃຊ້ແບັດເຕີຣີຫຼາຍຂຶ້ນ ແລະ/ຫຼື ໃຊ້ບ່ອນຈັດເກັບຂໍ້ມູນເພີ່ມເຕີມ."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"ຂະໜາດໜ້າຈໍຂອງອະນິເມຊັນ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ຂະໜາດອະນິເມຊັນ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ໄລຍະເວລາອະນິເມຊັນ"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ຖາມທຸກເທື່ອ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ຈົນກວ່າທ່ານຈະປິດ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ຕອນນີ້"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ອຸປະກອນນີ້"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ລຳໂພງໂທລະສັບ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ເກີດບັນຫາໃນການເຊື່ອມຕໍ່. ປິດອຸປະກອນແລ້ວເປີດກັບຄືນມາໃໝ່"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ອຸປະກອນສຽງແບບມີສາຍ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 6cdb547..ce41bc5 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Rodyti „Bluetooth“ įrenginius be pavadinimų"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Išjungti didžiausią garsą"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Įgalinti „Gabeldorsche“"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Patobulintas ryšys"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"„Bluetooth“ AVRCP versija"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Pasirinkite „Bluetooth“ AVRCP versiją"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"„Bluetooth“ MRK versija"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bus rodomi „Bluetooth“ įrenginiai be pavadinimų (tik MAC adresai)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Išjungiama „Bluetooth“ didžiausio garso funkcija, jei naudojant nuotolinio valdymo įrenginius kyla problemų dėl garso, pvz., garsas yra per didelis arba jo negalima tinkamai valdyti."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Įgalinama „Bluetooth Gabeldorsche“ funkcijų grupė."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Įgalinti patobulinto ryšio funkciją."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Vietinis terminalas"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Įgal. terminalo progr., siūlančią prieigą prie viet. apvalkalo"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP tikrinimas"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profilio HWUI atvaizdav."</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Įg. graf. proc. der. sl."</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Leisti įkelti graf. proc. der. sluoks. der. progr."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Įg. daugiaž. pasl. teik. reg."</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Į pranešimus apie riktą įtraukiami papildomi konkretaus įrenginio paslaugų teikėjo žurnalai, kuriuose gali būti privačios informacijos, kurie gali naudoti daugiau akumuliatoriaus energijos ir (arba) daugiau vietos saugykloje."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Lango animacijos mast."</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animuoto perėjimo mast."</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator. trukmės skalė"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Klausti kaskart"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Kol išjungsite"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Ką tik"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Šis įrenginys"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefono garsiakalbis"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Prisijungiant kilo problema. Išjunkite įrenginį ir vėl jį įjunkite"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Laidinis garso įrenginys"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 8257d53..7c2dfbd 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Rādīt Bluetooth ierīces bez nosaukumiem"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Atspējot absolūto skaļumu"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Iespējot Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Uzlabota savienojamība"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP versija"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Atlasiet Bluetooth AVRCP versiju"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP versija"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Tiks parādītas Bluetooth ierīces bez nosaukumiem (tikai MAC adreses)."</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Atspējo Bluetooth absolūtā skaļuma funkciju skaļuma problēmu gadījumiem attālajās ierīcēs, piemēram, ja ir nepieņemami liels skaļums vai nav iespējas kontrolēt skaļumu."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Tiek iespējota funkciju grupa Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Tiek iespējota uzlabotās savienojamības funkcija."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Vietējā beigu lietotne"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Iespējot beigu lietotni, kurā piedāvāta vietējā čaulas piekļuve"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP pārbaude"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profila HWUI atveide"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Iesp. GPU atkļūd. slāņus"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Atļaut GPU atkļūd. slāņu ielādi atkļūd. lietotnēm"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Iespējot izvērsto reģistrēšanu"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Iekļaut kļūdu pārskatos konkrētas ierīces papildu nodrošinātāju žurnālus (var iekļaut privātu informāciju, patērēt vairāk akumulatora enerģijas un/vai aizņemt vairāk vietas krātuvē)."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Loga animācijas mērogs"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Pārejas animācijas mērogs"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animācijas ilguma mērogs"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Vaicāt katru reizi"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Līdz brīdim, kad izslēgsiet"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Tikko"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Šī ierīce"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Tālruņa skaļrunis"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Radās problēma ar savienojuma izveidi. Izslēdziet un atkal ieslēdziet ierīci."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Vadu audioierīce"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index ae2df9a..33f8f45 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Прикажувај уреди со Bluetooth без имиња"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Оневозможете апсолутна јачина на звук"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Овозможи Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Подобрена поврзливост"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Верзија Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Изберете верзија Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Верзија на Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Уредите со Bluetooth без имиња (само MAC-адреси) ќе се прикажуваат"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Ја оневозможува карактеристиката за апсолутна јачина на звук преку Bluetooth во случај кога ќе настанат проблеми со далечинските уреди, како на пр., неприфатливо силен звук или недоволна контрола."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ја овозможува функцијата Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ја овозможува функцијата „Подобрена поврзливост“."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локален терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Овозможи апликација на терминал што овозможува локален пристап кон школка."</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Проверување HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-прикажување профил"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Овозм. отстр. греш. на GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дозволи отстр. греш. на GPU за поправање апликации"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширна евиденција на продавачи"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Вклучува дополнителна евиденција на продавачи во извештаите за грешки за конкретен уред, којашто може да содржи приватни податоци, повеќе да ја користи батеријата и/или да користи повеќе капацитет."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Опсег на аним. на прозор."</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Опсег на преодна анимац."</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Скала за времетраење на аниматор"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Секогаш прашувај"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Додека не го исклучите"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Неодамнешни"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Овој уред"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Телефонски звучник"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем со поврзување. Исклучете го уредот и повторно вклучете го"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичен аудиоуред"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index 8727755..a360fcd 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -206,60 +206,33 @@
<string name="enable_adb" msgid="8072776357237289039">"USB ഡീബഗ്ഗിംഗ്"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"USB കണക്റ്റുചെയ്തിരിക്കുമ്പോഴുള്ള ഡീബഗ് മോഡ്"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"USB ഡീബഗ്ഗിംഗ് അംഗീകാരം പിൻവലിക്കുക"</string>
- <!-- no translation found for enable_adb_wireless (6973226350963971018) -->
- <skip />
- <!-- no translation found for enable_adb_wireless_summary (7344391423657093011) -->
- <skip />
- <!-- no translation found for adb_wireless_error (721958772149779856) -->
- <skip />
- <!-- no translation found for adb_wireless_settings (2295017847215680229) -->
- <skip />
- <!-- no translation found for adb_wireless_list_empty_off (1713707973837255490) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_title (6982904096137468634) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_summary (3729901496856458634) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_title (1122590300445142904) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_summary (6370414511333685185) -->
- <skip />
- <!-- no translation found for adb_paired_devices_title (5268997341526217362) -->
- <skip />
- <!-- no translation found for adb_wireless_device_connected_summary (3039660790249148713) -->
- <skip />
- <!-- no translation found for adb_wireless_device_details_title (7129369670526565786) -->
- <skip />
- <!-- no translation found for adb_device_forget (193072400783068417) -->
- <skip />
- <!-- no translation found for adb_device_fingerprint_title_format (291504822917843701) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_title (664211177427438438) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_message (9213896700171602073) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_title (7141739231018530210) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_pairing_code_label (3639239786669722731) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_title (3426758947882091735) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_msg (6611097519661997148) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_summary (8051414549011801917) -->
- <skip />
- <!-- no translation found for adb_wireless_verifying_qrcode_text (6123192424916029207) -->
- <skip />
- <!-- no translation found for adb_qrcode_pairing_device_failed_msg (6936292092592914132) -->
- <skip />
- <!-- no translation found for adb_wireless_ip_addr_preference_title (8335132107715311730) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_title (1906409667944674707) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_description (8578868049289910131) -->
- <skip />
- <!-- no translation found for keywords_adb_wireless (6507505581882171240) -->
- <skip />
+ <string name="enable_adb_wireless" msgid="6973226350963971018">"വയർലെസ് ഡീബഗ് ചെയ്യൽ"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"വൈഫൈ കണക്റ്റ് ചെയ്തിരിക്കുമ്പോൾ ഡീബഗ് ചെയ്യൽ മോഡിലാക്കുക"</string>
+ <string name="adb_wireless_error" msgid="721958772149779856">"പിശക്"</string>
+ <string name="adb_wireless_settings" msgid="2295017847215680229">"വയർലെസ് ഡീബഗ് ചെയ്യൽ"</string>
+ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"ലഭ്യമായ ഉപകരണങ്ങൾ കാണാനും ഉപയോഗിക്കാനും വയർലെസ് ഡീബഗ് ചെയ്യൽ ഓണാക്കുക"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR കോഡ് ഉപയോഗിച്ച് ഉപകരണം ജോടിയാക്കുക"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"QR കോഡ് സ്കാനർ ഉപയോഗിച്ച് പുതിയ ഉപകരണങ്ങൾ ജോടിയാക്കുക"</string>
+ <string name="adb_pair_method_code_title" msgid="1122590300445142904">"ജോടിയാക്കൽ കോഡ് ഉപയോഗിച്ച് ഉപകരണം ജോടിയാക്കുക"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"ആറക്ക കോഡ് ഉപയോഗിച്ച് പുതിയ ഉപകരണങ്ങൾ ജോടിയാക്കുക"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"ജോടിയാക്കിയ ഉപകരണങ്ങൾ"</string>
+ <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"നിലവിൽ കണക്റ്റ് ചെയ്തത്"</string>
+ <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"ഉപകരണ വിശദാംശങ്ങൾ"</string>
+ <string name="adb_device_forget" msgid="193072400783068417">"മറക്കുക"</string>
+ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"ഉപകരണ ഫിംഗർപ്രിന്റ്: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
+ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"കണക്റ്റ് ചെയ്യാനായില്ല"</string>
+ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"ശരിയായ നെറ്റ്വർക്കിൽ ആണ് <xliff:g id="DEVICE_NAME">%1$s</xliff:g> കണക്റ്റ് ചെയ്തിട്ടുള്ളത് എന്ന് ഉറപ്പാക്കുക"</string>
+ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"ഉപകരണവുമായി ജോടിയാക്കുക"</string>
+ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"വൈഫൈ ജോടിയാക്കൽ കോഡ്"</string>
+ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"ജോടിയാക്കാനായില്ല"</string>
+ <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"ഒരേ നെറ്റ്വർക്കിൽ തന്നെയാണ് ഉപകരണം കണക്റ്റ് ചെയ്തിട്ടുള്ളതെന്ന് ഉറപ്പാക്കുക."</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR കോഡ് സ്കാൻ ചെയ്ത് വൈഫൈയിലൂടെ ഉപകരണം ജോടിയാക്കുക"</string>
+ <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"ഉപകരണം ജോടിയാക്കുന്നു…"</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"ഉപകരണം ജോടിയാക്കാനായില്ല. ഒന്നുകിൽ QR കോഡ് തെറ്റായിരുന്നു അല്ലെങ്കിൽ ഉപകരണം ഒരേ നെറ്റ്വർക്കിൽ അല്ല കണക്റ്റ് ചെയ്തിട്ടുള്ളത്."</string>
+ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP വിലാസവും പോർട്ടും"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR കോഡ് സ്കാൻ ചെയ്യുക"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR കോഡ് സ്കാൻ ചെയ്ത് വൈഫൈയിലൂടെ ഉപകരണം ജോടിയാക്കുക"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"ബഗ് റിപ്പോർട്ട് കുറുക്കുവഴി"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"ബഗ് റിപ്പോർട്ട് എടുക്കുന്നതിന് പവർ മെനുവിൽ ഒരു ബട്ടൺ കാണിക്കുക"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"സജീവമായി തുടരുക"</string>
@@ -282,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"പേരില്ലാത്ത Bluetooth ഉപകരണങ്ങൾ കാണിക്കുക"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"അബ്സൊല്യൂട്ട് വോളിയം പ്രവർത്തനരഹിതമാക്കുക"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche പ്രവർത്തനക്ഷമമാക്കുക"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"മെച്ചപ്പെടുത്തിയ കണക്റ്റിവിറ്റി"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP പതിപ്പ്"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP പതിപ്പ് തിരഞ്ഞെടുക്കുക"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP പതിപ്പ്"</string>
@@ -325,10 +299,8 @@
<string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"ലഭ്യമാണെങ്കിൽ \'ടെതറിംഗ് ഹാർഡ്വെയർ ത്വരിതപ്പെടുത്തൽ\' ഉപയോഗിക്കുക"</string>
<string name="adb_warning_title" msgid="7708653449506485728">"USB ഡീബഗ്ഗുചെയ്യാൻ അനുവദിക്കണോ?"</string>
<string name="adb_warning_message" msgid="8145270656419669221">"USB ഡീബഗ്ഗിംഗ് വികസന ആവശ്യകതകൾക്ക് മാത്രമുള്ളതാണ്. നിങ്ങളുടെ കമ്പ്യൂട്ടറിനും ഉപകരണത്തിനുമിടയിൽ ഡാറ്റ പകർത്തുന്നതിനും അറിയിപ്പില്ലാതെ തന്നെ നിങ്ങളുടെ ഉപകരണത്തിൽ അപ്ലിക്കേഷനുകൾ ഇൻസ്റ്റാളുചെയ്യുന്നതിനും ലോഗ് ഡാറ്റ റീഡുചെയ്യുന്നതിനും ഇത് ഉപയോഗിക്കുക."</string>
- <!-- no translation found for adbwifi_warning_title (727104571653031865) -->
- <skip />
- <!-- no translation found for adbwifi_warning_message (8005936574322702388) -->
- <skip />
+ <string name="adbwifi_warning_title" msgid="727104571653031865">"വയർലെസ് ഡീബഗ് ചെയ്യൽ അനുവദിക്കണോ?"</string>
+ <string name="adbwifi_warning_message" msgid="8005936574322702388">"വയർലെസ് ഡീബഗ് ചെയ്യൽ ഡെവലപ്മെന്റ് ആവശ്യങ്ങൾക്ക് മാത്രമുള്ളതാണ്. നിങ്ങളുടെ കമ്പ്യൂട്ടറിൽ നിന്ന് ഉപകരണത്തിലേക്കും തിരിച്ചും ഡാറ്റ പകർത്തുന്നതിനും ലോഗ് ഡാറ്റ റീഡ് ചെയ്യുന്നതിനും അറിയിപ്പില്ലാതെ നിങ്ങളുടെ ഉപകരണത്തിൽ ആപ്പുകൾ ഇൻസ്റ്റാൾ ചെയ്യുന്നതിനും ഇത് ഉപയോഗിക്കുക."</string>
<string name="adb_keys_warning_message" msgid="2968555274488101220">"നിങ്ങൾ മുമ്പ് അംഗീകരിച്ച എല്ലാ കമ്പ്യൂട്ടറുകളിൽ നിന്നും USB ഡീബഗ്ഗുചെയ്യുന്നതിനുള്ള ആക്സസ്സ് പിൻവലിക്കണോ?"</string>
<string name="dev_settings_warning_title" msgid="8251234890169074553">"വികസന ക്രമീകരണങ്ങൾ അനുവദിക്കണോ?"</string>
<string name="dev_settings_warning_message" msgid="37741686486073668">"ഈ ക്രമീകരണങ്ങൾ വികസന ഉപയോഗത്തിന് മാത്രമായുള്ളതാണ്. അവ നിങ്ങളുടെ ഉപകരണവും അതിലെ അപ്ലിക്കേഷനുകളും തകരാറിലാക്കുന്നതിനോ തെറ്റായി പ്രവർത്തിക്കുന്നതിനോ ഇടയാക്കാം."</string>
@@ -337,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"പേരില്ലാത്ത Bluetooth ഉപകരണങ്ങൾ (MAC വിലാസങ്ങൾ മാത്രം) പ്രദർശിപ്പിക്കും"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"അസ്വീകാര്യമായ തരത്തിൽ ഉയർന്ന വോളിയമോ ശബ്ദ നിയന്ത്രണത്തിന്റെ അഭാവമോ പോലെ, വിദൂര ഉപകരണങ്ങളുമായി ബന്ധപ്പെട്ട വോളിയം പ്രശ്നങ്ങൾ ഉണ്ടാകുന്ന സാഹചര്യത്തിൽ, Bluetooth അബ്സൊല്യൂട്ട് വോളിയം ഫീച്ചർ പ്രവർത്തനരഹിതമാക്കുന്നു."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche ഫീച്ചർ സ്റ്റാക്ക് പ്രവർത്തനക്ഷമമാക്കുന്നു."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"മെച്ചപ്പെടുത്തിയ കണക്റ്റിവിറ്റി ഫീച്ചർ പ്രവർത്തനക്ഷമമാക്കുന്നു."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"പ്രാദേശിക ടെർമിനൽ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"പ്രാദേശിക ഷെൽ ആക്സസ് നൽകുന്ന ടെർമിനൽ അപ്ലിക്കേഷൻ പ്രവർത്തനക്ഷമമാക്കുക"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP പരിശോധന"</string>
@@ -383,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI റെൻഡറിംഗ് പ്രൊഫൈൽ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ഡീബഗ് ലെയറുകൾ പ്രവർത്തനക്ഷമമാക്കൂ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ഡീബഗ് ആപ്പുകൾക്കായി GPU ഡീബഗ് ലെയറുകൾ ലോഡ് ചെയ്യാൻ അനുവദിക്കുക"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"വെർബോസ് വെണ്ടർ ലോഗ് ചെയ്യൽ പ്രവർത്തനക്ഷമമാക്കൂ"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"വിൻഡോ ആനിമേഷൻ സ്കെയിൽ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"സംക്രമണ ആനിമേഷൻ സ്കെയിൽ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ആനിമേറ്റർ ദൈർഘ്യ സ്കെയിൽ"</string>
@@ -441,8 +417,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"പ്രോട്ടാനോമലി (ചുവപ്പ്-പച്ച)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ട്രിട്ടാനോമലി (നീല-മഞ്ഞ)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"വർണ്ണം ക്രമീകരിക്കൽ"</string>
- <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
- <skip />
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"വർണ്ണം ശരിയാക്കൽ, വർണ്ണാന്ധത ബാധിച്ച ആളുകൾക്ക് നിറങ്ങൾ കൂടുതൽ കൃത്യമായി കാണാൻ സഹായിക്കുന്നു"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ഉപയോഗിച്ച് അസാധുവാക്കി"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"ഏതാണ്ട് <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ശേഷിക്കുന്നു"</string>
@@ -461,27 +436,19 @@
<string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>-ൽ കുറവ് സമയം ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ൽ കൂടുതൽ സമയം ശേഷിക്കുന്നു (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_only_more_than_subtext" msgid="3274496164769110480">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>-ൽ കൂടുതൽ സമയം ശേഷിക്കുന്നു"</string>
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (137330009791560774) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (145489081521468132) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (1070562682853942350) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4429259621177089719) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (7703677921000858479) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4374784375644214578) -->
- <skip />
+ <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"ഫോൺ ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"ടാബ്ലെറ്റ് ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"ഉപകരണം ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"ഫോൺ ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"ടാബ്ലെറ്റ് ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"ഉപകരണം ഉടൻ ഷട്ട് ഡൗൺ ആയേക്കാം (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="7415639699283965818">"പൂർണ്ണമായി ചാർജാവാൻ <xliff:g id="TIME">%1$s</xliff:g> ശേഷിക്കുന്നു"</string>
<string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - പൂർണ്ണമായി ചാർജാവാൻ <xliff:g id="TIME">%2$s</xliff:g>"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"അജ്ഞാതം"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"ചാർജ് ചെയ്യുന്നു"</string>
- <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
- <skip />
- <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
- <skip />
+ <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"അതിവേഗ ചാർജിംഗ്"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"പതുക്കെയുള്ള ചാർജിംഗ്"</string>
<string name="battery_info_status_discharging" msgid="6962689305413556485">"ചാർജ്ജുചെയ്യുന്നില്ല"</string>
<string name="battery_info_status_not_charging" msgid="8330015078868707899">"പ്ലഗ് ഇൻ ചെയ്തു, ഇപ്പോൾ ചാർജ് ചെയ്യാനാവില്ല"</string>
<string name="battery_info_status_full" msgid="4443168946046847468">"നിറഞ്ഞു"</string>
@@ -539,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"എപ്പോഴും ചോദിക്കുക"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"നിങ്ങൾ ഓഫാക്കുന്നത് വരെ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ഇപ്പോൾ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ഈ ഉപകരണം"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ഫോൺ സ്പീക്കർ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"കണക്റ്റ് ചെയ്യുന്നതിൽ പ്രശ്നമുണ്ടായി. ഉപകരണം ഓഫാക്കി വീണ്ടും ഓണാക്കുക"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"വയർ മുഖേന ബന്ധിപ്പിച്ച ഓഡിയോ ഉപകരണം"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index dc57b3b..c8fb2a5 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Нэргүй Bluetooth төхөөрөмжийг харуулах"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Үнэмлэхүй дууны түвшинг идэвхгүй болгох"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche-г идэвхжүүлэх"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Сайжруулсан холболт"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP хувилбар"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP хувилбарыг сонгох"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP хувилбар"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Нэргүй Bluetooth төхөөрөмжийг (зөвхөн MAC хаяг) харуулна"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Хэт чанга дуугаралт эсвэл муу тохиргоо зэрэг алсын зайн төхөөрөмжийн дуугаралттай холбоотой асуудлын үед Bluetooth-ийн үнэмлэхүй дууны түвшинг идэвхгүй болго."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche онцлогийн өрөлтийг идэвхжүүлдэг."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Сайжруулсан холболтын онцлогийг идэвхжүүлдэг."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локал терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Локал суурьт хандалт хийх боломж олгодог терминалын апп-г идэвхжүүлэх"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP шалгах"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Профайл HWUI-н буулгалт"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU дебаг хийх давхаргыг идэвхжүүлэх"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дебаг хийх аппад GPU дебаг хийх давхарга ачааллахыг зөвшөөрөх"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Нийлүүлэгчийн дэлгэрэнгүй логийг идэвхжүүлэх"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Төхөөрөмжийн тодорхойосон нийлүүлэгчийн нэвтрэх үеийн алдааны нэмэлт мэдээг оруулах бөгөөд энэ нь хувийн мэдээлэл агуулж, батарейг илүү ашиглах болон/эсвэл хадгалах сан илүү ашиглаж болзошгүй."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Цонхны дүрс амилуулалтын далайц"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Шилжилтийн дүрс амилуулалтын далайц"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Дүрс амилуулалт үргэлжлэх далайц"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Тухай бүрд асуух"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Таныг унтраах хүртэл"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Дөнгөж сая"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Энэ төхөөрөмж"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Утасны чанга яригч"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Холбогдоход асуудал гарлаа. Төхөөрөмжийг унтраагаад дахин асаана уу"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Утастай аудио төхөөрөмж"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 1240c5b..afb88de 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"नावांशिवाय ब्लूटूथ डिव्हाइस दाखवा"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"संपूर्ण आवाज बंद करा"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"गाबलडॉर्ष सुरू करा"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"वर्धित कनेक्टिव्हिटी"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ब्लूटूथ AVRCP आवृत्ती"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ब्लूटूथ AVRCP आवृत्ती निवडा"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ब्लूटूथ MAP आवृत्ती"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"नावांशिवाय ब्लूटूथ डीव्हाइस (फक्त MAC पत्ते) दाखवले जातील"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"रिमोट डिव्हाइसमध्ये सहन न होणारा मोठा आवाज किंवा नियंत्रणाचा अभाव यासारखी आवाजाची समस्या असल्यास ब्लूटूथ संपूर्ण आवाज वैशिष्ट्य बंद करते."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ब्लूटूथ गाबलडॉर्ष वैशिष्ट्य स्टॅक सुरू करा."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"वर्धित कनेक्टिव्हिटी वैशिष्ट्य सुरू करा."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"स्थानिक टर्मिनल"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"स्थानिक शेल प्रवेश देणारा टर्मिनल अॅप सुरू करा"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP तपासणी"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"प्रोफाइल HWUI रेंडरिंग"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU डीबग स्तर सुरू करा"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डीबग अॅप्ससाठी GPU डीबग स्तर लोड करण्याची अनुमती द्या"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"व्हर्बोझ विक्रेता लॉगिंग सुरू करा"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"विंडो ॲनिमेशन स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ट्रांझिशन ॲनिमेशन स्केल"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ॲनिमेटर कालावधी स्केल"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"प्रत्येक वेळी विचारा"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"तुम्ही बंद करेपर्यंत"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"आत्ताच"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"हे डिव्हाइस"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"फोनचा स्पीकर"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"कनेक्ट करण्यात समस्या आली. डिव्हाइस बंद करा आणि नंतर सुरू करा"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"वायर असलेले ऑडिओ डिव्हाइस"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index b4c3f60..2c59768 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Tunjukkan peranti Bluetooth tanpa nama"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Lumpuhkan kelantangan mutlak"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Dayakan Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Kesambungan Dipertingkat"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versi AVRCP Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Pilih Versi AVRCP Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versi MAP Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Peranti Bluetooth tanpa nama (alamat MAC sahaja) akan dipaparkan"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Lumpuhkan ciri kelantangan mutlak Bluetooth dalam kes isu kelantangan menggunakan peranti kawalan jauh seperti kelantangan yang sangat kuat atau tidak dapat mengawal."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Mendayakan tindanan ciri Gabeldorche Bluetooth."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Mendayakan ciri Kesambungan Dipertingkat"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal setempat"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Dayakan apl terminal yang menawarkan akses shell tempatan"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Penyemakan HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Pemaparan HWUI profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Dayakan lpsn nyhppjat GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Bnrkn pemuatan lpsn nyhppjt GPU utk apl pnyhppjtn"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Dayakn pngelogan vendor brjela"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Sertakan log tambahan vendor khusus peranti dalam laporan pepijat, yang mungkin mengandungi maklumat peribadi, menggunakan lebih banyak kuasa bateri dan/atau menggunakan lebih banyak storan."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animasi tetingkap"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animasi peralihan"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala tempoh juruanimasi"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Tanya setiap kali"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Sehingga anda matikan"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Sebentar tadi"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Peranti ini"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Pembesar suara telefon"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Masalah penyambungan. Matikan & hidupkan kembali peranti"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Peranti audio berwayar"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index ae8c1b9..ff24590 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"အမည်မရှိသော ဘလူးတုသ်စက်ပစ္စည်းများကို ပြသရန်"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ပကတိ အသံနှုန်း သတ်မှတ်ချက် ပိတ်ရန်"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ကို ဖွင့်ရန်"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"အရည်အသွေးမြှင့်တင်ထားသော ချိတ်ဆက်နိုင်မှု"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ဘလူးတုသ် AVRCP ဗားရှင်း"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ဘလူးတုသ် AVRCP ဗားရှင်းကို ရွေးပါ"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ဘလူးတုသ် MAP ဗားရှင်း"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"အမည်မရှိသော (MAC လိပ်စာများသာပါသော) ဘလူးတုသ်စက်ပစ္စည်းများကို ပြသပါမည်"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ချိတ်ဆက်ထားသည့် ကိရိယာတွင် လက်မခံနိုင်လောက်အောင် ဆူညံ သို့မဟုတ် ထိန်းညှိမရနိုင်သော အသံပိုင်းပြဿနာ ရှိခဲ့လျှင် ဘလူးတုသ် ပကတိ အသံနှုန်းကို ပိတ်ပါ။"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ဘလူးတုသ် Gabeldorsche လုပ်ဆောင်ချက်အပိုင်းကို ဖွင့်သည်။"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"အရည်အသွေးမြှင့်တင်ထားသော ချိတ်ဆက်နိုင်သည့် ဝန်ဆောင်မှုကို ဖွင့်ပါ။"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"လိုကယ်တာမီနယ်"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"local shell အသုံးပြုခွင့်ကမ်းလှမ်းသော တာမင်နယ်အပလီကေးရှင်းဖွင့်ပါ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP စစ်ဆေးမှု"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI ပရိုဖိုင် ဆောင်ရွက်ခြင်း"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU အမှားရှာ အလွှာများဖွင့်ထားပါ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"အမှားရှာအက်ပ်များအတွက် GPU အမှားရှာအလွှာများ ထည့်သွင်းခွင့်ပြုပါ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"verbose vendor မှတ်တမ်းဖွင့်ရန်"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"ချွတ်ယွင်းမှု အစီရင်ခံချက်တွင် စက်ပစ္စည်းအလိုက် ထုတ်လုပ်သူမှတ်တမ်းများကို ထည့်သွင်းခြင်းဖြင့် ကိုယ်ရေးကိုယ်တာ အချက်အလက်များ ပါဝင်ခြင်း၊ ဘက်ထရီပိုသုံးခြင်း နှင့်/သို့မဟုတ် သိုလှောင်ခန်းပိုသုံးခြင်းတို့ ဖြစ်စေနိုင်သည်။"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"လှုပ်ရှားသက်ဝင်ပုံစကေး"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"သက်ဝင်အသွင်ပြောင်းခြင်း"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"လှုပ်ရှားမှုကြာချိန်စကေး"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"အမြဲမေးပါ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"သင်ပိတ်လိုက်သည် အထိ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ယခုလေးတင်"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ဤစက်ပစ္စည်း"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ဖုန်းစပီကာ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ချိတ်ဆက်ရာတွင် ပြဿနာရှိပါသည်။ စက်ကိုပိတ်ပြီး ပြန်ဖွင့်ပါ"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ကြိုးတပ် အသံစက်ပစ္စည်း"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 960398d..8c4e241 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Vis Bluetooth-enheter uten navn"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Slå av funksjonen for absolutt volum"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktiver Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Forbedret tilkobling"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP-versjon"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Velg Bluetooth AVRCP-versjon"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP-versjon"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-enheter uten navn (bare MAC-adresser) vises"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Slår av funksjonen for absolutt volum via Bluetooth i tilfelle det oppstår volumrelaterte problemer med eksterne enheter, for eksempel uakseptabelt høyt volum eller mangel på kontroll."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiverer funksjonsstabelen Bluetooth Gabeldorsche"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Slår på Forbedret tilkobling-funksjonen."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokal terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktiver terminalappen som gir lokal kommandolistetilgang"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-kontroll"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-gjengivelse av profil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Slå på GPU-feilsøkingslag"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillat GPU-feilsøkingslag for feilsøkingsapper"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Detaljert leverandørlogging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inkluder ytterligere enhetsspesifikke leverandørlogger i feilrapporter, som kan inneholde privat informasjon, bruke mer batteri og/eller bruke mer lagringsplass."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animasjonsskala for vindu"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animasjonsskala for overgang"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Varighetsskala for animasjoner"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Spør hver gang"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Til du slår av"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Nå nettopp"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Denne enheten"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonhøyttaler"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Tilkoblingsproblemer. Slå enheten av og på igjen"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Lydenhet med kabel"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index e11f02d..e78e8fa 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"नामकरण नगरिएका ब्लुटुथ यन्त्रहरू देखाउनुहोस्"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"निरपेक्ष आवाज असक्षम गर्नुहोस्"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche सक्षम पार्नुहोस्"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"परिष्कृत जडान"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ब्लुटुथको AVRCP संस्करण"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ब्लुटुथको AVRCP संस्करण चयन गर्नुहोस्"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ब्लुटुथको MAP संस्करण"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"नामकरण नगरिएका ब्लुटुथ यन्त्रहरू (MAC ठेगाना भएका मात्र) देखाइनेछ"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"रिमोट यन्त्रहरूमा अस्वीकार्य चर्को आवाज वा नियन्त्रणमा कमी जस्ता आवाज सम्बन्धी समस्याहरूको अवस्थामा ब्लुटुथ निरपेक्ष आवाज सुविधालाई असक्षम गराउँछ।"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ब्लुटुथ Gabeldorsche सुविधाको स्ट्याक सक्षम पार्नुहोस्।"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"यसले परिष्कृत जडानको सुविधा सक्षम पार्छ।"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"स्थानीय टर्मिनल"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"स्थानीय सेल पहुँच प्रदान गर्ने टर्मिनल अनुप्रयोग सक्षम गर्नुहोस्"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP जाँच गर्दै"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"प्रोफाइल HWUI रेन्डर गरिँदै छ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU का डिबग तहहरूलाई सक्षम पार्नुहोस्"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"डिबगसम्बन्धी अनुप्रयोगहरूका लागि GPU का डिबग तहहरूलाई लोड गर्न दिनुहोस्"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"भर्वस भेन्डर लगिङ सक्षम पार्नु…"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"विन्डो सजीविकरण स्केल"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"संक्रमण सजीविकरण मापन"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"सजीविकरण अवधि मापन"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"प्रत्येक पटक सोध्नुहोस्"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"तपाईंले निष्क्रिय नपार्दासम्म"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"अहिले भर्खरै"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"यो यन्त्र"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"फोनको स्पिकर"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"जोड्ने क्रममा समस्या भयो। यन्त्रलाई निष्क्रिय पारेर फेरि सक्रिय गर्नुहोस्"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"तारयुक्त अडियो यन्त्र"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index e79784c..221ba53 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth-apparaten zonder namen weergeven"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Absoluut volume uitschakelen"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche inschakelen"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Verbeterde connectiviteit"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth-AVRCP-versie"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth-AVRCP-versie selecteren"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"MAP-versie voor bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-apparaten zonder namen (alleen MAC-adressen) worden weergegeven"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Hiermee wordt de functie voor absoluut volume van Bluetooth uitgeschakeld in geval van volumeproblemen met externe apparaten, zoals een onacceptabel hoog volume of geen volumeregeling."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Hierdoor wordt de Gabeldorsche-functiestack voor bluetooth ingeschakeld."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Hiermee wordt de functie voor verbeterde connectiviteit ingeschakeld."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokale terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Terminal-app inschakelen die lokale shell-toegang biedt"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-controle"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI-weergave van profiel"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU-foutopsporingslagen inschakelen"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Laden van GPU-foutopsporingslagen toestaan voor foutopsporingsapps"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Uitgebreide leverancierslogboeken inschakelen"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Aanvullende apparaatspecifieke leverancierslogboeken opnemen in bugrapporten. Deze kunnen privégegevens bevatten, meer batterijlading gebruiken en/of meer opslagruimte gebruiken."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Vensteranimatieschaal"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Overgangsanimatieschaal"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Duur van animatieschaal"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Altijd vragen"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Totdat je uitschakelt"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Zojuist"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Dit apparaat"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefoonspeaker"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Probleem bij verbinding maken. Schakel het apparaat uit en weer in."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Bedraad audioapparaat"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index 7e7c22d..65c44cb 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"ବ୍ଲୁଟୂଥ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକୁ ନାମ ବିନା ଦେଖନ୍ତୁ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ପୂର୍ଣ୍ଣ ଭଲ୍ୟୁମ୍ ଅକ୍ଷମ କରନ୍ତୁ"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"ଗାବେଲ୍ଡୋର୍ସ ସକ୍ରିୟ କରନ୍ତୁ"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"ଏନହାନ୍ସଡ୍ କନେକ୍ଟିଭିଟି"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ବ୍ଲୁଟୂଥ୍ AVRCP ଭର୍ସନ୍"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ବ୍ଲୁଟୂଥ୍ AVRCP ଭର୍ସନ୍"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"ବ୍ଲୁଟୁଥ୍ MAP ସଂସ୍କରଣ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"(କେବଳ MAC ଠିକଣା ଥାଇ) ନାମ ବିନା ବ୍ଲୁଟୂଥ ଡିଭାଇସଗୁଡ଼ିକ ପ୍ରଦର୍ଶିତ ହେବ"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ରିମୋଟ୍ ଡିଭାଇସ୍ଗୁଡ଼ିକରେ ଯଦି ଅସ୍ୱୀକାର୍ଯ୍ୟ ଭାବେ ଉଚ୍ଚ ଭଲ୍ୟୁମ୍ କିମ୍ବା ନିୟନ୍ତ୍ରଣର ଅଭାବ ପରି ଭଲ୍ୟୁମ୍ ସମସ୍ୟା ଥାଏ, ବ୍ଲୁଟୂଥ୍ ପୂର୍ଣ୍ଣ ଭଲ୍ୟୁମ୍ ଫିଚର୍ ଅକ୍ଷମ କରିଥାଏ।"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ବ୍ଲୁଟୁଥ୍ ଗାବେଲଡୋର୍ସ ଫିଚର୍ ଷ୍ଟକ୍ ସକ୍ଷମ କରେ।"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ଏନହାନ୍ସଡ୍ କନେକ୍ଟିଭିଟି ଫିଚର୍ ସକ୍ଷମ କରିଥାଏ।"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ସ୍ଥାନୀୟ ଟର୍ମିନାଲ୍"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ସ୍ଥାନୀୟ ଶେଲ୍କୁ ଆକସେସ୍ ଦେଉଥିବା ଟର୍ମିନଲ୍ ଆପ୍କୁ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ଯାଞ୍ଚ କରୁଛି"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"ପ୍ରୋଫାଇଲ୍ HWUI ରେଣ୍ଡର୍ ହେଉଛି"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ଡିବଗ୍ ଲେୟର୍ ସକ୍ଷମ କରନ୍ତୁ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ଡିବଗ୍ ଆପ୍ଗୁଡ଼ିକ ପାଇଁ GPU ଡିବଗ୍ ଲେୟର୍ ଲୋଡ୍ କରିବାର ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ଭର୍ବୋସ ଭେଣ୍ଡର୍ ଲଗିଂ ସକ୍ଷମ କରନ୍ତୁ"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"ୱିଣ୍ଡୋ ଆନିମେସନ୍ ସ୍କେଲ୍"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ଟ୍ରାଞ୍ଜିସନ୍ ଆନିମେସନ୍ ସ୍କେଲ୍"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ଆନିମେଟର୍ ଅବଧି ସ୍କେଲ୍"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ପ୍ରତ୍ୟେକ ଥର ପଚାରନ୍ତୁ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ଆପଣ ବନ୍ଦ ନକରିବା ପର୍ଯ୍ୟନ୍ତ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ଏହିକ୍ଷଣି"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ଏହି ଡିଭାଇସ୍"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ଫୋନ୍ ସ୍ପିକର୍"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ସଂଯୋଗ କରିବାରେ ସମସ୍ୟା ହେଉଛି। ଡିଭାଇସ୍ ବନ୍ଦ କରି ପୁଣି ଚାଲୁ କରନ୍ତୁ"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ତାରଯୁକ୍ତ ଅଡିଓ ଡିଭାଇସ୍"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 7279f31..ed020e8 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"ਅਨਾਮ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦਿਖਾਓ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ਪੂਰਨ ਅਵਾਜ਼ ਨੂੰ ਬੰਦ ਕਰੋ"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche ਨੂੰ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"ਵਿਸਤ੍ਰਿਤ ਕਨੈਕਟੀਵਿਟੀ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"ਬਲੂਟੁੱਥ AVRCP ਵਰਜਨ"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"ਬਲੂਟੁੱਥ AVRCP ਵਰਜਨ ਚੁਣੋ"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP ਵਰਜਨ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"ਅਨਾਮ ਬਲੂਟੁੱਥ ਡੀਵਾਈਸਾਂ ਦਿਖਾਈਆਂ ਜਾਣਗੀਆਂ (ਸਿਰਫ਼ MAC ਪਤੇ)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ਰਿਮੋਟ ਡੀਵਾਈਸਾਂ ਨਾਲ ਅਵਾਜ਼ੀ ਸਮੱਸਿਆਵਾਂ ਜਿਵੇਂ ਕਿ ਨਾ ਪਸੰਦ ਕੀਤੀ ਜਾਣ ਵਾਲੀ ਉੱਚੀ ਅਵਾਜ਼ ਜਾਂ ਕੰਟਰੋਲ ਦੀ ਕਮੀ ਵਰਗੀ ਹਾਲਤ ਵਿੱਚ ਬਲੂਟੁੱਥ ਪੂਰਨ ਅਵਾਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਬੰਦ ਕਰਦਾ ਹੈ।"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"ਬਲੂਟੁੱਥ Gabeldorsche ਵਿਸ਼ੇਸ਼ਤਾ ਸਟੈਕ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ।"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"ਵਿਸਤ੍ਰਿਤ ਕਨੈਕਟੀਵਿਟੀ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਚਾਲੂ ਕਰਦਾ ਹੈ।"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"ਸਥਾਨਕ ਟਰਮੀਨਲ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"ਟਰਮੀਨਲ ਐਪ ਨੂੰ ਚਾਲੂ ਕਰੋ ਜੋ ਸਥਾਨਕ ਸ਼ੈਲ ਪਹੁੰਚ ਪੇਸ਼ਕਸ਼ ਕਰਦਾ ਹੈ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP ਜਾਂਚ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"ਪ੍ਰੋਫਾਈਲ HWUI ਰੈਂਡਰਿੰਗ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ਡੀਬੱਗ ਲੇਅਰਾਂ ਚਾਲੂ ਕਰੋ"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ਡੀਬੱਗ ਐਪਾਂ ਲਈ GPU ਡੀਬੱਗ ਲੇਅਰਾਂ ਨੂੰ ਲੋਡ ਹੋਣ ਦਿਓ"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"ਵਰਬੋਸ ਵਿਕਰੇਤਾ ਲੌਗਿੰਗ ਚਾਲੂ ਕਰੋ"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"ਵਿੰਡੋ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ਟ੍ਰਾਂਜਿਸ਼ਨ ਐਨੀਮੇਸ਼ਨ ਸਕੇਲ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"ਐਨੀਮੇਟਰ ਮਿਆਦ ਸਕੇਲ"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ਹਰ ਵਾਰ ਪੁੱਛੋ"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ਜਦੋਂ ਤੱਕ ਤੁਸੀਂ ਬੰਦ ਨਹੀਂ ਕਰਦੇ"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ਹੁਣੇ ਹੀ"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ਇਹ ਡੀਵਾਈਸ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ਫ਼ੋਨ ਦਾ ਸਪੀਕਰ"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"ਕਨੈਕਟ ਕਰਨ ਵਿੱਚ ਸਮੱਸਿਆ ਆਈ। ਡੀਵਾਈਸ ਨੂੰ ਬੰਦ ਕਰਕੇ ਵਾਪਸ ਚਾਲੂ ਕਰੋ"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"ਤਾਰ ਵਾਲਾ ਆਡੀਓ ਡੀਵਾਈਸ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 3b12891..8ab91fa 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Pokaż urządzenia Bluetooth bez nazw"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Wyłącz głośność bezwzględną"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Włącz Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Lepsza obsługa połączeń"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Wersja AVRCP Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Wybierz wersję AVRCP Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Wersja MAP Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Zostaną wyświetlone urządzenia Bluetooth bez nazw (tylko adresy MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Wyłącza funkcję Głośność bezwzględna Bluetooth, jeśli występują problemy z urządzeniami zdalnymi, np. zbyt duża głośność lub brak kontroli."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Włącza funkcje Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Włącza funkcję lepszej obsługi połączeń."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal lokalny"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Włącz terminal, który umożliwia dostęp do powłoki lokalnej"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Sprawdzanie HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil renderowania HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Warstwy debugowania GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Zezwól na ładowanie warstw debugowania GPU"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Włącz szczegółowe rejestrowanie dostawcy"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Dołączaj do raportów o błędach dodatkowe dane dostawcy dotyczące konkretnego urządzenia, które mogą zawierać dane prywatne oraz wykorzystywać więcej baterii lub pamięci."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala animacji okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala animacji przejścia"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Skala długości animacji"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Zawsze pytaj"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dopóki nie wyłączysz"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Przed chwilą"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"To urządzenie"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Głośnik telefonu"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem z połączeniem. Wyłącz i ponownie włącz urządzenie"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Przewodowe urządzenie audio"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 5e76fe0..16b92e9 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desativar volume absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Ativar Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectividade melhorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versão do Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecionar versão do Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versão MAP do Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Dispositivos Bluetooth sem nomes (somente endereços MAC) serão exibidos"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa o recurso Bluetooth de volume absoluto em caso de problemas com o volume em dispositivos remotos, como volume excessivamente alto ou falta de controle"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ativa a pilha de recursos Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ativa o recurso \"Conectividade melhorada\"."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Ativar o app terminal que oferece acesso ao shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Verificação HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Classificar renderização HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar camadas de depuração de GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registro detal. de fornecedor"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclui mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações privadas e usar mais bateria e/ou armazenamento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Até você desativar"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Agora"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Alto-falante do smartphone"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index d1b29f0..f1cb113 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desativar volume absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Ativar o Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conetividade melhorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versão de Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecionar versão de Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versão do MAP do Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"São apresentados os dispositivos Bluetooth sem nomes (apenas endereços MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa a funcionalidade de volume absoluto do Bluetooth caso existam problemas de volume com dispositivos remotos, como um volume insuportavelmente alto ou a ausência de controlo."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ativa a pilha de funcionalidades Bluetooth Gabeldorche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ativa a funcionalidade Conetividade melhorada."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Ativar aplicação terminal que oferece acesso local à shell"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Verificação HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Renderização HWUI do perfil"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar cam. depuração GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carreg. cam. depuração GPU p/ dep. app"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. regist. verbo. forneced."</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclua registos adicionais de fornecedores específicos de dispositivos em relatórios de erros, que podem conter informações privadas, utilizar mais bateria e/ou utilizar mais armazenamento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação de transição"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração de animação"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Até ser desativado"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Agora mesmo"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altifalante do telemóvel"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problema ao ligar. Desligue e volte a ligar o dispositivo."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fios"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 5e76fe0..16b92e9 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Mostrar dispositivos Bluetooth sem nomes"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Desativar volume absoluto"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Ativar Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectividade melhorada"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versão do Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selecionar versão do Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versão MAP do Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Dispositivos Bluetooth sem nomes (somente endereços MAC) serão exibidos"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa o recurso Bluetooth de volume absoluto em caso de problemas com o volume em dispositivos remotos, como volume excessivamente alto ou falta de controle"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ativa a pilha de recursos Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ativa o recurso \"Conectividade melhorada\"."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminal local"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Ativar o app terminal que oferece acesso ao shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Verificação HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Classificar renderização HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ativar camadas de depuração de GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permitir carregamento de camadas de depuração de GPU p/ apps de depuração"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ativ. registro detal. de fornecedor"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Inclui mais registros de fornecedores específicos do dispositivo em relatórios de bugs, que podem conter informações privadas e usar mais bateria e/ou armazenamento."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Escala de animação da janela"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Escala de animação de transição"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Escala de duração do Animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Perguntar sempre"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Até você desativar"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Agora"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Este dispositivo"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Alto-falante do smartphone"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ocorreu um problema na conexão. Desligue o dispositivo e ligue-o novamente"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispositivo de áudio com fio"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index e1aa85b..06a83f5 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Afișați dispozitivele Bluetooth fără nume"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Dezactivați volumul absolut"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Activați Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Conectivitate îmbunătățită"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versiunea AVRCP pentru Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Selectați versiunea AVRCP pentru Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versiunea MAP pentru Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Vor fi afișate dispozitivele Bluetooth fără nume (numai adresele MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Dezactivează funcția Bluetooth de volum absolut în cazul problemelor de volum apărute la dispozitivele la distanță, cum ar fi volumul mult prea ridicat sau lipsa de control asupra acestuia."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Activează setul de funcții Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Activează funcția Conectivitate îmbunătățită."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Aplicație terminal locală"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Activați aplicația terminal care oferă acces la shell local"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Verificare HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil redare cu HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Activați nivelurile de depanare GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Permiteți încărcarea nivelurilor de depanare GPU pentru aplicațiile de depanare"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Activați înregistrarea detaliată a furnizorilor"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Includeți alte jurnale ale furnizorilor de dispozitive în rapoartele de eroare, care pot conține informații private, folosiți mai multă baterie și/sau mai mult spațiu de stocare."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scară animație fereastră"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scară tranziție animații"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scară durată Animator"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Întreabă de fiecare dată"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Până când dezactivați"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Chiar acum"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Acest dispozitiv"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Difuzorul telefonului"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problemă la conectare. Opriți și reporniți dispozitivul."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Dispozitiv audio cu fir"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 3df750d..5439979 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Показывать Bluetooth-устройства без названий"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Отключить абсолютный уровень громкости"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Включить Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Улучшенный обмен данными"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Версия Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Выберите версию Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Версия Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Показывать Bluetooth-устройства без названий (только с MAC-адресами)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Отключить абсолютный уровень громкости Bluetooth при возникновении проблем на удаленных устройствах, например при слишком громком звучании или невозможности контролировать настройку"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Включить стек Bluetooth Gabeldorsche"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Включить улучшенный обмен данными"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локальный терминальный доступ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Разрешить терминальный доступ к локальной оболочке"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Проверка HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Учет времени работы HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Отладка графического процессора"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Включить загрузку слоев отладки графического процессора"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Подробный журнал поставщика"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включать в информацию об ошибках дополнительные записи поставщика об устройстве, которые могут содержать личные данные и занимать больше места. Также это может увеличить расход заряда батареи."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Анимация окон"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анимация переходов"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Длительность анимации"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Всегда спрашивать"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Пока вы не отключите"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Только что"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Это устройство"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Встроенный динамик"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ошибка подключения. Выключите и снова включите устройство."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Проводное аудиоустройство"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index c1452d2..b441209 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"නම් නොමැති බ්ලූටූත් උපාංග පෙන්වන්න"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"නිරපේක්ෂ හඩ පරිමාව අබල කරන්න"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche සබල කරන්න"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"වැඩිදියුණු කළ සබැඳුම් හැකියාව"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"බ්ලූටූත් AVRCP අනුවාදය"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"බ්ලූටූත් AVRCP අනුවාදය තෝරන්න"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP අනුවාදය"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"නම් නොමැති බ්ලූටූත් උපාංග (MAC ලිපින පමණි) සංදර්ශනය කරනු ඇත"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"පිළිගත නොහැකි ලෙස වැඩි හඩ පරිමාව හෝ පාලනය නොමැති වීම යනාදී දුරස්ථ උපාංග සමගින් වන හඬ පරිමා ගැටලුවලදී බ්ලූටූත් නිරපේක්ෂ හඬ පරිමා විශේෂාංගය අබල කරයි."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche විශේෂාංග අට්ටිය සබල කරයි."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"වැඩිදියුණු කළ සබැඳුම් හැකියා විශේෂාංගය සබල කරයි."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"අභ්යන්තර අන්තය"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"දේශීය ෂෙල් ප්රවේශනය පිරිනමන ටර්මිනල් යෙදුම සබල කරන්න"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP පරික්ෂාව"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"පැතිකඩ HWUI විදහමින්"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU නිදොසීමේ ස්තර සබල කර."</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"නිදොසීමේ යෙදුම්වලට GPU නිදොසීමේ ස්තර පූරණයට ඉඩ දෙ."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"verbose vendor පිරීම සබල කරන්න"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"පුද්ගලික තොරතුරු අන්තර්ගත විය හැකි, වැඩි බැටරි බලයක් භාවිත කිරීමට සහ/හෝ වැඩි ගබඩා ඉඩක් භාවිත කිරීමට හැකි අමතර උපාංග නිශ්චිත විකුණුම්කරු ලොග, දෝෂ වාර්තාවල අඩංගු වේ."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"කවුළු සජීවිකරණ පරිමාණය"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"සංක්රමණ සජීවන පරිමාණය"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"සජීවක කාල පරාස පරිමාණය"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"සෑම විටම ඉල්ලන්න"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ඔබ ක්රියාවිරහිත කරන තුරු"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"මේ දැන්"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"මෙම උපාංගය"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"දුරකථන ස්පීකරය"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"සම්බන්ධ කිරීමේ ගැටලුවකි උපාංගය ක්රියාවිරහිත කර & ආපසු ක්රියාත්මක කරන්න"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"රැහැන්ගත කළ ඕඩියෝ උපාංගය"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 0f1fbce..41a858d 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Zobrazovať zariadenia Bluetooth bez názvov"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Zakázať absolútnu hlasitosť"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Povoliť Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Zlepšené možnosti pripojenia"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Verzia rozhrania Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Zvoľte verziu rozhrania Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Verzia profilu Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Zariadenia Bluetooth sa budú zobrazovať bez názvov (iba adresy MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Umožňuje zakázať funkciu absolútnej hlasitosti rozhrania Bluetooth v prípade problémov s hlasitosťou vo vzdialených zariadeniach, ako je napríklad neprijateľne vysoká hlasitosť alebo absencia ovládacích prvkov."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Umožňuje povoliť skupinu funkcií Bluetooth Gabeldorche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Povoľuje funkciu Zlepšené možnosti pripojenia."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Miestny terminál"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Povoliť terminálovú apl. na miestny prístup k prostrediu shell"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Kontrola HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Vykresľovanie HWUI profilu"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Povoliť vrstvy ladenia grafického procesora"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Povoliť načítanie vrstiev ladenia grafického procesora na ladenie aplikácií"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivovať podr. zapis. dodáv. do denníka"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Zahŕňajte v hláseniach chýb ďalšie denníky dodávateľa pre konkrétne zariadenie, ktoré môžu obsahovať osobné údaje, zvýšiť spotrebu batérie alebo zabrať viac ukladacieho priestoru."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Mierka animácie okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mierka animácie premeny"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mierka dĺžky animácie"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Vždy sa opýtať"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dokiaľ túto funkciu nevypnete"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Teraz"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Toto zariadenie"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Reproduktor telefónu"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Pri pripájaní sa vyskytol problém. Zariadenie vypnite a znova zapnite."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Audio zariadenie s káblom"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 08a74fb..50b8ef2 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Prikaži naprave Bluetooth brez imen"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Onemogočanje absolutne glasnosti"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Omogoči Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Izboljšana povezljivost"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Različica profila AVRCP za Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Izberite različico profila AVRCP za Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Različica profila MAP za Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Prikazane bodo naprave Bluetooth brez imen (samo z naslovi MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Onemogoči funkcijo absolutne glasnosti za Bluetooth, če pride do težav z glasnostjo z oddaljenimi napravami, kot je nesprejemljivo visoka glasnost ali pomanjkanje nadzora."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Omogoči sklad funkcij Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Omogoči funkcijo Izboljšana povezljivost."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokalni terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Omogočanje terminalske aplikacije za dostop do lokalne lupine"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Preverjanje HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Upodob. profilov s HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Omog. sloje odpr. nap. GPE"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Aplikacijam za odpravljanje napak dovoli nalaganje slojev za odpravljanje napak GPE"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Omogoči podrobno beleženje za ponudnika"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Vključitev dodatnih dnevnikov ponudnika, odvisnih od posamezne naprave, v poročila o napakah. Takšno poročilo lahko vsebuje zasebne podatke, porabi več energije baterije in/ali več shrambe."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Merilo animacije okna"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Merilo animacije prehoda"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Merilo trajanja animacije"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Vedno vprašaj"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Dokler ne izklopite"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"pravkar"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ta naprava"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Zvočnik telefona"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Težava pri povezovanju. Napravo izklopite in znova vklopite."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Žična zvočna naprava"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index 1bd9424..e3f2680 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Shfaq pajisjet me Bluetooth pa emra"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Çaktivizo volumin absolut"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktivizo Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Lidhshmëria e përmirësuar"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Versioni AVRCP i Bluetooth-it"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Zgjidh versionin AVRCP të Bluetooth-it"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Versioni MAP i Bluetooth-it"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Pajisjet me Bluetooth do të shfaqen pa emra (vetëm adresat MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Çaktivizon funksionin e volumit absolut të Bluetooth në rast të problemeve të volumit me pajisjet në largësi, si p.sh. një volum i lartë i papranueshëm ose mungesa e kontrollit."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktivizon grupin e veçorive të Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktivizon veçorinë e \"Lidhshmërisë së përmirësuar\"."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Terminali lokal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktivizo aplikacionin terminal që ofron qasje në guaskën lokale"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Kontrolli HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Interpretimi i profilit me HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Aktivizo shtresat e korrigjimit të GPU-së"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Lejo ngarkimin e shtresave të korrigjimit të GPU-së për aplikacionet e korrigjimit"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivizo evidencat e tregtuesit me shumë fjalë"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Përfshi evidenca shtesë të treguesve specifike për pajisjen në raportet e defekteve, që mund të përfshijnë informacion privat, mund të përdorin më shumë bateri dhe/ose të përdorin më shumë hapësirë ruajtëse."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Animacioni i dritares"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Animacioni kalimtar"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Kohëzgjatja e animatorit"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Pyet çdo herë"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Deri sa ta çaktivizosh"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Pikërisht tani"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Kjo pajisje"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Altoparlanti i telefonit"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Problem me lidhjen. Fike dhe ndize përsëri pajisjen"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Pajisja audio me tel"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 3355c57..31e395c 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Прикажи Bluetooth уређаје без назива"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Онемогући главно подешавање јачине звука"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Омогући Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Побољшано повезивање"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Верзија Bluetooth AVRCP-а"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Изаберите верзију Bluetooth AVRCP-а"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Верзија Bluetooth MAP-а"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Биће приказани Bluetooth уређаји без назива (само са MAC адресама)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Онемогућава главно подешавање јачине звука на Bluetooth уређају у случају проблема са јачином звука на даљинским уређајима, као што су изузетно велика јачина звука или недостатак контроле."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Омогућава групу Bluetooth Gabeldorsche функција."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Омогућава функцију Побољшано повезивање."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локални терминал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Омогући апл. терминала за приступ локалном командном окружењу"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP провера"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Рендеруј помоћу HWUI-а"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Омогући слојеве за отклањање грешака GPU-a"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Омогући учитавање отк. греш. GPU-a у апл. за отк. греш."</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Опширне евиденције продавца"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Уврстите у извештаје о грешкама додатне посебне евиденције продавца за уређаје, које могу да садрже приватне податке, да троше више батерије и/или да користе више меморије."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Размера анимације прозора"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Размера анимације прелаза"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Аниматорова размера трајања"</string>
@@ -502,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Питај сваки пут"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Док не искључите"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Управо"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Овај уређај"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Звучник телефона"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Проблем при повезивању. Искључите уређај, па га поново укључите"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Жичани аудио уређај"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index fce23af..634a16e 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Visa namnlösa Bluetooth-enheter"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Inaktivera Absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Aktivera Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Förbättrad anslutning"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"AVRCP-version för Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Välj AVRCP-version för Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"MAP-version för Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth-enheter utan namn (enbart MAC-adresser) visas"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Inaktivera Bluetooth-funktionen Absolute volume om det skulle uppstå problem med volymen på fjärrenheter, t.ex. alldeles för hög volym eller brist på kontroll."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Aktiverar funktionsgruppen Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Aktiverar funktionen Förbättrad anslutning."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokal terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Aktivera en terminalapp som ger åtkomst till hyllor lokalt"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP-kontroll"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profilens HWUI-rendering"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Aktivera GPU-felsökningslager"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Tillåt att felsökningsappar läser in GPU-felsökningslager"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Aktivera verbose-loggning"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Ta med ytterligare enhetsspecifika leverantörsloggar i felrapporter. Dessa kan innehålla privata uppgifter samt använda mer batteri och/eller mer lagringsutrymme."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Skala – fönsteranimering"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Skala – övergångsanimering"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Längdskala för Animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Fråga varje gång"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Tills du inaktiverar funktionen"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Nyss"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Den här enheten"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefonens högtalare"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Det gick inte att ansluta. Stäng av enheten och slå på den igen"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Ljudenhet med kabelanslutning"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index 3ca705f..3263a6c 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Onyesha vifaa vya Bluetooth visivyo na majina"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Zima sauti kamili"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Washa Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Muunganisho Ulioboreshwa"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Toleo la Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Chagua Toleo la Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Toleo la Ramani ya Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Itaonyesha vifaa vya Bluetooth bila majina (anwani za MAC pekee)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Huzima kipengele cha Bluetooth cha sauti kamili kunapotokea matatizo ya sauti katika vifaa vya mbali kama vile sauti ya juu mno au inaposhindikana kuidhibiti."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Huwasha rafu ya kipengele ya Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Huwasha kipengele cha Muunganisho Ulioboreshwa."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Kituo cha karibu"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Washa programu ya mwisho inayotoa ufikiaji mkuu wa karibu"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Inakagua HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Kutekeleza HWUI ya wasifu"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Ruhusu safu za utatuzi wa GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Ruhusu upakiaji wa safu za utatuzi wa GPU za programu za utatuzi"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Washa uwekaji kumbukumbu za muuzaji kwa kutumia sauti"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Jumuisha kumbukumbu zaidi za muuzaji ambazo ni mahususi kwa kifaa kwenye ripoti za hitilafu, ambazo huenda zikawa na maelezo ya faragha, zikatumia chaji nyingi ya betri na/au zikatumia nafasi kubwa ya hifadhi."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Uhuishaji kwenye dirisha"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Mageuzi ya kipimo cha uhuishaji"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Mizani ya muda wa uhuishaji"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Uliza kila wakati"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Hadi utakapoizima"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Sasa hivi"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Kifaa hiki"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Spika ya simu"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Kuna tatizo la kuunganisha kwenye Intaneti. Zima kisha uwashe kifaa"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kifaa cha sauti kinachotumia waya"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 4f0b779..18ab23d 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -206,60 +206,33 @@
<string name="enable_adb" msgid="8072776357237289039">"USB பிழைதிருத்தம்"</string>
<string name="enable_adb_summary" msgid="3711526030096574316">"USB இணைக்கப்பட்டிருக்கும்போது பிழைத்திருத்தப் பயன்முறையை அமை"</string>
<string name="clear_adb_keys" msgid="3010148733140369917">"USB பிழைத்திருத்த அங்கீகரிப்புகளை நிராகரி"</string>
- <!-- no translation found for enable_adb_wireless (6973226350963971018) -->
- <skip />
- <!-- no translation found for enable_adb_wireless_summary (7344391423657093011) -->
- <skip />
- <!-- no translation found for adb_wireless_error (721958772149779856) -->
- <skip />
- <!-- no translation found for adb_wireless_settings (2295017847215680229) -->
- <skip />
- <!-- no translation found for adb_wireless_list_empty_off (1713707973837255490) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_title (6982904096137468634) -->
- <skip />
- <!-- no translation found for adb_pair_method_qrcode_summary (3729901496856458634) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_title (1122590300445142904) -->
- <skip />
- <!-- no translation found for adb_pair_method_code_summary (6370414511333685185) -->
- <skip />
- <!-- no translation found for adb_paired_devices_title (5268997341526217362) -->
- <skip />
- <!-- no translation found for adb_wireless_device_connected_summary (3039660790249148713) -->
- <skip />
- <!-- no translation found for adb_wireless_device_details_title (7129369670526565786) -->
- <skip />
- <!-- no translation found for adb_device_forget (193072400783068417) -->
- <skip />
- <!-- no translation found for adb_device_fingerprint_title_format (291504822917843701) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_title (664211177427438438) -->
- <skip />
- <!-- no translation found for adb_wireless_connection_failed_message (9213896700171602073) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_title (7141739231018530210) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_pairing_code_label (3639239786669722731) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_title (3426758947882091735) -->
- <skip />
- <!-- no translation found for adb_pairing_device_dialog_failed_msg (6611097519661997148) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_summary (8051414549011801917) -->
- <skip />
- <!-- no translation found for adb_wireless_verifying_qrcode_text (6123192424916029207) -->
- <skip />
- <!-- no translation found for adb_qrcode_pairing_device_failed_msg (6936292092592914132) -->
- <skip />
- <!-- no translation found for adb_wireless_ip_addr_preference_title (8335132107715311730) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_title (1906409667944674707) -->
- <skip />
- <!-- no translation found for adb_wireless_qrcode_pairing_description (8578868049289910131) -->
- <skip />
- <!-- no translation found for keywords_adb_wireless (6507505581882171240) -->
- <skip />
+ <string name="enable_adb_wireless" msgid="6973226350963971018">"வயர்லெஸ் பிழைதிருத்தம்"</string>
+ <string name="enable_adb_wireless_summary" msgid="7344391423657093011">"வைஃபையை இணைக்கும்போது பிழைதிருத்தப் பயன்முறை இயக்கப்படும்"</string>
+ <string name="adb_wireless_error" msgid="721958772149779856">"பிழை"</string>
+ <string name="adb_wireless_settings" msgid="2295017847215680229">"வயர்லெஸ் பிழைதிருத்தம்"</string>
+ <string name="adb_wireless_list_empty_off" msgid="1713707973837255490">"கிடைக்கும் சாதனங்களைப் பார்க்கவும் பயன்படுத்தவும் வயர்லெஸ் பிழைதிருத்தத்தை ஆன் செய்யவும்"</string>
+ <string name="adb_pair_method_qrcode_title" msgid="6982904096137468634">"QR குறியீட்டின் மூலம் சாதனத்தை இணைத்தல்"</string>
+ <string name="adb_pair_method_qrcode_summary" msgid="3729901496856458634">"QR குறியீடு ஸ்கேனரைப் பயன்படுத்தி புதிய சாதனங்களை இணைக்கலாம்"</string>
+ <string name="adb_pair_method_code_title" msgid="1122590300445142904">"இணைத்தல் குறியீட்டின் மூலம் சாதனத்தை இணைத்தல்"</string>
+ <string name="adb_pair_method_code_summary" msgid="6370414511333685185">"ஆறு இலக்கக் குறியீட்டைப் பயன்படுத்தி புதிய சாதனங்களை இணைக்கலாம்"</string>
+ <string name="adb_paired_devices_title" msgid="5268997341526217362">"இணைக்கப்பட்ட சாதனங்கள்"</string>
+ <string name="adb_wireless_device_connected_summary" msgid="3039660790249148713">"தற்போது இணைக்கப்பட்டுள்ளது"</string>
+ <string name="adb_wireless_device_details_title" msgid="7129369670526565786">"சாதன விவரங்கள்"</string>
+ <string name="adb_device_forget" msgid="193072400783068417">"அகற்று"</string>
+ <string name="adb_device_fingerprint_title_format" msgid="291504822917843701">"சாதனக் கைரேகை: <xliff:g id="FINGERPRINT_PARAM">%1$s</xliff:g>"</string>
+ <string name="adb_wireless_connection_failed_title" msgid="664211177427438438">"இணைக்கப்படவில்லை"</string>
+ <string name="adb_wireless_connection_failed_message" msgid="9213896700171602073">"<xliff:g id="DEVICE_NAME">%1$s</xliff:g> சரியான நெட்வொர்க்குடன் இணைக்கப்பட்டுள்ளதை உறுதிசெய்துகொள்ளவும்"</string>
+ <string name="adb_pairing_device_dialog_title" msgid="7141739231018530210">"சாதனத்துடன் இணைத்தல்"</string>
+ <string name="adb_pairing_device_dialog_pairing_code_label" msgid="3639239786669722731">"வைஃபை இணைத்தல் குறியீடு"</string>
+ <string name="adb_pairing_device_dialog_failed_title" msgid="3426758947882091735">"இணைக்கப்படவில்லை"</string>
+ <string name="adb_pairing_device_dialog_failed_msg" msgid="6611097519661997148">"சாதனம் அதே நெட்வொர்க்கில் இணைக்கப்பட்டுள்ளதை உறுதிசெய்து கொள்ளவும்."</string>
+ <string name="adb_wireless_qrcode_summary" msgid="8051414549011801917">"QR குறியீட்டை ஸ்கேன் செய்வதன் மூலம் சாதனத்தை வைஃபை மூலம் இணைக்கலாம்"</string>
+ <string name="adb_wireless_verifying_qrcode_text" msgid="6123192424916029207">"சாதனத்தை இணைக்கிறது…"</string>
+ <string name="adb_qrcode_pairing_device_failed_msg" msgid="6936292092592914132">"சாதனத்துடன் இணைக்க முடியவில்லை. தவறான QR குறியீடாகவோ சாதனம் அதே நெர்வொர்க்குடன் இணைக்கப்படாமலோ இருக்கலாம்."</string>
+ <string name="adb_wireless_ip_addr_preference_title" msgid="8335132107715311730">"IP முகவரி & போர்ட்"</string>
+ <string name="adb_wireless_qrcode_pairing_title" msgid="1906409667944674707">"QR குறியீட்டை ஸ்கேன் செய்தல்"</string>
+ <string name="adb_wireless_qrcode_pairing_description" msgid="8578868049289910131">"QR குறியீட்டை ஸ்கேன் செய்வதன் மூலம் சாதனத்தை வைஃபை மூலம் இணைக்கலாம்"</string>
+ <string name="keywords_adb_wireless" msgid="6507505581882171240">"adb, debug, dev"</string>
<string name="bugreport_in_power" msgid="8664089072534638709">"பிழைப் புகாருக்கான ஷார்ட்கட்"</string>
<string name="bugreport_in_power_summary" msgid="1885529649381831775">"பிழை அறிக்கையைப் பெற பவர் மெனுவில் விருப்பத்தைக் காட்டு"</string>
<string name="keep_screen_on" msgid="1187161672348797558">"செயலில் வைத்திரு"</string>
@@ -282,6 +255,8 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"பெயர்கள் இல்லாத புளூடூத் சாதனங்களைக் காட்டு"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"அப்சல்யூட் ஒலியளவு அம்சத்தை முடக்கு"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorscheவை இயக்கு"</string>
+ <!-- no translation found for enhanced_connectivity (7201127377781666804) -->
+ <skip />
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"புளூடூத் AVRCP பதிப்பு"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"புளூடூத் AVRCP பதிப்பைத் தேர்ந்தெடு"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"புளூடூத்தின் MAP பதிப்பு"</string>
@@ -306,7 +281,7 @@
<string name="private_dns_mode_provider_hostname_hint" msgid="6564868953748514595">"DNS வழங்குநரின் ஹோஸ்ட் பெயரை உள்ளிடவும்"</string>
<string name="private_dns_mode_provider_failure" msgid="8356259467861515108">"இணைக்க முடியவில்லை"</string>
<string name="wifi_display_certification_summary" msgid="8111151348106907513">"வயர்லெஸ் காட்சி சான்றுக்கான விருப்பங்களைக் காட்டு"</string>
- <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"வைஃபை நுழைவு அளவை அதிகரித்து, வைஃபை தேர்வியில் ஒவ்வொன்றிற்கும் SSID RSSI ஐ காட்டுக"</string>
+ <string name="wifi_verbose_logging_summary" msgid="4993823188807767892">"வைஃபை நுழைவு அளவை அதிகரித்து, வைஃபை தேர்வுக் கருவியில் ஒவ்வொன்றிற்கும் SSID RSSI ஐ காட்டுக"</string>
<string name="wifi_scan_throttling_summary" msgid="2577105472017362814">"பேட்டரி தீர்ந்துபோவதைக் குறைத்து நெட்வொர்க்கின் செயல்திறனை மேம்படுத்தும்"</string>
<string name="wifi_metered_label" msgid="8737187690304098638">"கட்டண நெட்வொர்க்"</string>
<string name="wifi_unmetered_label" msgid="6174142840934095093">"கட்டணமில்லா நெட்வொர்க்"</string>
@@ -325,10 +300,8 @@
<string name="tethering_hardware_offload_summary" msgid="7801345335142803029">"வன்பொருள் விரைவுப்படுத்துதல் இணைப்பு முறை கிடைக்கும் போது, அதைப் பயன்படுத்தும்"</string>
<string name="adb_warning_title" msgid="7708653449506485728">"USB பிழைதிருத்தத்தை அனுமதிக்கவா?"</string>
<string name="adb_warning_message" msgid="8145270656419669221">"USB பிழைதிருத்தம் மேம்படுத்தல் நோக்கங்களுக்காக மட்டுமே. அதை உங்கள் கணினி மற்றும் சாதனத்திற்கு இடையில் தரவை நகலெடுக்கவும், அறிவிப்பு இல்லாமல் உங்கள் சாதனத்தில் ஆப்ஸை நிறுவவும், பதிவு தரவைப் படிக்கவும் பயன்படுத்தவும்."</string>
- <!-- no translation found for adbwifi_warning_title (727104571653031865) -->
- <skip />
- <!-- no translation found for adbwifi_warning_message (8005936574322702388) -->
- <skip />
+ <string name="adbwifi_warning_title" msgid="727104571653031865">"வயர்லெஸ் பிழைதிருத்தத்தை அனுமதிக்கவா?"</string>
+ <string name="adbwifi_warning_message" msgid="8005936574322702388">"\'வயர்லெஸ் பிழைதிருத்தம்\' டெவெலப்மெண்ட் நோக்கங்களுக்காக மட்டுமே. அதை உங்கள் கம்ப்யூட்டருக்கும் சாதனத்திற்கும் இடையே தரவை நகலெடுக்கவும், உங்கள் சாதனத்தில் அறிவிப்பின்றி ஆப்ஸை நிறுவவும், பதிவுத் தரவைப் படிக்கவும் பயன்படுத்தவும்."</string>
<string name="adb_keys_warning_message" msgid="2968555274488101220">"நீங்கள் ஏற்கனவே அனுமதித்த எல்லா கணினிகளிலிருந்தும் USB பிழைத்திருத்தத்திற்கான அணுகலைத் திரும்பப்பெற வேண்டுமா?"</string>
<string name="dev_settings_warning_title" msgid="8251234890169074553">"மேம்பட்ட அமைப்புகளை அனுமதிக்கவா?"</string>
<string name="dev_settings_warning_message" msgid="37741686486073668">"இந்த அமைப்பு மேம்பட்டப் பயன்பாட்டிற்காக மட்டுமே. உங்கள் சாதனம் மற்றும் அதில் உள்ள பயன்பாடுகளைச் சிதைக்கும் அல்லது தவறாகச் செயல்படும் வகையில் பாதிப்பை ஏற்படுத்தும்."</string>
@@ -337,6 +310,8 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"பெயர்கள் இல்லாத புளூடூத் சாதனங்கள் (MAC முகவரிகள் மட்டும்) காட்டப்படும்"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"மிகவும் அதிகமான ஒலியளவு அல்லது கட்டுப்பாடு இழப்பு போன்ற தொலைநிலைச் சாதனங்களில் ஏற்படும் ஒலி தொடர்பான சிக்கல்கள் இருக்கும் சமயங்களில், புளூடூத் அப்சல்யூட் ஒலியளவு அம்சத்தை முடக்கும்."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"புளூடூத்தின் Gabeldorsche அம்சங்களை இயக்கும்."</string>
+ <!-- no translation found for enhanced_connectivity_summary (1576414159820676330) -->
+ <skip />
<string name="enable_terminal_title" msgid="3834790541986303654">"அக முனையம்"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"அக ஷெல் அணுகலை வழங்கும் இறுதிப் ஆப்ஸை இயக்கு"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP சரிபார்ப்பு"</string>
@@ -383,6 +358,10 @@
<string name="track_frame_time" msgid="522674651937771106">"சுயவிவர HWUI ரெண்டரிங்"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU பிழைத்திருத்த லேயர்களை இயக்கு"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"பிழைத்திருத்த ஆப்ஸிற்கு, GPU பிழைத்திருத்த லேயர்களை ஏற்றுவதற்கு அனுமதி"</string>
+ <!-- no translation found for enable_verbose_vendor_logging (1196698788267682072) -->
+ <skip />
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"சாளர அனிமேஷன் வேகம்"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"அனிமேஷன் மாற்றத்தின் வேகம்"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"அனிமேட்டர் கால அளவு"</string>
@@ -441,8 +420,7 @@
<string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"நிறம் அடையாளங்காண முடியாமை (சிவப்பு-பச்சை)"</string>
<string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"நிறம் அடையாளங்காண முடியாமை (நீலம்-மஞ்சள்)"</string>
<string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"வண்ணத்திருத்தம்"</string>
- <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
- <skip />
+ <string name="accessibility_display_daltonizer_preference_subtitle" msgid="6178138727195403796">"நிறக்குருடு உள்ளவர்கள் வண்ணங்களை இன்னும் துல்லியமாகப் பார்க்க வண்ணத் திருத்தம் உதவுகிறது"</string>
<string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> மூலம் மேலெழுதப்பட்டது"</string>
<string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
<string name="power_remaining_duration_only" msgid="8264199158671531431">"கிட்டத்தட்ட <xliff:g id="TIME_REMAINING">%1$s</xliff:g> மீதமுள்ளது"</string>
@@ -461,27 +439,19 @@
<string name="power_remaining_less_than_duration" msgid="1812668275239801236">"<xliff:g id="THRESHOLD">%1$s</xliff:g>க்கும் குறைவாகவே பயன்படுத்த முடியும் (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_more_than_subtext" msgid="7919119719242734848">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>க்கும் மேல் பயன்படுத்த முடியும் (<xliff:g id="LEVEL">%2$s</xliff:g>)"</string>
<string name="power_remaining_only_more_than_subtext" msgid="3274496164769110480">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g>க்கும் மேல் பயன்படுத்த முடியும்"</string>
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (137330009791560774) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (145489081521468132) -->
- <skip />
- <!-- no translation found for power_remaining_duration_only_shutdown_imminent (1070562682853942350) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4429259621177089719) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (7703677921000858479) -->
- <skip />
- <!-- no translation found for power_remaining_duration_shutdown_imminent (4374784375644214578) -->
- <skip />
+ <string name="power_remaining_duration_only_shutdown_imminent" product="default" msgid="137330009791560774">"மொபைல் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="tablet" msgid="145489081521468132">"டேப்லெட் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
+ <string name="power_remaining_duration_only_shutdown_imminent" product="device" msgid="1070562682853942350">"சாதனம் விரைவில் ஆஃப் ஆகக்கூடும்"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="default" msgid="4429259621177089719">"மொபைல் விரைவில் ஆஃப் ஆகக்கூடும் (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="tablet" msgid="7703677921000858479">"டேப்லெட் விரைவில் ஆஃப் ஆகக்கூடும் (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
+ <string name="power_remaining_duration_shutdown_imminent" product="device" msgid="4374784375644214578">"சாதனம் விரைவில் ஆஃப் ஆகக்கூடும் (<xliff:g id="LEVEL">%1$s</xliff:g>)"</string>
<string name="power_charging" msgid="6727132649743436802">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="STATE">%2$s</xliff:g>"</string>
<string name="power_remaining_charging_duration_only" msgid="7415639699283965818">"முழு சார்ஜாக <xliff:g id="TIME">%1$s</xliff:g> ஆகும்"</string>
<string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - முழு சார்ஜாக <xliff:g id="TIME">%2$s</xliff:g> ஆகும்"</string>
<string name="battery_info_status_unknown" msgid="268625384868401114">"அறியப்படாத"</string>
<string name="battery_info_status_charging" msgid="4279958015430387405">"சார்ஜ் ஆகிறது"</string>
- <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
- <skip />
- <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
- <skip />
+ <string name="battery_info_status_charging_fast" msgid="8027559755902954885">"வேகமாக சார்ஜாகிறது"</string>
+ <string name="battery_info_status_charging_slow" msgid="3190803837168962319">"மெதுவாக சார்ஜாகிறது"</string>
<string name="battery_info_status_discharging" msgid="6962689305413556485">"சார்ஜ் செய்யப்படவில்லை"</string>
<string name="battery_info_status_not_charging" msgid="8330015078868707899">"செருகப்பட்டது, ஆனால் இப்போது சார்ஜ் செய்ய முடியவில்லை"</string>
<string name="battery_info_status_full" msgid="4443168946046847468">"முழுவதும் சார்ஜ் ஆனது"</string>
@@ -539,6 +509,9 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ஒவ்வொரு முறையும் கேள்"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"ஆஃப் செய்யும் வரை"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"சற்றுமுன்"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"இந்தச் சாதனம்"</string>
+ <!-- no translation found for media_transfer_this_device_name (2716555073132169240) -->
+ <skip />
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"இணைப்பதில் சிக்கல். சாதனத்தை ஆஃப் செய்து மீண்டும் ஆன் செய்யவும்"</string>
+ <!-- no translation found for media_transfer_wired_device_name (4447880899964056007) -->
+ <skip />
</resources>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index 3a354e0..74739ee 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"పేర్లు లేని బ్లూటూత్ పరికరాలు చూపించు"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"సంపూర్ణ వాల్యూమ్ను నిలిపివేయి"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorscheను ఎనేబుల్ చేయి"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"మెరుగైన కనెక్టివిటీ"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"బ్లూటూత్ AVRCP వెర్షన్"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"బ్లూటూత్ AVRCP సంస్కరణను ఎంచుకోండి"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"బ్లూటూత్ MAP వెర్షన్"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"పేర్లు (MAC చిరునామాలు మాత్రమే) లేని బ్లూటూత్ పరికరాలు ప్రదర్శించబడతాయి"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"రిమోట్ పరికరాల్లో ఆమోదించలేని స్థాయిలో అధిక వాల్యూమ్ ఉండటం లేదా వాల్యూమ్ నియంత్రణ లేకపోవడం వంటి సమస్యలు ఉంటే బ్లూటూత్ సంపూర్ణ వాల్యూమ్ ఫీచర్ని నిలిపివేస్తుంది."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"బ్లూటూత్ Gabeldorsche ఫీచర్ స్ట్యాక్ను ఎనేబుల్ చేస్తుంది."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"మెరుగైన కనెక్టివిటీ ఫీచర్ను ఎనేబుల్ చేస్తుంది."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"స్థానిక టెర్మినల్"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"స్థానిక షెల్ ప్రాప్యతను అందించే టెర్మినల్ అనువర్తనాన్ని ప్రారంభించు"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP తనిఖీ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"ప్రొఫైల్ HWUI రెండరింగ్"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU డీబగ్ లేయర్లను ప్రారంభించండి"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"డీబగ్ యాప్ల కోసం GPU డీబగ్ లేయర్లను లోడ్ చేయడాన్ని అనుమతించండి"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"వివరణాత్మక విక్రేత లాగింగ్ను ఎనేబుల్ చేయండి"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"విండో యానిమేషన్ ప్రమాణం"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"పరివర్తన యానిమేషన్ ప్రమాణం"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"యానిమేటర్ వ్యవధి ప్రమాణం"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ప్రతిసారి అడుగు"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"మీరు ఆఫ్ చేసే వరకు"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ఇప్పుడే"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"ఈ పరికరం"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ఫోన్ స్పీకర్"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"కనెక్ట్ చేయడంలో సమస్య ఉంది. పరికరాన్ని ఆఫ్ చేసి, ఆపై తిరిగి ఆన్ చేయండి"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"వైర్ గల ఆడియో పరికరం"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index e34c548..bc0970c 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"แสดงอุปกรณ์บลูทูธที่ไม่มีชื่อ"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"ปิดใช้การควบคุมระดับเสียงของอุปกรณ์อื่น"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"เปิดใช้ Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"การเชื่อมต่อที่ปรับปรุงแล้ว"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"เวอร์ชันของบลูทูธ AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"เลือกเวอร์ชันของบลูทูธ AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"เวอร์ชัน MAP ของบลูทูธ"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"ระบบจะแสดงอุปกรณ์บลูทูธที่ไม่มีชื่อ (มีเฉพาะที่อยู่ MAC)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ปิดใช้ฟีเจอร์การควบคุมระดับเสียงของอุปกรณ์อื่นผ่านบลูทูธในกรณีที่มีปัญหาเกี่ยวกับระดับเสียงของอุปกรณ์ระยะไกล เช่น ระดับเสียงที่ดังเกินไปหรือระดับเสียงที่ไม่มีการควบคุม"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"เปิดใช้สแต็กฟีเจอร์ Bluetooth Gabeldorsche"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"เปิดใช้ฟีเจอร์การเชื่อมต่อที่ปรับปรุงแล้ว"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"เทอร์มินัลในตัวเครื่อง"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"เปิดใช้งานแอปเทอร์มินัลที่ให้การเข้าถึงเชลล์ในตัวเครื่อง"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"การตรวจสอบ HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"การแสดงผล HWUI ตามโปรไฟล์"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"เปิดใช้เลเยอร์การแก้ไขข้อบกพร่อง GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"อนุญาตให้โหลดเลเยอร์การแก้ไขข้อบกพร่อง GPU สำหรับแอปแก้ไขข้อบกพร่อง"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"เปิดบันทึกเวนเดอร์เพิ่มเติม"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"รวมบันทึกเวนเดอร์เพิ่มเติมเฉพาะอุปกรณ์ไว้ในรายงานข้อบกพร่อง ซึ่งอาจมีข้อมูลส่วนตัว ใช้แบตเตอรี่มากขึ้น และ/หรือใช้พื้นที่เก็บข้อมูลมากขึ้น"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"อัตราการเคลื่อนไหวของหน้าต่าง"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"อัตราการเคลื่อนไหวของการเปลี่ยนภาพ"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"อัตราความเร็วตามตัวสร้างภาพเคลื่อนไหว"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ถามทุกครั้ง"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"จนกว่าคุณจะปิด"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"เมื่อสักครู่"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"อุปกรณ์นี้"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"ลำโพงโทรศัพท์"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"เกิดปัญหาในการเชื่อมต่อ ปิดอุปกรณ์แล้วเปิดใหม่อีกครั้ง"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"อุปกรณ์เสียงแบบมีสาย"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index ee04288..9ed2d9a 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Ipakita ang mga Bluetooth device na walang pangalan"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"I-disable ang absolute volume"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"I-enable ang Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Pinagandang Pagkakonekta"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bersyon ng AVRCP ng Bluetooth"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Pumili ng Bersyon ng AVRCP ng Bluetooth"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bersyon ng MAP ng Bluetooth"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Ipapakita ang mga Bluetooth device na walang pangalan (mga MAC address lang)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Dini-disable ang absolute volume feature ng Bluetooth kung may mga isyu sa volume ang mga malayong device gaya ng hindi katanggap-tanggap na malakas na volume o kawalan ng kontrol."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ine-enable ang stack ng feature ng Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Ine-enable ang feature na Pinagandang Pagkakonekta."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Lokal na terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Paganahin ang terminal app na nag-aalok ng lokal na shell access"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Pagsusuring HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Rendering ng Profile HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"I-enable ang GPU debug layer"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Payagang i-load ang GPU debug layer sa debug app"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Enable verbose vendor logging"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Magsama sa mga ulat ng bug ng mga karagdagang log ng vendor na partikular sa device, na posibleng may pribadong impormasyon, gumamit ng mas maraming baterya, at/o gumamit ng mas malaking storage."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Scale ng window animation"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Scale ng transition animation"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Scale ng tagal ng animator"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Magtanong palagi"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Hanggang sa i-off mo"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Ngayon lang"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Ang device na ito"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Speaker ng telepono"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Nagkaproblema sa pagkonekta. I-off at pagkatapos ay i-on ang device"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Wired na audio device"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 5015e38..1a489d1 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Adsız Bluetooth cihazlarını göster"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Mutlak sesi iptal et"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche\'yi etkileştir"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Gelişmiş Bağlantı"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP Sürümü"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP Sürümünü seçin"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP Sürümü"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Adsız Bluetooth cihazları (yalnızca MAC adresleri) gösterilecek"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Uzak cihazda sesin aşırı yüksek olması veya kontrol edilememesi gibi ses sorunları olması ihtimaline karşı Bluetooh mutlak ses özelliğini iptal eder."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche özellik yığınını etkinleştirir."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Gelişmiş Bağlantı özelliğini etkinleştirir."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Yerel terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Yerel kabuk erişimi sunan terminal uygulamasını etkinleştir"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP denetimi"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Profil HWUI oluşturma"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU hata ayıklama katmanlarını etkinleştir"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Hata ayıklama uygulamaları için GPU hata ayıklama katmanlarının yüklenmesine izin ver"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Ayrıntılı satıcı günlüğünü etkinleştir"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Hata raporlarına cihaza özgü ek satıcı günlükleri ekle. Bu günlükler gizli bilgiler içerebilir, daha fazla pil ve/veya daha fazla depolama alanı kullanabilir."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Pencere animasyonu ölçeği"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Geçiş animasyonu ölçeği"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatör süre ölçeği"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Her zaman sor"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Siz kapatana kadar"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Az önce"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Bu cihaz"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon hoparlörü"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Bağlanırken sorun oluştu. Cihazı kapatıp tekrar açın"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Kablolu ses cihazı"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index 3c8f481..fbe2ba6 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Показувати пристрої Bluetooth без назв"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Вимкнути абсолютну гучність"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Увімкнути Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Покращене з\'єднання"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Версія Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Виберіть версію Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Версія Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Пристрої Bluetooth відображатимуться без назв (лише MAC-адреси)"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Функція абсолютної гучності Bluetooth вимикається, якщо на віддалених пристроях виникають проблеми, як-от надто висока гучність або втрата контролю."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Вмикає функції Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Вмикає функцію покращеного з\'єднання."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Локальний термінал"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Увімк. програму-термінал, що надає локальний доступ до оболонки"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Перевірка HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Обробка HWUI за профілем"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Увімкнути шари налагодження ГП"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Дозвольте завантажувати шари налагодження ГП для додатків налагодження"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Увімкнути докладну реєстрацію постачальника"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Включати у звіти про помилки додаткові записи про постачальника пристрою, які можуть містити особисті дані, призводити до надмірного споживання заряду акумулятора та/або використовувати більший обсяг пам\'яті."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Анімація вікон"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Анімація переходів"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Тривалість анімації"</string>
@@ -503,6 +507,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Запитувати щоразу"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Доки не вимкнути"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Щойно"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Цей пристрій"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Динамік телефона"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Не вдається підключитися. Перезавантажте пристрій."</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Дротовий аудіопристрій"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index 27e5b20..10bce1b 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"بغیر نام والے بلوٹوتھ آلات دکھائیں"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"مطلق والیوم کو غیر فعال کریں"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche فعال کریں"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"بہتر کردہ کنیکٹوٹی"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"بلوٹوتھ AVRCP ورژن"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"بلوٹوتھ AVRCP ورژن منتخب کریں"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"بلوٹوتھ MAP ورژن"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"بغیر نام والے بلوٹوتھ آلات (صرف MAC پتے) ڈسپلے کئے جائیں گے"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"ریموٹ آلات کے ساتھ والیوم کے مسائل مثلاً نا قابل قبول حد تک بلند والیوم یا کنٹرول نہ ہونے کی صورت میں بلو ٹوتھ مطلق والیوم والی خصوصیت کو غیر فعال کریں۔"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"بلوٹوتھ Gabeldorsche خصوصیت کے انبار کو فعال کرتا ہے۔"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"بہتر کردہ کنیکٹوٹی کی خصوصیات کو فعال کرتا ہے۔"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"مقامی ٹرمینل"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"مقامی شیل رسائی پیش کرنے والی ٹرمینل ایپ فعال کریں"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP چیکنگ"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"پروفائل HWUI رینڈرنگ"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"GPU ڈیبگ پرتیں فعال کریں"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"ڈیبگ ایپس کیلئے GPU ڈیبگ پرتوں کو لوڈ کرنے دیں"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"وربوس وینڈر لاگنگ فعال کریں"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"ونڈو اینیمیشن اسکیل"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"ٹرانزیشن اینیمیشن اسکیل"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"اینیمیٹر دورانیے کا اسکیل"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"ہر بار پوچھیں"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"یہاں تک کہ آپ آف کر دیں"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"ابھی ابھی"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"یہ آلہ"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"فون اسپیکر"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"منسلک کرنے میں مسئلہ پیش آ گیا۔ آلہ کو آف اور بیک آن کریں"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"وائرڈ آڈیو آلہ"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index ee78795..df11004 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bluetooth qurilmalarini nomlarisiz ko‘rsatish"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Tovush balandligining mutlaq darajasini faolsizlantirish"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Gabeldorsche funksiyasini yoqish"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Kuchaytirilgan aloqa"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Bluetooth AVRCP versiyasi"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Bluetooth AVRCP versiyasini tanlang"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Bluetooth MAP versiyasi"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Bluetooth qurilmalari nomsiz (faqat MAC manzillari) ko‘rsatiladi"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Masofadan ulanadigan qurilmalar bilan muammolar yuz berganda, jumladan, juda baland ovoz yoki sozlamalarni boshqarib bo‘lmaydigan holatlarda Bluetooth ovozi balandligining mutlaq darajasini o‘chirib qo‘yadi."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bluetooth Gabeldorsche funksiyasini ishga tushiradi."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Kuchaytirilgan aloqa funksiyasini ishga tushiradi."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Mahalliy terminal"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Mahalliy terminalga kirishga ruxsat beruvchi terminal ilovani faollashtirish"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP tekshiruvi"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI ishlash vaqtining hisobi"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Grafik protsessorni tuzatish"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Grafik protsessorni tuzatish qatlamlarini yuklashni yoqish"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Taʼminotchining batafsil jurnali"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Xatoliklar hisobotiga shaxsiy maʼlumotlari bor va koʻp joy olishi mumkin boʻlgan qurilma haqida taʼminotchining qoʻshimcha yozuvlari kiradi. Bunda batareya quvvati tezroq sarflanishi mumkin."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Oynalar animatsiyasi"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"O‘tish animatsiyasi"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animatsiya tezligi"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Har safar so‘ralsin"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Rejimdan chiqilgunicha"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Hozir"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Shu qurilma"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Telefon karnayi"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Ulanishda muammo yuz berdi. Qurilmani oʻchiring va yoqing"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Simli audio qurilma"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index 6d76962..9863bfe 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Hiển thị các thiết bị Bluetooth không có tên"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Vô hiệu hóa âm lượng tuyệt đối"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Bật tính năng Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Kết nối nâng cao"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Phiên bản Bluetooth AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Chọn phiên bản Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Phiên bản Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Các thiết bị Bluetooth không có tên (chỉ có địa chỉ MAC) sẽ được hiển thị"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Vô hiệu hóa tính năng âm lượng tuyệt đối qua Bluetooth trong trường hợp xảy ra sự cố về âm lượng với các thiết bị từ xa, chẳng hạn như âm lượng lớn không thể chấp nhận được hoặc thiếu kiểm soát."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Bật ngăn xếp tính năng Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Bật tính năng Kết nối nâng cao."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Dòng lệnh cục bộ"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Bật ứng dụng dòng lệnh cung cấp quyền truy cập vỏ cục bộ"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Kiểm tra HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Kết xuất HWUI cấu hình"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Bật lớp gỡ lỗi GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Cho phép tải lớp gỡ lỗi GPU cho ứng dụng gỡ lỗi"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Bật tùy chọn ghi nhật ký chi tiết của nhà cung cấp"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Đưa thêm nhật ký của nhà cung cấp dành riêng cho thiết bị vào các báo cáo lỗi. Nhật ký này có thể chứa thông tin cá nhân, dùng nhiều pin hơn và/hoặc chiếm nhiều dung lượng lưu trữ hơn."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Tỷ lệ hình động của cửa sổ"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Tỷ lệ hình động chuyển tiếp"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Tỷ lệ thời lượng của trình tạo hình động"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Luôn hỏi"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Cho đến khi bạn tắt"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Vừa xong"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Thiết bị này"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Loa điện thoại"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Sự cố kết nối. Hãy tắt thiết bị rồi bật lại"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Thiết bị âm thanh có dây"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index fbb30ca..b2b9dc7 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"显示没有名称的蓝牙设备"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"停用绝对音量功能"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"启用“Gabeldorsche”"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"增强连接性"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"蓝牙 AVRCP 版本"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"选择蓝牙 AVRCP 版本"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"蓝牙 MAP 版本"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"系统将显示没有名称(只有 MAC 地址)的蓝牙设备"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"停用蓝牙绝对音量功能,即可避免在连接到远程设备时出现音量问题(例如音量高得让人无法接受或无法控制音量等)。"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"启用“蓝牙 Gabeldorsche”功能堆栈。"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"启用增强连接性功能。"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"本地终端"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"启用终端应用,以便在本地访问 Shell"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP 检查"</string>
@@ -354,6 +356,9 @@
<string name="track_frame_time" msgid="522674651937771106">"HWUI 呈现模式分析"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"启用 GPU 调试层"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允许为调试应用加载 GPU 调试层"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"启用详细供应商日志记录"</string>
+ <!-- no translation found for enable_verbose_vendor_logging_summary (5426292185780393708) -->
+ <skip />
<string name="window_animation_scale_title" msgid="5236381298376812508">"窗口动画缩放"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"过渡动画缩放"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 时长缩放"</string>
@@ -501,6 +506,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"每次都询问"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"直到您将其关闭"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"刚刚"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"此设备"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手机扬声器"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"连接时遇到问题。请关闭并重新开启设备"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有线音频设备"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 0b4ee7a..992cb5f 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"顯示沒有名稱的藍牙裝置"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"停用絕對音量功能"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"啟用 Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"強化連線功能"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"藍牙 AVRCP 版本"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"選擇藍牙 AVRCP 版本"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"藍牙 MAP 版本"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"系統將顯示沒有名稱 (只有 MAC 位址) 的藍牙裝置"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"連線至遠端裝置時,如發生音量過大或無法控制音量等問題,請停用藍牙絕對音量功能。"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"啟用藍牙 Gabeldorsche 功能組合。"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"啟用強化連線功能。"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"本機終端機"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"啟用可提供本機命令介面存取權的終端機應用程式"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP 檢查"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"分析 HWUI 轉譯"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"啟用 GPU 偵錯圖層"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允許為偵錯應用程式載入 GPU 偵錯圖層"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"啟用詳細供應商記錄"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"在錯誤報告中加入其他裝置專屬供應商記錄,其中可能包含私人資料,並會耗用更多電量及/或儲存空間。"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"視窗動畫比例"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Animator 片長比例"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"每次都詢問"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"直至您關閉為止"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"剛剛"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"此裝置"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手機喇叭"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連接,請關閉裝置然後重新開機"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音響裝置"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 487c33d..6c664d9 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"顯示沒有名稱的藍牙裝置"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"停用絕對音量功能"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"啟用 Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"加強型連線"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"藍牙 AVRCP 版本"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"選取藍牙 AVRCP 版本"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"藍牙 MAP 版本"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"系統會顯示沒有名稱 (僅具有 MAC 位址) 的藍牙裝置"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"只要停用藍牙絕對音量功能,即可避免在連線到遠端裝置時,發生音量過大或無法控制音量等問題。"</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"啟用藍牙 Gabeldorsche 功能堆疊。"</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"啟用「加強型連線」功能。"</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"本機終端機"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"啟用可提供本機命令介面存取權的終端機應用程式"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"HDCP 檢查"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"剖析 HWUI 轉譯"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"啟用 GPU 偵錯圖層"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"允許載入 GPU 偵錯圖層為應用程式偵錯"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"啟用詳細供應商記錄功能"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"在錯誤報告中附上其他的裝置專屬供應商記錄。如果你這麼做,可能會增加電池用量及/或占用較多儲存空間,報告中可能也會包含私人資訊。"</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"視窗動畫比例"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"轉場動畫比例"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"動畫影片長度比例"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"每次都詢問"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"直到你關閉為止"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"剛剛"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"這個裝置"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"手機喇叭"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"無法連線,請關閉裝置後再重新開啟"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"有線音訊裝置"</string>
</resources>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 684c100..6def217 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -255,6 +255,7 @@
<string name="bluetooth_show_devices_without_names" msgid="923584526471885819">"Bonisa amadivayisi e-Bluetooth ngaphandle kwamagama"</string>
<string name="bluetooth_disable_absolute_volume" msgid="1452342324349203434">"Khubaza ivolumu ngokuphelele"</string>
<string name="bluetooth_enable_gabeldorsche" msgid="9131730396242883416">"Nika amandla i-Gabeldorsche"</string>
+ <string name="enhanced_connectivity" msgid="7201127377781666804">"Ukuxhumeka Okuthuthukisiwe"</string>
<string name="bluetooth_select_avrcp_version_string" msgid="1710571610177659127">"Inguqulo ye-Bluetooth ye-AVRCP"</string>
<string name="bluetooth_select_avrcp_version_dialog_title" msgid="7846922290083709633">"Khetha inguqulo ye-Bluetooth AVRCP"</string>
<string name="bluetooth_select_map_version_string" msgid="526308145174175327">"Inguqulo ye-Bluetooth MAP"</string>
@@ -308,6 +309,7 @@
<string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"Amadivayisi e-Bluetooth anganawo amagama (Amakheli e-MAC kuphela) azoboniswa"</string>
<string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Ikhubaza isici esiphelele sevolumu ye-Bluetooth uma kuba nezinkinga zevolumu ngamadivayisi esilawuli kude ezifana nevolumu ephezulu noma eshoda ngokulawuleka."</string>
<string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Inika amandla isitaki sesici se-Bluetooth Gabeldorsche."</string>
+ <string name="enhanced_connectivity_summary" msgid="1576414159820676330">"Inika amandla isici Sokuxhumeka Okuthuthukisiwe."</string>
<string name="enable_terminal_title" msgid="3834790541986303654">"Itheminali yasendaweni"</string>
<string name="enable_terminal_summary" msgid="2481074834856064500">"Nika amandla uhlelo lokusebenza letheminali olunikeza ukufinyelela kwasendaweni kwe-shell"</string>
<string name="hdcp_checking_title" msgid="3155692785074095986">"Ihlola i-HDCP"</string>
@@ -354,6 +356,8 @@
<string name="track_frame_time" msgid="522674651937771106">"Inikezela iphrofayela ye-HWUI"</string>
<string name="enable_gpu_debug_layers" msgid="4986675516188740397">"Nika amandla izendlalelo zokususa amaphutha ze-GPU"</string>
<string name="enable_gpu_debug_layers_summary" msgid="4921521407377170481">"Vumela izendlalelo zokususa amaphutha ze-GPU ngezinhlelo zokusebenza zokususa amaphutha"</string>
+ <string name="enable_verbose_vendor_logging" msgid="1196698788267682072">"Nika amandla ilogu yomthengisi we-verbose"</string>
+ <string name="enable_verbose_vendor_logging_summary" msgid="5426292185780393708">"Faka phakathi amalogu athize womthengisi wedivayisi angeziwe, angase afake phakathi ulwazi oluyimfihlo, kusebenzisa ibhethri eningi, futhi/noma kusebenzisa isitoreji esiningi."</string>
<string name="window_animation_scale_title" msgid="5236381298376812508">"Iwindi yesilinganisi sesithombe esinyakazayo"</string>
<string name="transition_animation_scale_title" msgid="1278477690695439337">"Isilinganiso sesithombe soku"</string>
<string name="animator_duration_scale_title" msgid="7082913931326085176">"Isilinganiso sobude besikhathi somenzi womfanekiso onyakazayo"</string>
@@ -501,6 +505,7 @@
<string name="zen_mode_duration_always_prompt_title" msgid="3212996860498119555">"Buza njalo"</string>
<string name="zen_mode_forever" msgid="3339224497605461291">"Uze uvale isikrini"</string>
<string name="time_unit_just_now" msgid="3006134267292728099">"Khona manje"</string>
- <string name="media_transfer_this_device_name" msgid="2858384945459339073">"Le divayisi"</string>
+ <string name="media_transfer_this_device_name" msgid="2716555073132169240">"Isipikha sefoni"</string>
<string name="profile_connect_timeout_subtext" msgid="4043408193005851761">"Inkinga yokuxhumeka. Vala idivayisi futhi uphinde uyivule"</string>
+ <string name="media_transfer_wired_device_name" msgid="4447880899964056007">"Idivayisi yomsindo enentambo"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-as/strings.xml b/packages/SettingsProvider/res/values-as/strings.xml
index 5235e3c..89b7c1e 100644
--- a/packages/SettingsProvider/res/values-as/strings.xml
+++ b/packages/SettingsProvider/res/values-as/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"ছেটিংছসমূহৰ সঞ্চয়াগাৰ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"হটস্পটৰ ছেটিংসমূহ সলনি হৈছে"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"সবিশেষ চাবলৈ টিপক"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-bn/strings.xml b/packages/SettingsProvider/res/values-bn/strings.xml
index c785cd8..b2eaa2f 100644
--- a/packages/SettingsProvider/res/values-bn/strings.xml
+++ b/packages/SettingsProvider/res/values-bn/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"সেটিংস স্টোরেজ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"হটস্পট সেটিংসে পরিবর্তন করা হয়েছে"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"বিশদে জানতে ট্যাপ করুন"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-de/strings.xml b/packages/SettingsProvider/res/values-de/strings.xml
index a469936..b006ac9 100644
--- a/packages/SettingsProvider/res/values-de/strings.xml
+++ b/packages/SettingsProvider/res/values-de/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"Einstellungsspeicher"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"Hotspot-Einstellungen wurden geändert"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Für Details tippen"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-es/strings.xml b/packages/SettingsProvider/res/values-es/strings.xml
index 3f1fa61..a3d3469 100644
--- a/packages/SettingsProvider/res/values-es/strings.xml
+++ b/packages/SettingsProvider/res/values-es/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"Almacenamiento de configuración"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"Se han cambiado los ajustes del punto de acceso"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"Toca para ver información detallada"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-gu/strings.xml b/packages/SettingsProvider/res/values-gu/strings.xml
index 074675f..1f91f71 100644
--- a/packages/SettingsProvider/res/values-gu/strings.xml
+++ b/packages/SettingsProvider/res/values-gu/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"સેટિંગ્સ સંગ્રહ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"હૉટસ્પૉટ સેટિંગ બદલાઈ ગઈ છે"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"વિગતો જોવા માટે ટૅપ કરો"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-kn/strings.xml b/packages/SettingsProvider/res/values-kn/strings.xml
index 0b0000d..400b358 100644
--- a/packages/SettingsProvider/res/values-kn/strings.xml
+++ b/packages/SettingsProvider/res/values-kn/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"ಸೆಟ್ಟಿಂಗ್ಗಳ ಸಂಗ್ರಹಣೆ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"ಹಾಟ್ಸ್ಪಾಟ್ ಸೆಟ್ಟಿಂಗ್ಗಳು ಬದಲಾಗಿವೆ"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ವಿವರಗಳನ್ನು ನೋಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ml/strings.xml b/packages/SettingsProvider/res/values-ml/strings.xml
index 54a05fb..8df8ce4 100644
--- a/packages/SettingsProvider/res/values-ml/strings.xml
+++ b/packages/SettingsProvider/res/values-ml/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"സംഭരണ ക്രമീകരണം"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"ഹോട്ട്സ്പോട്ട് ക്രമീകരണം മാറിയിരിക്കുന്നു"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"വിശദാംശങ്ങൾ കാണാൻ ടാപ്പ് ചെയ്യുക"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-mr/strings.xml b/packages/SettingsProvider/res/values-mr/strings.xml
index 0e80f70..51b8b19 100644
--- a/packages/SettingsProvider/res/values-mr/strings.xml
+++ b/packages/SettingsProvider/res/values-mr/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"सेटिंग्ज संचयन"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"हॉटस्पॉट सेटिंग्ज बदलल्या आहेत"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"तपशील पाहण्यासाठी टॅप करा"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ne/strings.xml b/packages/SettingsProvider/res/values-ne/strings.xml
index bb04b6ba..a0e3465 100644
--- a/packages/SettingsProvider/res/values-ne/strings.xml
+++ b/packages/SettingsProvider/res/values-ne/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"सेटिङहरू भण्डारण"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"हटस्पटका सेटिङ परिवर्तन गरिएका छन्"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"विवरणहरू हेर्न ट्याप गर्नुहोस्"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-or/strings.xml b/packages/SettingsProvider/res/values-or/strings.xml
index 4b73a55..486d8ff 100644
--- a/packages/SettingsProvider/res/values-or/strings.xml
+++ b/packages/SettingsProvider/res/values-or/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"ସେଟିଙ୍ଗ ଷ୍ଟୋରେଜ୍"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"ହଟସ୍ପଟ୍ ସେଟିଂସ୍ ବଦଳାଯାଇଛି"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ବିବରଣୀ ଦେଖିବାକୁ ଟାପ୍ କରନ୍ତୁ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-pa/strings.xml b/packages/SettingsProvider/res/values-pa/strings.xml
index 5af8d6a..1c9a985 100644
--- a/packages/SettingsProvider/res/values-pa/strings.xml
+++ b/packages/SettingsProvider/res/values-pa/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"ਸੈਟਿੰਗਾਂ ਸਟੋਰੇਜ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"ਹੌਟਸਪੌਟ ਸੈਟਿੰਗਾਂ ਬਦਲ ਗਈਆਂ ਹਨ"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"ਵੇਰਵੇ ਦੇਖਣ ਲਈ ਟੈਪ ਕਰੋ"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-te/strings.xml b/packages/SettingsProvider/res/values-te/strings.xml
index b1955ed..fa2191f 100644
--- a/packages/SettingsProvider/res/values-te/strings.xml
+++ b/packages/SettingsProvider/res/values-te/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"సెట్టింగ్ల నిల్వ"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"హాట్స్పాట్ సెట్టింగ్లు మార్చబడ్డాయి"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"వివరాలను చూడటానికి ట్యాప్ చేయండి"</string>
</resources>
diff --git a/packages/SettingsProvider/res/values-ur/strings.xml b/packages/SettingsProvider/res/values-ur/strings.xml
index 2ce44b1..5a1b0f9 100644
--- a/packages/SettingsProvider/res/values-ur/strings.xml
+++ b/packages/SettingsProvider/res/values-ur/strings.xml
@@ -20,8 +20,6 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
<string name="app_label" msgid="4567566098528588863">"ترتیبات کا اسٹوریج"</string>
- <!-- no translation found for wifi_softap_config_change (5688373762357941645) -->
- <skip />
- <!-- no translation found for wifi_softap_config_change_summary (8946397286141531087) -->
- <skip />
+ <string name="wifi_softap_config_change" msgid="5688373762357941645">"ہاٹ اسپاٹ کی ترتیبات تبدیل ہو گئیں"</string>
+ <string name="wifi_softap_config_change_summary" msgid="8946397286141531087">"تفصیلات دیکھنے کے لیے تھپتھپائیں"</string>
</resources>
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index d350d9d..10253c4 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -164,6 +164,7 @@
Settings.Secure.AWARE_TAP_PAUSE_TOUCH_COUNT,
Settings.Secure.PEOPLE_STRIP,
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS,
};
}
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 4d33b62..1676ae0 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -248,6 +248,10 @@
new InclusiveIntegerRangeValidator(
Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
Secure.ACCESSIBILITY_MAGNIFICATION_MODE_WINDOW));
+ VALIDATORS.put(Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
+ new InclusiveIntegerRangeValidator(
+ Secure.ACCESSIBILITY_MAGNIFICATION_MODE_FULLSCREEN,
+ Secure.ACCESSIBILITY_MAGNIFICATION_MODE_ALL));
VALIDATORS.put(
Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS,
ACCESSIBILITY_SHORTCUT_TARGET_LIST_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index af74121..cd5271e 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1814,6 +1814,9 @@
Settings.Secure.ACCESSIBILITY_MAGNIFICATION_MODE,
SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_MODE);
dumpSetting(s, p,
+ Settings.Secure.ACCESSIBILITY_MAGNIFICATION_CAPABILITY,
+ SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_CAPABILITY);
+ dumpSetting(s, p,
Settings.Secure.ACCESSIBILITY_BUTTON_LONG_PRESS_TARGETS,
SecureSettingsProto.Accessibility.BUTTON_LONG_PRESS_TARGETS);
p.end(accessibilityToken);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 5a9d749..d0ba51b 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -955,11 +955,6 @@
updateSecureSetting(Settings.Secure.LOCATION_MODE,
setting != null ? setting.getValue() : null, null,
true, userId, true);
- setting = getSecureSetting(
- Settings.Secure.LOCATION_PROVIDERS_ALLOWED, userId);
- updateSecureSetting(Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
- setting != null ? setting.getValue() : null, null,
- true, userId, true);
}
} finally {
Binder.restoreCallingIdentity(identity);
@@ -1347,7 +1342,7 @@
final int owningUserId = resolveOwningUserIdForSecureSettingLocked(callingUserId,
name);
- if (!isSecureSettingAccessible(name, callingUserId, owningUserId)) {
+ if (!isSecureSettingAccessible(name)) {
// This caller is not permitted to access this setting. Pretend the setting
// doesn't exist.
continue;
@@ -1387,7 +1382,7 @@
// Determine the owning user as some profile settings are cloned from the parent.
final int owningUserId = resolveOwningUserIdForSecureSettingLocked(callingUserId, name);
- if (!isSecureSettingAccessible(name, callingUserId, owningUserId)) {
+ if (!isSecureSettingAccessible(name)) {
// This caller is not permitted to access this setting. Pretend the setting doesn't
// exist.
SettingsState settings = mSettingsRegistry.getSettingsLocked(SETTINGS_TYPE_SECURE,
@@ -1607,12 +1602,6 @@
// Mutate the value.
synchronized (mLock) {
- // Special cases for location providers (sigh).
- if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)) {
- return updateLocationProvidersAllowedLocked(value, tag, owningUserId, makeDefault,
- forceNotify);
- }
-
switch (operation) {
case MUTATION_OPERATION_INSERT: {
return mSettingsRegistry.insertSettingLocked(SETTINGS_TYPE_SECURE,
@@ -1821,15 +1810,7 @@
/**
* Returns {@code true} if the specified secure setting should be accessible to the caller.
*/
- private boolean isSecureSettingAccessible(String name, int callingUserId,
- int owningUserId) {
- // Special case for location (sigh).
- // This check is not inside the name-based checks below because this method performs checks
- // only if the calling user ID is not the same as the owning user ID.
- if (isLocationProvidersAllowedRestricted(name, callingUserId, owningUserId)) {
- return false;
- }
-
+ private boolean isSecureSettingAccessible(String name) {
switch (name) {
case "bluetooth_address":
// BluetoothManagerService for some reason stores the Android's Bluetooth MAC
@@ -1846,20 +1827,6 @@
}
}
- private boolean isLocationProvidersAllowedRestricted(String name, int callingUserId,
- int owningUserId) {
- // Optimization - location providers are restricted only for managed profiles.
- if (callingUserId == owningUserId) {
- return false;
- }
- if (Settings.Secure.LOCATION_PROVIDERS_ALLOWED.equals(name)
- && mUserManager.hasUserRestriction(UserManager.DISALLOW_SHARE_LOCATION,
- new UserHandle(callingUserId))) {
- return true;
- }
- return false;
- }
-
private int resolveOwningUserIdForSecureSettingLocked(int userId, String setting) {
return resolveOwningUserIdLocked(userId, sSecureCloneToManagedSettings, setting);
}
@@ -2054,73 +2021,6 @@
}
}
- /*
- * Used to parse changes to the value of Settings.Secure.LOCATION_PROVIDERS_ALLOWED.
- * This setting contains a list of the currently enabled location providers.
- * But helper functions in android.providers.Settings can enable or disable
- * a single provider by using a "+" or "-" prefix before the provider name.
- *
- * <p>See also {@link com.android.server.pm.UserRestrictionsUtils#isSettingRestrictedForUser()}.
- * If DISALLOW_SHARE_LOCATION is set, the said method will only allow values with
- * the "-" prefix.
- *
- * @returns whether the enabled location providers changed.
- */
- @GuardedBy("mLock")
- private boolean updateLocationProvidersAllowedLocked(String value, String tag,
- int owningUserId, boolean makeDefault, boolean forceNotify) {
- if (TextUtils.isEmpty(value)) {
- return false;
- }
- Setting oldSetting = getSecureSetting(
- Settings.Secure.LOCATION_PROVIDERS_ALLOWED, owningUserId);
- if (oldSetting == null) {
- return false;
- }
- String oldProviders = oldSetting.getValue();
- List<String> oldProvidersList = TextUtils.isEmpty(oldProviders)
- ? new ArrayList<>() : new ArrayList<>(Arrays.asList(oldProviders.split(",")));
- Set<String> newProvidersSet = new ArraySet<>();
- newProvidersSet.addAll(oldProvidersList);
-
- String[] providerUpdates = value.split(",");
- boolean inputError = false;
- for (String provider : providerUpdates) {
- // do not update location_providers_allowed when input is invalid
- if (TextUtils.isEmpty(provider)) {
- inputError = true;
- break;
- }
- final char prefix = provider.charAt(0);
- // do not update location_providers_allowed when input is invalid
- if (prefix != '+' && prefix != '-') {
- inputError = true;
- break;
- }
- // skip prefix
- provider = provider.substring(1);
- if (prefix == '+') {
- newProvidersSet.add(provider);
- } else if (prefix == '-') {
- newProvidersSet.remove(provider);
- }
- }
- String newProviders = TextUtils.join(",", newProvidersSet.toArray());
- if (inputError == true || newProviders.equals(oldProviders)) {
- // nothing changed, so no need to update the database
- if (forceNotify) {
- mSettingsRegistry.notifyForSettingsChange(
- makeKey(SETTINGS_TYPE_SECURE, owningUserId),
- Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
- }
- return false;
- }
- return mSettingsRegistry.insertSettingLocked(SETTINGS_TYPE_SECURE,
- owningUserId, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, newProviders, tag,
- makeDefault, getCallingPackage(), forceNotify, CRITICAL_SECURE_SETTINGS,
- /* overrideableByRestore */ false);
- }
-
private static void warnOrThrowForUndesiredSecureSettingsMutationForTargetSdk(
int targetSdkVersion, String name) {
// If the app targets Lollipop MR1 or older SDK we warn, otherwise crash.
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 610165a..29e56ef 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -318,7 +318,6 @@
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS,
Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST,
Settings.Global.LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST,
- Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS,
Settings.Global.LOCATION_GLOBAL_KILL_SWITCH,
Settings.Global.LOCATION_SETTINGS_LINK_TO_PERMISSIONS_ENABLED,
Settings.Global.LOCK_SOUND,
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
index 8ff595b..f49e209 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
@@ -128,17 +128,18 @@
}
}
- @Test
- public void testSelectAllSecureViaProviderApi() throws Exception {
- setSettingViaProviderApiAndAssertSuccessfulChange(SETTING_TYPE_SECURE,
- FAKE_SETTING_NAME, FAKE_SETTING_VALUE, false);
- try {
- queryAllSettingsViaProviderApiSettingAndAssertSettingPresent(SETTING_TYPE_SECURE,
- FAKE_SETTING_NAME);
- } finally {
- deleteStringViaProviderApi(SETTING_TYPE_SECURE, FAKE_SETTING_NAME);
- }
- }
+ // TODO(b/142206242): make this less flaky and re-enable it
+// @Test
+// public void testSelectAllSecureViaProviderApi() throws Exception {
+// setSettingViaProviderApiAndAssertSuccessfulChange(SETTING_TYPE_SECURE,
+// FAKE_SETTING_NAME, FAKE_SETTING_VALUE, false);
+// try {
+// queryAllSettingsViaProviderApiSettingAndAssertSettingPresent(SETTING_TYPE_SECURE,
+// FAKE_SETTING_NAME);
+// } finally {
+// deleteStringViaProviderApi(SETTING_TYPE_SECURE, FAKE_SETTING_NAME);
+// }
+// }
@Test
public void testSelectAllSystemViaProviderApi() throws Exception {
@@ -381,10 +382,11 @@
}
}
- @Test
- public void testResetModeUntrustedClearGlobal() throws Exception {
- testResetModeUntrustedClearCommon(SETTING_TYPE_GLOBAL);
- }
+ // TODO(b/142206242): make this less flaky and re-enable it
+// @Test
+// public void testResetModeUntrustedClearGlobal() throws Exception {
+// testResetModeUntrustedClearCommon(SETTING_TYPE_GLOBAL);
+// }
@Test
public void testResetModeUntrustedClearSecure() throws Exception {
@@ -422,10 +424,11 @@
}
}
- @Test
- public void testResetModeTrustedDefaultsGlobal() throws Exception {
- testResetModeTrustedDefaultsCommon(SETTING_TYPE_GLOBAL);
- }
+ // TODO(b/142206242): make this less flaky and re-enable it
+// @Test
+// public void testResetModeTrustedDefaultsGlobal() throws Exception {
+// testResetModeTrustedDefaultsCommon(SETTING_TYPE_GLOBAL);
+// }
@Test
public void testResetModeTrustedDefaultsSecure() throws Exception {
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index c76b50b..64e5237 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -112,6 +112,9 @@
import java.util.Enumeration;
import java.util.List;
import java.util.concurrent.Executor;
+import java.util.concurrent.atomic.AtomicBoolean;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;
@@ -251,8 +254,6 @@
private boolean mIsWatch;
private boolean mIsTv;
- private int mLastProgressPercent;
-
@Override
public void onCreate() {
mContext = getApplicationContext();
@@ -684,12 +685,12 @@
* Updates the system notification for a given bugreport.
*/
private void updateProgress(BugreportInfo info) {
- if (info.getProgress() < 0) {
+ if (info.progress.intValue() < 0) {
Log.e(TAG, "Invalid progress values for " + info);
return;
}
- if (info.isFinished()) {
+ if (info.finished.get()) {
Log.w(TAG, "Not sending progress notification because bugreport has finished already ("
+ info + ")");
return;
@@ -698,7 +699,7 @@
final NumberFormat nf = NumberFormat.getPercentInstance();
nf.setMinimumFractionDigits(2);
nf.setMaximumFractionDigits(2);
- final String percentageText = nf.format((double) info.getProgress() / 100);
+ final String percentageText = nf.format((double) info.progress.intValue() / 100);
String title = mContext.getString(R.string.bugreport_in_progress_title, info.id);
@@ -706,7 +707,7 @@
if (mIsWatch) {
nf.setMinimumFractionDigits(0);
nf.setMaximumFractionDigits(0);
- final String watchPercentageText = nf.format((double) info.getProgress() / 100);
+ final String watchPercentageText = nf.format((double) info.progress.intValue() / 100);
title = title + "\n" + watchPercentageText;
}
@@ -718,7 +719,8 @@
.setContentTitle(title)
.setTicker(title)
.setContentText(name)
- .setProgress(100 /* max value of progress percentage */, info.getProgress(), false)
+ .setProgress(100 /* max value of progress percentage */,
+ info.progress.intValue(), false)
.setOngoing(true);
// Wear and ATV bugreport doesn't need the bug info dialog, screenshot and cancel action.
@@ -747,13 +749,14 @@
.setActions(infoAction, screenshotAction, cancelAction);
}
// Show a debug log, every LOG_PROGRESS_STEP percent.
- final int progress = info.getProgress();
+ final int progress = info.progress.intValue();
- if ((info.getProgress() == 0) || (info.getProgress() >= 100)
- || ((progress / LOG_PROGRESS_STEP) != (mLastProgressPercent / LOG_PROGRESS_STEP))) {
+ if ((progress == 0) || (progress >= 100)
+ || ((progress / LOG_PROGRESS_STEP)
+ != (info.lastProgress.intValue() / LOG_PROGRESS_STEP))) {
Log.d(TAG, "Progress #" + info.id + ": " + percentageText);
}
- mLastProgressPercent = progress;
+ info.lastProgress = new AtomicInteger(progress);
sendForegroundabledNotification(info.id, builder.build());
}
@@ -810,10 +813,10 @@
mInfoDialog.cancel();
synchronized (mLock) {
final BugreportInfo info = getInfoLocked(id);
- if (info != null && !info.isFinished()) {
+ if (info != null && !info.finished.get()) {
Log.i(TAG, "Cancelling bugreport service (ID=" + id + ") on user's request");
mBugreportManager.cancelBugreport();
- deleteScreenshots(info);
+ info.deleteScreenshots();
}
stopProgressLocked(id);
}
@@ -925,7 +928,7 @@
mTakingScreenshot = flag;
for (int i = 0; i < mBugreportInfos.size(); i++) {
final BugreportInfo info = getInfoLocked(mBugreportInfos.keyAt(i));
- if (info.isFinished()) {
+ if (info.finished.get()) {
Log.d(TAG, "Not updating progress for " + info.id + " while taking screenshot"
+ " because share notification was already sent");
continue;
@@ -958,7 +961,7 @@
final String msg;
if (taken) {
info.addScreenshot(screenshotFile);
- if (info.isFinished()) {
+ if (info.finished.get()) {
Log.d(TAG, "Screenshot finished after bugreport; updating share notification");
info.renameScreenshots();
sendBugreportNotification(info, mTakingScreenshot);
@@ -972,16 +975,6 @@
}
/**
- * Deletes all screenshots taken for a given bugreport.
- */
- private void deleteScreenshots(BugreportInfo info) {
- for (File file : info.screenshotFiles) {
- Log.i(TAG, "Deleting screenshot file " + file);
- file.delete();
- }
- }
-
- /**
* Stop running on foreground once there is no more active bugreports being watched.
*/
@GuardedBy("mLock")
@@ -1001,7 +994,7 @@
if (total > 0) {
for (int i = 0; i < total; i++) {
final BugreportInfo info = getInfoLocked(mBugreportInfos.keyAt(i));
- if (!info.isFinished()) {
+ if (!info.finished.get()) {
updateProgress(info);
break;
}
@@ -1028,7 +1021,7 @@
private void onBugreportFinished(BugreportInfo info) {
Log.d(TAG, "Bugreport finished with title: " + info.getTitle()
+ " and shareDescription: " + info.shareDescription);
- info.setFinished(true);
+ info.finished = new AtomicBoolean(true);
synchronized (mLock) {
// Stop running on foreground, otherwise share notification cannot be dismissed.
@@ -1772,25 +1765,25 @@
* This will end with the string "wifi"/"telephony" for wifi/telephony bugreports.
* Bugreport zip file name = "<baseName>-<name>.zip"
*/
- String baseName;
+ private final String baseName;
/**
* Suffix name of the bugreport/screenshot, is set to timestamp initially. User can make
* modifications to this using interface.
*/
- String name;
+ private String name;
/**
* Initial value of the field name. This is required to rename the files later on, as they
* are created using initial value of name.
*/
- String initialName;
+ private final String initialName;
/**
* User-provided, one-line summary of the bug; when set, will be used as the subject
* of the {@link Intent#ACTION_SEND_MULTIPLE} intent.
*/
- String title;
+ private String title;
/**
* One-line summary of the bug; when set, will be used as the subject of the
@@ -1798,23 +1791,30 @@
* set initially when the request to take a bugreport is made. This overrides any changes
* in the title that the user makes after the bugreport starts.
*/
- String shareTitle;
+ private final String shareTitle;
/**
* User-provided, detailed description of the bugreport; when set, will be added to the body
* of the {@link Intent#ACTION_SEND_MULTIPLE} intent.
*/
- String description;
+ private String description;
/**
- * Current progress (in percentage) of the bugreport generation as displayed by the UI.
+ * Current value of progress (in percentage) of the bugreport generation as
+ * displayed by the UI.
*/
- int progress;
+ AtomicInteger progress;
+
+ /**
+ * Last value of progress (in percentage) of the bugreport generation for which
+ * system notification was updated.
+ */
+ AtomicInteger lastProgress;
/**
* Time of the last progress update.
*/
- long lastUpdate = System.currentTimeMillis();
+ AtomicLong lastUpdate = new AtomicLong(System.currentTimeMillis());
/**
* Time of the last progress update when Parcel was created.
@@ -1834,7 +1834,7 @@
/**
* Whether dumpstate sent an intent informing it has finished.
*/
- boolean finished;
+ AtomicBoolean finished = new AtomicBoolean(false);
/**
* Whether the details entries have been added to the bugreport yet.
@@ -1852,12 +1852,12 @@
* predefined description which is set initially when the request to take a bugreport is
* made.
*/
- String shareDescription;
+ private final String shareDescription;
/**
* Type of the bugreport
*/
- int type;
+ final int type;
private final Object mLock = new Object();
@@ -1899,18 +1899,6 @@
return getFd(screenshotFiles.get(0));
}
- void setFinished(boolean isFinished) {
- synchronized (mLock) {
- this.finished = isFinished;
- }
- }
-
- boolean isFinished() {
- synchronized (mLock) {
- return finished;
- }
- }
-
void setTitle(String title) {
synchronized (mLock) {
this.title = title;
@@ -1947,30 +1935,6 @@
}
}
- void setProgress(int progress) {
- synchronized (mLock) {
- this.progress = progress;
- }
- }
-
- int getProgress() {
- synchronized (mLock) {
- return progress;
- }
- }
-
- void setLastUpdate(long lastUpdate) {
- synchronized (mLock) {
- this.lastUpdate = lastUpdate;
- }
- }
-
- long getLastUpdate() {
- synchronized (mLock) {
- return lastUpdate;
- }
- }
-
/**
* Gets the name for next user triggered screenshot file.
*/
@@ -1994,6 +1958,16 @@
}
/**
+ * Deletes all screenshots taken for a given bugreport.
+ */
+ private void deleteScreenshots() {
+ for (File file : screenshotFiles) {
+ Log.i(TAG, "Deleting screenshot file " + file);
+ file.delete();
+ }
+ }
+
+ /**
* Rename all screenshots files so that they contain the new {@code name} instead of the
* {@code initialName} if user has changed it.
*/
@@ -2040,9 +2014,9 @@
if (context == null) {
// Restored from Parcel
return formattedLastUpdate == null ?
- Long.toString(getLastUpdate()) : formattedLastUpdate;
+ Long.toString(lastUpdate.longValue()) : formattedLastUpdate;
}
- return DateUtils.formatDateTime(context, getLastUpdate(),
+ return DateUtils.formatDateTime(context, lastUpdate.longValue(),
DateUtils.FORMAT_SHOW_DATE | DateUtils.FORMAT_SHOW_TIME);
}
@@ -2087,8 +2061,8 @@
initialName = in.readString();
title = in.readString();
description = in.readString();
- progress = in.readInt();
- lastUpdate = in.readLong();
+ progress = new AtomicInteger(in.readInt());
+ lastUpdate = new AtomicLong(in.readLong());
formattedLastUpdate = in.readString();
bugreportFile = readFile(in);
@@ -2097,10 +2071,11 @@
screenshotFiles.add(readFile(in));
}
- finished = in.readInt() == 1;
+ finished = new AtomicBoolean(in.readInt() == 1);
screenshotCounter = in.readInt();
shareDescription = in.readString();
shareTitle = in.readString();
+ type = in.readInt();
}
@Override
@@ -2111,8 +2086,8 @@
dest.writeString(initialName);
dest.writeString(title);
dest.writeString(description);
- dest.writeInt(progress);
- dest.writeLong(lastUpdate);
+ dest.writeInt(progress.intValue());
+ dest.writeLong(lastUpdate.longValue());
dest.writeString(getFormattedLastUpdate());
writeFile(dest, bugreportFile);
@@ -2121,10 +2096,11 @@
writeFile(dest, screenshotFile);
}
- dest.writeInt(finished ? 1 : 0);
+ dest.writeInt(finished.get() ? 1 : 0);
dest.writeInt(screenshotCounter);
dest.writeString(shareDescription);
dest.writeString(shareTitle);
+ dest.writeInt(type);
}
@Override
@@ -2163,13 +2139,13 @@
progress = CAPPED_PROGRESS;
}
if (DEBUG) {
- if (progress != info.getProgress()) {
+ if (progress != info.progress.intValue()) {
Log.v(TAG, "Updating progress for name " + info.getName() + "(id: " + info.id
- + ") from " + info.getProgress() + " to " + progress);
+ + ") from " + info.progress.intValue() + " to " + progress);
}
}
- info.setProgress(progress);
- info.setLastUpdate(System.currentTimeMillis());
+ info.progress = new AtomicInteger(progress);
+ info.lastUpdate = new AtomicLong(System.currentTimeMillis());
updateProgress(info);
}
diff --git a/packages/SoundPicker/AndroidManifest.xml b/packages/SoundPicker/AndroidManifest.xml
index 9d08182..6611176 100644
--- a/packages/SoundPicker/AndroidManifest.xml
+++ b/packages/SoundPicker/AndroidManifest.xml
@@ -12,7 +12,8 @@
<application
android:allowBackup="false"
android:supportsRtl="true">
- <receiver android:name="RingtoneReceiver">
+ <receiver android:name="RingtoneReceiver"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.DEVICE_CUSTOMIZATION_READY"/>
</intent-filter>
@@ -23,7 +24,8 @@
<activity android:name="RingtonePickerActivity"
android:theme="@style/PickerDialogTheme"
android:enabled="@*android:bool/config_defaultRingtonePickerEnabled"
- android:excludeFromRecents="true">
+ android:excludeFromRecents="true"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.RINGTONE_PICKER" />
<category android:name="android.intent.category.DEFAULT" />
diff --git a/packages/StatementService/AndroidManifest.xml b/packages/StatementService/AndroidManifest.xml
index b00c37f..e0abd50 100644
--- a/packages/StatementService/AndroidManifest.xml
+++ b/packages/StatementService/AndroidManifest.xml
@@ -39,7 +39,8 @@
<receiver
android:name=".IntentFilterVerificationReceiver"
- android:permission="android.permission.BIND_INTENT_FILTER_VERIFIER">
+ android:permission="android.permission.BIND_INTENT_FILTER_VERIFIER"
+ android:exported="true">
<!-- Set the priority 1 so newer implementation can have higher priority. -->
<intent-filter
android:priority="1">
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index da93db7..62447b5 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -539,7 +539,8 @@
<activity android:name=".SlicePermissionActivity"
android:theme="@style/Theme.SystemUI.Dialog.Alert"
android:finishOnCloseSystemDialogs="true"
- android:excludeFromRecents="true">
+ android:excludeFromRecents="true"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.intent.action.REQUEST_SLICE_PERMISSION" />
</intent-filter>
@@ -648,7 +649,8 @@
android:process=":fgservices"
android:excludeFromRecents="true"
android:launchMode="singleTop"
- android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog">
+ android:theme="@*android:style/Theme.DeviceDefault.Settings.Dialog"
+ android:exported="true">
<intent-filter android:priority="1">
<action android:name="android.settings.FOREGROUND_SERVICES_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
@@ -663,7 +665,8 @@
android:relinquishTaskIdentity="true"
android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
android:process=":ui"
- android:visibleToInstantApps="true">
+ android:visibleToInstantApps="true"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.CHOOSER" />
<category android:name="android.intent.category.VOICE" />
@@ -748,7 +751,8 @@
</provider>
<receiver
- android:name=".statusbar.KeyboardShortcutsReceiver">
+ android:name=".statusbar.KeyboardShortcutsReceiver"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.intent.action.DISMISS_KEYBOARD_SHORTCUTS" />
<action android:name="com.android.intent.action.SHOW_KEYBOARD_SHORTCUTS" />
diff --git a/packages/SystemUI/TEST_MAPPING b/packages/SystemUI/TEST_MAPPING
index c036b04..d7f135d 100644
--- a/packages/SystemUI/TEST_MAPPING
+++ b/packages/SystemUI/TEST_MAPPING
@@ -41,5 +41,18 @@
}
]
}
+ ],
+ "auto-end-to-end-postsubmit": [
+ {
+ "name": "AndroidAutoUiTests",
+ "options" : [
+ {
+ "include-filter": "android.test.functional.auto.apps.HomeHelperTest"
+ },
+ {
+ "include-filter": "android.test.functional.auto.apps.NotificationHelperTest"
+ }
+ ]
+ }
]
}
diff --git a/packages/SystemUI/res/drawable/ic_move.xml b/packages/SystemUI/res/drawable/ic_move.xml
new file mode 100644
index 0000000..e82c9d0
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_move.xml
@@ -0,0 +1,34 @@
+<!--
+ ~ Copyright (C) 2020 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.
+ -->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <item>
+ <shape android:shape="oval">
+ <solid
+ android:color="@android:color/black" />
+ <size
+ android:height="@dimen/magnification_drag_view_size"
+ android:width="@dimen/magnification_drag_view_size"/>
+ </shape>
+ </item>
+ <item
+ android:gravity="center">
+ <vector android:height="28dp" android:viewportHeight="512"
+ android:viewportWidth="512" android:width="28dp">
+ <path android:fillColor="#FFFFFF" android:pathData="M506.528,243.712l-96.224,-80c-4.8,-4 -11.456,-4.832 -17.056,-2.208C387.616,164.16 384,169.792 384,176v48h-96v-96h48c6.208,0 11.84,-3.616 14.496,-9.248c2.624,-5.632 1.792,-12.288 -2.208,-17.056l-80,-96.224c-6.08,-7.296 -18.496,-7.296 -24.608,0l-80,96.224c-3.968,4.8 -4.832,11.456 -2.176,17.056C164.128,124.384 169.792,128 176,128h48v96h-96v-48c0,-6.208 -3.616,-11.84 -9.248,-14.496c-5.6,-2.624 -12.256,-1.792 -17.056,2.208l-96.224,80c-7.296,6.08 -7.296,18.496 0,24.608l96.224,80c4.8,3.968 11.456,4.832 17.056,2.176C124.416,347.872 128,342.208 128,336v-48h96v96h-48c-6.208,0 -11.872,3.616 -14.496,9.248c-2.656,5.632 -1.792,12.288 2.176,17.056l80,96.224c6.08,7.296 18.496,7.296 24.608,0l80,-96.224c4,-4.8 4.832,-11.456 2.208,-17.056C347.84,387.616 342.208,384 336,384h-48v-96h96v48c0,6.208 3.616,11.872 9.248,14.496c5.632,2.656 12.288,1.792 17.056,-2.176l96.224,-80C513.824,262.208 513.824,249.792 506.528,243.712z"/>
+ </vector>
+ </item>
+</layer-list>
diff --git a/packages/SystemUI/res/layout/window_magnifier_view.xml b/packages/SystemUI/res/layout/window_magnifier_view.xml
index f818612..25d63e3 100644
--- a/packages/SystemUI/res/layout/window_magnifier_view.xml
+++ b/packages/SystemUI/res/layout/window_magnifier_view.xml
@@ -16,15 +16,20 @@
-->
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content">
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content">
- <SurfaceView
- android:layout_marginStart="@dimen/magnification_border_size"
- android:layout_marginTop="@dimen/magnification_border_size"
- android:id="@+id/surface_view"
+ <View
android:layout_width="match_parent"
- android:layout_height="match_parent" />
+ android:layout_height="match_parent"
+ android:layout_margin="@dimen/magnification_outer_border_margin"
+ android:background="@android:color/black" />
+
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="@dimen/magnification_inner_border_margin"
+ android:background="@color/magnification_border_color" />
<RelativeLayout
android:layout_width="match_parent"
@@ -33,39 +38,43 @@
<View
android:id="@+id/left_handle"
- android:layout_width="@dimen/magnification_border_size"
+ android:layout_width="@dimen/magnification_border_drag_size"
android:layout_height="match_parent"
- android:layout_above="@+id/drag_handle"
- android:background="@color/magnification_border_color" />
+ android:layout_above="@+id/bottom_handle" />
<View
android:id="@+id/top_handle"
android:layout_width="match_parent"
- android:layout_height="@dimen/magnification_border_size"
- android:background="@color/magnification_border_color" />
+ android:layout_height="@dimen/magnification_border_drag_size"
+ android:layout_alignParentTop="true" />
<View
android:id="@+id/right_handle"
- android:layout_width="@dimen/magnification_border_size"
+ android:layout_width="@dimen/magnification_border_drag_size"
android:layout_height="match_parent"
- android:layout_above="@+id/drag_handle"
- android:layout_alignParentEnd="true"
- android:background="@color/magnification_border_color" />
+ android:layout_above="@+id/bottom_handle"
+ android:layout_alignParentEnd="true" />
<View
android:id="@+id/bottom_handle"
android:layout_width="match_parent"
- android:layout_height="@dimen/magnification_border_size"
- android:layout_above="@+id/drag_handle"
- android:background="@color/magnification_border_color" />
+ android:layout_height="@dimen/magnification_border_drag_size"
+ android:layout_alignParentBottom="true" />
- <View
- android:id="@+id/drag_handle"
- android:layout_width="@dimen/magnification_drag_view_width"
- android:layout_height="@dimen/magnification_drag_view_height"
- android:layout_alignParentBottom="true"
- android:layout_centerHorizontal="true"
- android:background="@color/magnification_border_color" />
+ <SurfaceView
+ android:id="@+id/surface_view"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_margin="@dimen/magnification_mirror_surface_margin" />
</RelativeLayout>
+
+ <ImageView
+ android:id="@+id/drag_handle"
+ android:layout_width="@dimen/magnification_drag_view_size"
+ android:layout_height="@dimen/magnification_drag_view_size"
+ android:layout_gravity="right|bottom"
+ android:scaleType="center"
+ android:src="@drawable/ic_move" />
+
</FrameLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 8ee7ee0..02104f5 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Laat toe"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-ontfouting word nie toegelaat nie"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Die gebruiker wat tans by hierdie toestel aangemeld is, kan nie USB-ontfouting aanskakel nie. Skakel na die primêre gebruiker toe oor om hierdie kenmerk te gebruik."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Laat draadlose ontfouting op hierdie netwerk toe?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Netwerknaam (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-adres (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Laat altyd toe op hierdie netwerk"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Laat toe"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Draadlose ontfouting word nie toegelaat nie"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Die gebruiker wat tans by hierdie toestel aangemeld is, kan nie draadlose ontfouting aanskakel nie. Skakel na die primêre gebruiker toe oor om hierdie kenmerk te gebruik."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-poort is gedeaktiveer"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Die USB-poort is gedeaktiveer om jou toestel teen vloeistowwe en vuilgoed te beskerm en dit sal nie enige bykomstighede bespeur nie.\n\nJy sal ingelig word wanneer die USB-poort weer gebruik kan word."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-poort is geaktiveer om laaiers en bykomstighede te bespeur"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Bestuur"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Geskiedenis"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Stil kennisgewings"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Opletkennisgewings"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Gesprekke"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Vee alle stil kennisgewings uit"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Kennisgewings onderbreek deur Moenie Steur Nie"</string>
@@ -553,7 +560,7 @@
<string name="keyguard_indication_trust_disabled" msgid="6820793704816727918">"Toestel sal gesluit bly totdat jy dit handmatig ontsluit"</string>
<string name="hidden_notifications_title" msgid="1782412844777612795">"Kry kennisgewings vinniger"</string>
<string name="hidden_notifications_text" msgid="5899627470450792578">"Sien hulle voordat jy ontsluit"</string>
- <string name="hidden_notifications_cancel" msgid="4805370226181001278">"Nee dankie"</string>
+ <string name="hidden_notifications_cancel" msgid="4805370226181001278">"Nee, dankie"</string>
<string name="hidden_notifications_setup" msgid="2064795578526982467">"Stel op"</string>
<string name="zen_mode_and_condition" msgid="5043165189511223718">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
<string name="volume_zen_end_now" msgid="5901885672973736563">"Skakel nou af"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Help jou om te fokus sonder klank of vibrasie."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Kry jou aandag met klank of vibrasie."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Hou jou aandag met \'n swewende kortpad na hierdie inhoud toe."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Geen onlangse borrels nie"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Onlangse borrels en borrels wat toegemaak is, sal hier verskyn."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hierdie kennisgewings kan nie gewysig word nie."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hierdie groep kennisgewings kan nie hier opgestel word nie"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Instaanbediener-kennisgewing"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Beweeg na links onder"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Beweeg na regs onder"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Maak toe"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Stelselnavigasie is opgedateer. Gaan na Instellings toe om veranderinge te maak."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gaan na Instellings toe om stelselnavigasie op te dateer"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Bystandmodus"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Vinnige kontroles"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Voeg kontroles by"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Kies \'n program vanwaar jy kontroles kan byvoeg"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> huidige gunstelinge.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> huidige gunsteling.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontroles bygevoeg.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontrole bygevoeg.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroles"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Kies kontroles vir kitstoegang"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Gunstelinge"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Almal"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Die lys met alle kontroles kon nie gelaai word nie."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Ander"</string>
</resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index 7292020..22df519 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ፍቀድ"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"የዩኤስቢ እርማት አይፈቀድም"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"አሁን ወደዚህ መሣሪያ የገባው ተጠቃሚ የዩኤስቢ እርማትን ማብራት አይችልም። ይህን ባህሪ ለመጠቀም ወደ ዋና ተጠቃሚ ይቀይሩ።"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"በዚህ አውታረ መረብ ላይ ገመድ-አልባ ማረም ይፈቀድ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"የአውታረ መረብ ስም (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nየWi‑Fi አድራሻ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ሁልጊዜ በዚህ አውታረ መረብ ላይ ፍቀድ"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ፍቀድ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ገመድ-አልባ ማረም አይፈቀድም"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"በአሁኑ ጊዜ በመለያ ወደዚህ መሣሪያ የገባው ተጠቃሚ የገመድ-አልባ ማረምን ማብራት አይችልም። ይህን ባህሪ ለመጠቀም ወደ ዋና ተጠቃሚ ይቀይሩ።"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"የዩኤስቢ ወደብ ተሰናክሏል"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"መሣሪያዎን ከፈሳሽ ወይም ፍርስራሽ ለመጠበቅ ሲባል የዩኤስቢ ወደቡ ተሰናክሏል፣ እና ማናቸውም ተቀጥላዎችን አያገኝም።\n\nየዩኤስቢ ወደቡን እንደገና መጠቀም ችግር በማይኖረው ጊዜ ማሳወቂያ ይደርሰዎታል።"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ኃይል መሙያዎችን እና ተጨማሪ መሣሪያዎችን ፈልጎ ለማግኘት የነቃ የዩኤስቢ ወደብ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ያቀናብሩ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ታሪክ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ጸጥ ያሉ ማሳወቂያዎች"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"የማንቂያ ማሳወቂያዎች"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ውይይቶች"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ሁሉንም ጸጥ ያሉ ማሳወቂያዎችን ያጽዱ"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"ማሳወቂያዎች በአትረብሽ ባሉበት ቆመዋል"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ያለ ድምፅ ወይም ንዝረት እርስዎ ትኩረት እንዲያደርጉ ያግዛል።"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ከድምፅ ወይም ንዝረት ጋር የእርስዎን ትኩረት ይስባል።"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ለዚህ ይዞታ ከተንሳፋፊ አቋራጭ ጋር የእርስዎን ትኩረት ያቆያል።"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ምንም የቅርብ ጊዜ አረፋዎች የሉም"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"የቅርብ ጊዜ አረፋዎች እና የተሰናበቱ አረፋዎች እዚህ ይመጣሉ።"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"እነዚህ ማሳወቂያዎች ሊሻሻሉ አይችሉም።"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"የማሳወቂያዎች ይህ ቡድን እዚህ ላይ ሊዋቀር አይችልም"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ተኪ ማሳወቂያ"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"የግርጌውን ግራ አንቀሳቅስ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ታችኛውን ቀኝ ያንቀሳቅሱ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"አሰናብት"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"የስርዓት ዳሰሳ ተዘምኗል። ለውጦችን ለማድረግ ወደ ቅንብሮች ይሂዱ።"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"የስርዓት ዳሰሳን ለማዘመን ወደ ቅንብሮች ይሂዱ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ተጠባባቂ"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"ፈጣን መቆጣጠሪያዎች"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"መቆጣጠሪያዎችን ያክሉ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"መቆጣጠሪያዎችን ከየት እንደሚታከሉ መተግበሪያ ይምረጡ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> የአሁን ተወዳጆች።</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> የአሁን ተወዳጆች።</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> ቁጥጥሮች ታክለዋል።</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ቁጥጥሮች ታክለዋል።</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"መቆጣጠሪያዎች"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ለፈጣን መዳረሻ መቆጣጠሪያዎችን ይምረጡ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ተወዳጆች"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ሁሉም"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"የሁሉም መቆጣጠሪያዎች ዝርዝር ሊጫን አልተቻለም።"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"ሌላ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 04ba45b..ee0c65f 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -35,7 +35,7 @@
<string name="battery_low_why" msgid="2056750982959359863">"الإعدادات"</string>
<string name="battery_saver_confirmation_title" msgid="1234998463717398453">"هل تريد تفعيل ميزة توفير شحن البطارية؟"</string>
<string name="battery_saver_confirmation_title_generic" msgid="2299231884234959849">"لمحة حول ميزة \"توفير شحن البطارية\""</string>
- <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"تشغيل"</string>
+ <string name="battery_saver_confirmation_ok" msgid="5042136476802816494">"تفعيل"</string>
<string name="battery_saver_start_action" msgid="4553256017945469937">"هل تريد تفعيل ميزة توفير شحن البطارية؟"</string>
<string name="status_bar_settings_settings_button" msgid="534331565185171556">"الإعدادات"</string>
<string name="status_bar_settings_wifi_button" msgid="7243072479837270946">"Wi-Fi"</string>
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"سماح"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"لا يُسمح بتصحيح أخطاء USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"لا يمكن للمستخدم الذي يسجّل دخوله حاليًا إلى هذا الجهاز تشغيل تصحيح أخطاء USB. لاستخدام هذه الميزة، يمكنك التبديل إلى المستخدم الأساسي."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"هل تريد السماح باستخدام ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\" على هذه الشبكة؟"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"اسم الشبكة (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nعنوان شبكة Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"السماح باستخدام هذه الميزة على هذه الشبكة دائمًا"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"سماح"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"غير مسموح باستخدام ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\""</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"لا يمكن للمستخدم المسجِّل دخوله حاليًا على هذا الجهاز تفعيل ميزة \"تصحيح الأخطاء عبر شبكة Wi-Fi\". لاستخدام هذه الميزة، يمكنك التبديل إلى المستخدم الأساسي."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"تمّ إيقاف منفذ USB"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"لحماية جهازك من السوائل أو الشوائب، سيتمّ إيقاف منفذ USB ولن يتم رصد أيّ ملحقات.\n\nوسيتمّ إعلامك عندما يُسمح باستخدام منفذ USB مرة أخرى."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"تم تفعيل منفذ USB لاكتشاف أجهزة الشحن والملحقات."</string>
@@ -80,31 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"جرّب أخذ لقطة الشاشة مرة أخرى"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"يتعذر حفظ لقطة الشاشة لأن مساحة التخزين المتاحة محدودة."</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"يحظر التطبيق أو تحظر مؤسستك التقاط لقطات شاشة"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"مسجّل الشاشة"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"إشعار مستمر لجلسة تسجيل شاشة"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"هل تريد بدء التسجيل؟"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"أثناء التسجيل، يمكن أن يسجّل نظام Android أي معلومات حساسة مرئية على شاشتك أو يتم تشغيلها على جهازك. ويشمل ذلك كلمات المرور ومعلومات الدفع والصور والرسائل والمقاطع الصوتية."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"تسجيل الصوت"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"صوت الجهاز"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"الصوت من جهازك، مثلاً الموسيقى والمكالمات ونغمات الرنين"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"الميكروفون"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"صوت الجهاز والميكروفون"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"بدء"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"جارٍ تسجيل الشاشة"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"جارٍ تسجيل الشاشة والصوت"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"إظهار اللمسات على الشاشة"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"انقر لإيقاف التسجيل"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"إيقاف"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"إيقاف مؤقت"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"تمّ حذف تسجيل الشاشة."</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"حدث خطأ أثناء حذف تسجيل الشاشة."</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"تعذّر الحصول على أذونات."</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"حدث خطأ في بدء تسجيل الشاشة"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"خيارات نقل الملفات عبر USB"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"تثبيت كمشغل وسائط (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"تثبيت ككاميرا (PTP)"</string>
@@ -218,13 +211,13 @@
<string name="accessibility_data_connection_wifi" msgid="4422160347472742434">"Wi-Fi"</string>
<string name="accessibility_no_sim" msgid="1140839832913084973">"ليست هناك شريحة SIM."</string>
<string name="accessibility_cell_data" msgid="172950885786007392">"بيانات الجوّال"</string>
- <string name="accessibility_cell_data_on" msgid="691666434519443162">"تشغيل بيانات الجوال"</string>
+ <string name="accessibility_cell_data_on" msgid="691666434519443162">"تفعيل بيانات الجوال"</string>
<string name="cell_data_off_content_description" msgid="9165555931499878044">"تم إيقاف بيانات الجوال"</string>
<string name="not_default_data_content_description" msgid="6757881730711522517">"لم يتم الضبط على استخدام البيانات"</string>
<string name="cell_data_off" msgid="4886198950247099526">"إيقاف"</string>
<string name="accessibility_bluetooth_tether" msgid="6327291292208790599">"التوصيل عبر البلوتوث"</string>
<string name="accessibility_airplane_mode" msgid="1899529214045998505">"وضع الطائرة."</string>
- <string name="accessibility_vpn_on" msgid="8037549696057288731">"الشبكة الافتراضية الخاصة (VPN) قيد التشغيل."</string>
+ <string name="accessibility_vpn_on" msgid="8037549696057288731">"الشبكة الافتراضية الخاصة (VPN) قيد التفعيل."</string>
<string name="accessibility_no_sims" msgid="5711270400476534667">"ليس هناك شريحة SIM."</string>
<string name="carrier_network_change_mode" msgid="5174141476991149918">"جارٍ تغيير شبكة مشغِّل شبكة الجوّال."</string>
<string name="accessibility_battery_details" msgid="6184390274150865789">"فتح تفاصيل البطارية"</string>
@@ -254,13 +247,13 @@
<string name="accessibility_desc_close" msgid="8293708213442107755">"إغلاق"</string>
<string name="accessibility_quick_settings_wifi" msgid="167707325133803052">"<xliff:g id="SIGNAL">%1$s</xliff:g>."</string>
<string name="accessibility_quick_settings_wifi_changed_off" msgid="2230487165558877262">"تم إيقاف Wifi."</string>
- <string name="accessibility_quick_settings_wifi_changed_on" msgid="1490362586009027611">"تم تشغيل Wifi."</string>
+ <string name="accessibility_quick_settings_wifi_changed_on" msgid="1490362586009027611">"تم تفعيل Wifi."</string>
<string name="accessibility_quick_settings_mobile" msgid="1817825313718492906">"الجوّال <xliff:g id="SIGNAL">%1$s</xliff:g>. <xliff:g id="TYPE">%2$s</xliff:g>. <xliff:g id="NETWORK">%3$s</xliff:g>."</string>
<string name="accessibility_quick_settings_battery" msgid="533594896310663853">"البطارية <xliff:g id="STATE">%s</xliff:g>."</string>
<string name="accessibility_quick_settings_airplane_off" msgid="1275658769368793228">"إيقاف وضع الطائرة."</string>
- <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تشغيل وضع الطائرة."</string>
+ <string name="accessibility_quick_settings_airplane_on" msgid="8106176561295294255">"تفعيل وضع الطائرة."</string>
<string name="accessibility_quick_settings_airplane_changed_off" msgid="8880183481476943754">"تم إيقاف وضع الطائرة."</string>
- <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تشغيل وضع الطائرة."</string>
+ <string name="accessibility_quick_settings_airplane_changed_on" msgid="6327378061894076288">"تم تفعيل وضع الطائرة."</string>
<string name="accessibility_quick_settings_dnd_none_on" msgid="3235552940146035383">"كتم الصوت تمامًا"</string>
<string name="accessibility_quick_settings_dnd_alarms_on" msgid="3375848309132140014">"المنبِّهات فقط"</string>
<string name="accessibility_quick_settings_dnd" msgid="2415967452264206047">"عدم الإزعاج"</string>
@@ -268,11 +261,11 @@
<string name="accessibility_quick_settings_dnd_changed_on" msgid="186315911607486129">"تم تفعيل \"عدم الإزعاج\"."</string>
<string name="accessibility_quick_settings_bluetooth" msgid="8250942386687551283">"البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_off" msgid="3795983516942423240">"إيقاف البلوتوث."</string>
- <string name="accessibility_quick_settings_bluetooth_on" msgid="3819082137684078013">"تشغيل البلوتوث."</string>
+ <string name="accessibility_quick_settings_bluetooth_on" msgid="3819082137684078013">"تفعيل البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_connecting" msgid="7362294657419149294">"جارٍ توصيل البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_connected" msgid="5237625393869747261">"تم توصيل البلوتوث."</string>
<string name="accessibility_quick_settings_bluetooth_changed_off" msgid="3344226652293797283">"تم إيقاف البلوتوث."</string>
- <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="1263282011749437549">"تم تشغيل البلوتوث."</string>
+ <string name="accessibility_quick_settings_bluetooth_changed_on" msgid="1263282011749437549">"تم تفعيل البلوتوث."</string>
<string name="accessibility_quick_settings_location_off" msgid="6122523378294740598">"إيقاف الإبلاغ عن الموقع."</string>
<string name="accessibility_quick_settings_location_on" msgid="6869947200325467243">"تفعيل ميزة الإبلاغ عن الموقع الجغرافي."</string>
<string name="accessibility_quick_settings_location_changed_off" msgid="5132776369388699133">"تم إيقاف الإبلاغ عن الموقع."</string>
@@ -283,18 +276,18 @@
<string name="accessibility_quick_settings_less_time" msgid="9110364286464977870">"وقت أقل."</string>
<string name="accessibility_quick_settings_flashlight_off" msgid="7606563260714825190">"إيقاف الفلاش."</string>
<string name="accessibility_quick_settings_flashlight_unavailable" msgid="7458591827288347635">"تطبيق المصباح اليدوي غير متاح."</string>
- <string name="accessibility_quick_settings_flashlight_on" msgid="3785616827729850766">"تشغيل الفلاش."</string>
+ <string name="accessibility_quick_settings_flashlight_on" msgid="3785616827729850766">"تفعيل الفلاش."</string>
<string name="accessibility_quick_settings_flashlight_changed_off" msgid="3782375441381402599">"تم إيقاف الفلاش."</string>
- <string name="accessibility_quick_settings_flashlight_changed_on" msgid="4747870681508334200">"تم تشغيل الفلاش."</string>
+ <string name="accessibility_quick_settings_flashlight_changed_on" msgid="4747870681508334200">"تم تفعيل الفلاش."</string>
<string name="accessibility_quick_settings_color_inversion_changed_off" msgid="7548045840282925393">"تم إيقاف انعكاس اللون."</string>
- <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="4711141858364404084">"تم تشغيل انعكاس اللون."</string>
+ <string name="accessibility_quick_settings_color_inversion_changed_on" msgid="4711141858364404084">"تم تفعيل انعكاس اللون."</string>
<string name="accessibility_quick_settings_hotspot_changed_off" msgid="7002061268910095176">"تم إيقاف نقطة اتصال الجوّال."</string>
- <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"تم تشغيل نقطة اتصال الجوّال."</string>
+ <string name="accessibility_quick_settings_hotspot_changed_on" msgid="2576895346762408840">"تم تفعيل نقطة اتصال الجوّال."</string>
<string name="accessibility_casting_turned_off" msgid="1387906158563374962">"توقف إرسال الشاشة."</string>
<string name="accessibility_quick_settings_work_mode_off" msgid="562749867895549696">"وضع العمل معطَّل."</string>
<string name="accessibility_quick_settings_work_mode_on" msgid="2779253456042059110">"وضع العمل قيد التشغيل."</string>
<string name="accessibility_quick_settings_work_mode_changed_off" msgid="6256690740556798683">"تم إيقاف وضع العمل."</string>
- <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"تم تشغيل وضع العمل."</string>
+ <string name="accessibility_quick_settings_work_mode_changed_on" msgid="1105258550138313384">"تم تفعيل وضع العمل."</string>
<string name="accessibility_quick_settings_data_saver_changed_off" msgid="4910847127871603832">"تم إيقاف توفير البيانات."</string>
<string name="accessibility_quick_settings_data_saver_changed_on" msgid="6370606590802623078">"تم تفعيل توفير البيانات."</string>
<string name="accessibility_quick_settings_sensor_privacy_changed_off" msgid="7608378211873807353">"تم إيقاف \"خصوصية أجهزة الاستشعار\"."</string>
@@ -370,7 +363,7 @@
<string name="quick_settings_wifi_not_connected" msgid="4071097522427039160">"ليست متصلة"</string>
<string name="quick_settings_wifi_no_network" msgid="6003178398713839313">"لا تتوفر شبكة"</string>
<string name="quick_settings_wifi_off_label" msgid="4003379736176547594">"إيقاف Wi-Fi"</string>
- <string name="quick_settings_wifi_on_label" msgid="2489928193654318511">"تم تشغيل Wi-Fi"</string>
+ <string name="quick_settings_wifi_on_label" msgid="2489928193654318511">"تم تفعيل Wi-Fi"</string>
<string name="quick_settings_wifi_detail_empty_text" msgid="483130889414601732">"لا تتوفر أي شبكة Wi-Fi"</string>
<string name="quick_settings_wifi_secondary_label_transient" msgid="7501659015509357887">"جارٍ التفعيل…"</string>
<string name="quick_settings_cast_title" msgid="2279220930629235211">"بث الشاشة"</string>
@@ -488,7 +481,7 @@
<string name="user_logout_notification_text" msgid="7441286737342997991">"خروج المستخدم الحالي"</string>
<string name="user_logout_notification_action" msgid="7974458760719361881">"خروج المستخدم"</string>
<string name="user_add_user_title" msgid="4172327541504825032">"هل تريد إضافة مستخدم جديد؟"</string>
- <string name="user_add_user_message_short" msgid="2599370307878014791">"عند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nويُمكن لأي مستخدم إعادة تحميل التطبيقات لجميع المستخدمين الآخرين."</string>
+ <string name="user_add_user_message_short" msgid="2599370307878014791">"عند إضافة مستخدم جديد، عليه إعداد مساحته.\n\nويُمكن لأي مستخدم تحديث التطبيقات لجميع المستخدمين الآخرين."</string>
<string name="user_limit_reached_title" msgid="2429229448830346057">"تم الوصول إلى أقصى عدد للمستخدمين"</string>
<plurals name="user_limit_reached_message" formatted="false" msgid="2573535787802908398">
<item quantity="zero">يمكنك إضافة ما يصل إلى <xliff:g id="COUNT">%d</xliff:g> مستخدم.</item>
@@ -511,9 +504,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"عدم الإظهار مرة أخرى"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"محو الكل"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"إدارة"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"السجلّ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"الإشعارات الصامتة"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"إشعارات التنبيه"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"المحادثات"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"محو جميع الإشعارات الصامتة"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"تم إيقاف الإشعارات مؤقتًا وفقًا لإعداد \"الرجاء عدم الإزعاج\""</string>
@@ -675,9 +668,9 @@
<string name="qs_rearrange" msgid="484816665478662911">"إعادة ترتيب الإعدادات السريعة"</string>
<string name="show_brightness" msgid="6700267491672470007">"عرض السطوع في الإعدادات السريعة"</string>
<string name="experimental" msgid="3549865454812314826">"إعدادات تجريبية"</string>
- <string name="enable_bluetooth_title" msgid="866883307336662596">"تشغيل البلوتوث؟"</string>
- <string name="enable_bluetooth_message" msgid="6740938333772779717">"لتوصيل لوحة المفاتيح بالجهاز اللوحي، يلزمك تشغيل بلوتوث أولاً."</string>
- <string name="enable_bluetooth_confirmation_ok" msgid="2866408183324184876">"تشغيل"</string>
+ <string name="enable_bluetooth_title" msgid="866883307336662596">"تفعيل البلوتوث؟"</string>
+ <string name="enable_bluetooth_message" msgid="6740938333772779717">"لتوصيل لوحة المفاتيح بالجهاز اللوحي، يلزمك تفعيل بلوتوث أولاً."</string>
+ <string name="enable_bluetooth_confirmation_ok" msgid="2866408183324184876">"تفعيل"</string>
<string name="show_silently" msgid="5629369640872236299">"عرض الإشعارات بدون تنبيه صوتي"</string>
<string name="block" msgid="188483833983476566">"حظر كل الإشعارات"</string>
<string name="do_not_silence" msgid="4982217934250511227">"عدم كتم التنبيه الصوتي"</string>
@@ -712,10 +705,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"يساعدك هذا الإشعار على التركيز بدون صوت أو اهتزاز."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"يلفت هذا الإشعار انتباهك باستخدام الصوت والاهتزاز."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"يلفِت هذا الإشعار انتباهك لهذا المحتوى باستخدام اختصار عائم."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ليس هناك فقاعات حديثة"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ستظهر هنا أحدث الفقاعات والفقاعات التي تم إغلاقها."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"يتعذّر تعديل هذه الإشعارات."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"يتعذّر ضبط مجموعة الإشعارات هذه هنا."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"إشعار مستند إلى خادم وكيل"</string>
@@ -738,25 +729,18 @@
<string name="notification_done" msgid="6215117625922713976">"تم"</string>
<string name="inline_undo" msgid="9026953267645116526">"تراجع"</string>
<string name="demote" msgid="6225813324237153980">"تحويل الإشعار من محادثة إلى إشعار عادي"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"محادثة مهمة"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"ليست محادثة مهمة."</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"تم كتم الصوت"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"تنبيه"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"إظهار فقاعة تفسيرية"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"إزالة الفقاعات التفسيرية"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"إضافة إلى الشاشة الرئيسية"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"عناصر التحكم في الإشعارات"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"خيارات تأجيل الإشعارات"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"تذكيري"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"الإعدادات"</string>
<string name="snooze_undo" msgid="60890935148417175">"تراجع"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"تم تأجيل الإشعار لمدة <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -836,8 +820,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"تم إيقاف توفير البيانات"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"مفعّل"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"إيقاف"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"غير متوفّر"</string>
<string name="nav_bar" msgid="4642708685386136807">"شريط التنقل"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"التنسيق"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"نوع زر اليسار الإضافي"</string>
@@ -971,9 +954,9 @@
<string name="wifi_is_off" msgid="5389597396308001471">"تم إيقاف شبكة Wi-Fi"</string>
<string name="bt_is_off" msgid="7436344904889461591">"تم إيقاف البلوتوث."</string>
<string name="dnd_is_off" msgid="3185706903793094463">"تم إيقاف وضع \"عدم الإزعاج\""</string>
- <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"تم تشغيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية (<xliff:g id="ID_1">%s</xliff:g>)."</string>
- <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"تم تشغيل وضع \"عدم الإزعاج\" بواسطة تطبيق (<xliff:g id="ID_1">%s</xliff:g>)."</string>
- <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"تم تشغيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية أو تطبيق."</string>
+ <string name="qs_dnd_prompt_auto_rule" msgid="3535469468310002616">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية (<xliff:g id="ID_1">%s</xliff:g>)."</string>
+ <string name="qs_dnd_prompt_app" msgid="4027984447935396820">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة تطبيق (<xliff:g id="ID_1">%s</xliff:g>)."</string>
+ <string name="qs_dnd_prompt_auto_rule_app" msgid="1841469944118486580">"تم تفعيل وضع \"عدم الإزعاج\" بواسطة قاعدة تلقائية أو تطبيق."</string>
<string name="qs_dnd_until" msgid="7844269319043747955">"حتى <xliff:g id="ID_1">%s</xliff:g>"</string>
<string name="qs_dnd_keep" msgid="3829697305432866434">"الإبقاء على الإعدادات"</string>
<string name="qs_dnd_replace" msgid="7712119051407052689">"استبدال"</string>
@@ -1016,7 +999,13 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"نقل إلى أسفل يمين الشاشة"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"نقل إلى أسفل اليسار"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"تجاهل"</string>
- <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"تم إعادة تحميل التنقل داخل النظام. لإجراء التغييرات، يُرجى الانتقال إلى \"الإعدادات\"."</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
+ <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"تم تحديث التنقل داخل النظام. لإجراء التغييرات، يُرجى الانتقال إلى \"الإعدادات\"."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"الانتقال إلى \"الإعدادات\" لتعديل التنقل داخل النظام"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"وضع الاستعداد"</string>
<string name="magnification_overlay_title" msgid="6584179429612427958">"نافذة تراكب التكبير"</string>
@@ -1025,20 +1014,18 @@
<string name="quick_controls_title" msgid="525285759614231333">"عناصر التحكّم السريعة"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"إضافة عناصر تحكّم"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"اختيار تطبيق لإضافة عناصر التحكّم منه"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="zero"><xliff:g id="NUMBER_1">%s</xliff:g> عنصر مفضّل حالي</item>
- <item quantity="two">عنصران مفضّلان (<xliff:g id="NUMBER_1">%s</xliff:g>) حاليان</item>
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> عناصر مفضّلة حالية</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> عنصرًا مفضّلاً حاليًا</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> عنصر مفضّل حالي</item>
- <item quantity="one">عنصر مفضّل (<xliff:g id="NUMBER_0">%s</xliff:g>) واحد حالي</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="zero">تمت إضافة <xliff:g id="NUMBER_1">%s</xliff:g> عنصر تحكّم.</item>
+ <item quantity="two">تمت إضافة عنصرَي تحكّم (<xliff:g id="NUMBER_1">%s</xliff:g>).</item>
+ <item quantity="few">تمت إضافة <xliff:g id="NUMBER_1">%s</xliff:g> عناصر تحكّم.</item>
+ <item quantity="many">تمت إضافة <xliff:g id="NUMBER_1">%s</xliff:g> عنصر تحكّم.</item>
+ <item quantity="other">تمت إضافة <xliff:g id="NUMBER_1">%s</xliff:g> عنصر تحكّم.</item>
+ <item quantity="one">تمت إضافة عنصر تحكّم واحد (<xliff:g id="NUMBER_0">%s</xliff:g>).</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"عناصر التحكّم"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"اختيار عناصر التحكّم للوصول السريع"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"المفضّلة"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"الكل"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"تعذّر تحميل قائمة كل عناصر التحكّم."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"غير ذلك"</string>
</resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 76917bc..a1a6ae9 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"অনুমতি দিয়ক"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"ইউএছবি ডিবাগিঙৰ অনুমতি নাই"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"এই ডিভাইচটোত বর্তমান ছাইন ইন হৈ থকা ব্যৱহাৰকাৰীজনে ইউএছবি ডিবাগিং অন কৰিব নোৱাৰে। এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ হ\'লে মুখ্য ব্যৱহাৰকাৰী হিচাপে ছাইন ইন কৰক।"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"এই নেটৱৰ্কত ৱায়াৰলেছ ডিবাগিঙৰ অনুমতি দিবনে?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"নেটৱৰ্কৰ নাম (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nৱাই-ফাইৰ ঠিকনা (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"এই নেটৱৰ্কত সদায় অনুমতি দিয়ক"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"অনুমতি দিয়ক"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ৱায়াৰলেছ ডিবাগিঙৰ অনুমতি নাই"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"এই ডিভাইচটোত বর্তমান ছাইন ইন হৈ থকা ব্যৱহাৰকাৰীজনে ৱায়াৰলেছ ডিবাগিং অন কৰিব নোৱাৰে। এই সুবিধাটো ব্যৱহাৰ কৰিবলৈ হ’লে প্ৰাথমিক ব্যৱহাৰকাৰী হিচাপে ছাইন ইন কৰক।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"ইউএছবি প’ৰ্ট অক্ষম কৰা হ’ল"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"আপোনাৰ ডিভাইচটো তৰল বা ধূলি-মাকতিৰ পৰা ৰক্ষা কৰিবলৈ ইউএছবি প’ৰ্টটো অক্ষম কৰি ৰখা হৈছে ফলত ই কোনো আনুষংগিক সামগ্ৰী ধৰা পেলাব নোৱাৰে।\n\nযেতিয়া ইউএছবি প’ৰ্টটো নিৰাপদভাৱে ব্যৱহাৰ কৰিব পৰা হ’ব তেতিয়া আপোনাক জনোৱা হ’ব।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"চাৰ্জাৰ আৰু আনুষংগিক সামগ্ৰী চিনাক্ত কৰিবলৈ USB প’ৰ্ট সক্ষম কৰা হ’ল"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"পৰিচালনা"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ইতিহাস"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"নীৰৱ জাননীসমূহ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"সতৰ্কতামূলক জাননীসমূহ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"বাৰ্তালাপসমূহ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"সকলো নীৰৱ জাননী মচক"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"অসুবিধা নিদিব-ই জাননী পজ কৰিছে"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"কোনো ধ্বনি অথবা কম্পন অবিহনে আপোনাক মনোযোগ দিয়াত সহায় কৰে।"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ধ্বনি অথবা কম্পনৰ জৰিয়তে আপোনাৰ মনোযোগ আকৰ্ষণ কৰে।"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"উপঙি থকা এটা শ্বৰ্টকাটৰ জৰিয়তে এই সমলখিনিৰ প্ৰতি আপোনাক মনোযোগী কৰি ৰাখে।"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"কোনো শেহতীয়া বাবল নাই"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"শেহতীয়া বাবলসমূহ আৰু অগ্ৰাহ্য কৰা বাবলসমূহ ইয়াত প্ৰদর্শিত হ\'ব।"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই জাননীসমূহ সংশোধন কৰিব নোৱাৰি।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই ধৰণৰ জাননীবোৰ ইয়াত কনফিগাৰ কৰিব পৰা নাযায়"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"প্ৰক্সি হিচাপে পঠিওৱা জাননী"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"বুটামটো বাওঁফালে নিয়ক"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"তলৰ সোঁফালে নিয়ক"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"অগ্ৰাহ্য কৰক"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰা হ’ল। সলনি কৰিবলৈ ছেটিংসমূহ-লৈ যাওক।"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ছিষ্টেম নেভিগেশ্বন আপডে’ট কৰিবলৈ ছেটিংসমূহ-লৈ যাওক"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ষ্টেণ্ডবাই"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ক্ষিপ্ৰ নিয়ন্ত্ৰণসমূহ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"নিয়ন্ত্ৰণসমূহ যোগ দিয়ক"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"এটা এপ্ বাছনি কৰক, যিটোৰ পৰা নিয়ন্ত্ৰণসমূহ যোগ দিয়া হ\'ব"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">বর্তমানৰ প্ৰিয় <xliff:g id="NUMBER_1">%s</xliff:g> টা।</item>
- <item quantity="other">বর্তমানৰ প্ৰিয় <xliff:g id="NUMBER_1">%s</xliff:g> টা।</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"নিয়ন্ত্ৰণসমূহ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ক্ষিপ্ৰ এক্সেছৰ বাবে নিয়ন্ত্ৰণসমূহ বাছনি কৰক"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"প্ৰিয়সমূহ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"সকলো"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"নিয়ন্ত্ৰণসমূহৰ সম্পূর্ণ সূচীখন ল’ড কৰিব পৰা নগ’ল।"</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index cc3ede1..289838e 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"İcazə verin"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debaq prosesinə icazə verilmir"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Hazırda bu cihaza daxil olmuş istifadəçi USB sazlama prosesini aktiv edə bilməz. Bu funksiyadan istifadə etmək üçün əsas istifadəçi hesaba daxil olmalıdır."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Bu şəbəkədə simsiz sazlamaya icazə verilsin?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Şəbəkə Adı (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Ünvanı (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Bu şəbəkədə həmişə icazə verilsin"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"İcazə verin"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Simsiz sazlamaya icazə verilmir"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Hazırda bu cihaza daxil olmuş istifadəçi simsiz sazlamanı aktiv edə bilmir. Bu funksiyadan istifadə etmək üçün əsas istifadəçiyə keçin."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB portu deaktiv edildi"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB portu deaktivdir. Cihazı maye və zərbədən qorumaq üçün aksesuar aşkarlanmayacaq.\n\nUSB portu yenidən istifadə üçün təhlükəsiz olduqda bildiriş göndəriləcək."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Adapter və aksesuarları aşkarlamaq üçün USB portu aktiv edildi"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"İdarə edin"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Tarixçə"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Səssiz bildirişlər"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Xəbərdarlıq bildirişləri"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Söhbətlər"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Səssiz bildirişlərin hamısını silin"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Bildirişlər \"Narahat Etməyin\" rejimi tərəfindən dayandırıldı"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Səs və ya vibrasiya olmadan fokuslanmağınıza kömək edir."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Səs və ya vibrasiya ilə diqqətinizi çəkir."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Bu məzmuna üzən qısayol ilə diqqətinizi cəlb edir."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Qabarcıq yoxdur"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Son qabaqcıqlar və buraxılmış qabarcıqlar burada görünəcək."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirişlər dəyişdirilə bilməz."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildiriş qrupunu burada konfiqurasiya etmək olmaz"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proksi bildirişi"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Aşağıya sola köçürün"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Aşağıya sağa köçürün"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Kənarlaşdırın"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistem naviqasiyası yeniləndi. Dəyişiklik etmək üçün Ayarlara daxil olun."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistem naviqasiyasını yeniləmək üçün Ayarlara keçin"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gözləmə rejimi"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Sürətli Nizamlayıcılar"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Nizamlayıcılar əlavə edin"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Nizamlayıcıların hansı tətbiqdən əlavə ediləcəyini seçin"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Hazırda <xliff:g id="NUMBER_1">%s</xliff:g> sevimli var.</item>
- <item quantity="one">Hazırda <xliff:g id="NUMBER_0">%s</xliff:g> sevimli var.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> nizamlayıcı əlavə edilib.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> nizamlayıcı əlavə edilib.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Nizamlayıcılar"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Sürətli Giriş üçün nizamlayıcıları seçin"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Sevimlilər"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Hamısı"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Bütün nizamlayıcıların siyahısı yüklənmədi."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Digər"</string>
</resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index 7f4530a..b690829 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Dozvoli"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Otklanjanje grešaka na USB-u nije dozvoljeno"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može da uključi otklanjanje grešaka na USB-u. Da biste koristili ovu funkciju, prebacite na primarnog korisnika."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Želite li da omogućite bežično otklanjanje grešaka na ovoj mreži?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Naziv mreže (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi adresa (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Uvek dozvoli na ovoj mreži"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Dozvoli"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bežično otklanjanje grešaka nije dozvoljeno"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može da uključi bežično otklanjanje grešaka. Da biste koristili ovu funkciju, pređite na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port je onemogućen"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Da bi se uređaj zaštitio od tečnosti ili nečistoće, USB port je onemogućen i neće otkrivati dodatnu opremu.\n\nObavestićemo vas kada ponovo budete mogli da koristite USB port."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port je omogućen radi otkrivanja punjača i dodatne opreme"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Upravljajte"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Istorija"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Nečujna obaveštenja"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Obaveštenja koja privlače pažnju"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Konverzacije"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Obrišite sva nečujna obaveštenja"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Obaveštenja su pauzirana režimom Ne uznemiravaj"</string>
@@ -689,10 +696,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomaže vam da se koncentrišete bez zvuka ili vibracije."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Privlači vam pažnju pomoću zvuka ili vibracije."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Privlači vam pažnju pomoću plutajuće prečice do ovog sadržaja."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nema nedavnih oblačića"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Ovde se prikazuju nedavni i odbačeni oblačići."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ova obaveštenja ne mogu da se menjaju."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ova grupa obaveštenja ne može da se konfiguriše ovde"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Obaveštenje preko proksija"</string>
@@ -979,6 +984,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Premesti dole levo"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Premesti dole desno"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Odbaci"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigacija sistema je ažurirana. Da biste uneli izmene, idite u Podešavanja."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Idite u Podešavanja da biste ažurirali navigaciju sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravnosti"</string>
@@ -988,17 +999,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Dodajte kontrole"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Odaberite aplikaciju iz koje ćete dodavati kontrole"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> aktuelni favorit.</item>
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> aktuelna favorita.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> aktuelnih favorita.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> kontrola je dodata.</item>
+ <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> kontrole su dodate.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontrola je dodato.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Odaberite kontrole za brz pristup"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Omiljeno"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Sve"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Učitavanje liste svih kontrola nije uspelo."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Drugo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 0332091c..feee6a2 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Дазволіць"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Адладка USB не дапускаецца"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Карыстальнік, які зараз увайшоў у гэту прыладу, не можа ўключыць адладку USB. Каб выкарыстоўваць гэту функцыю, пераключыцеся на асноўнага карыстальніка."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Дазволіць бесправадную адладку ў гэтай сетцы?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Назва сеткі (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nАдрас Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Заўсёды дазваляць у гэтай сетцы"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Дазволіць"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Бесправадная адладка не дазволена"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Карыстальнік, які зараз увайшоў у гэту прыладу, не можа ўключыць бесправадную адладку. Каб выкарыстоўваць гэту функцыю, пераключыцеся на асноўнага карыстальніка."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Порт USB адключаны"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Порт USB адключаны, каб засцерагчы прыладу ад вадкасці і смецця, таму дадатковае абсталяванне не будзе выяўлена.\n\nВы атрымаеце апавяшчэнне, калі порт USB можна будзе выкарыстоўваць зноў."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-порту дазволена вызначаць зарадныя прылады і аксесуары"</string>
@@ -496,6 +502,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Кіраваць"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Гісторыя"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Апавяшчэнні без гуку"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Апавяшчэнні з абвесткамі"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Размовы"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Выдаліць усе апавяшчэнні без гуку"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Паказ апавяшчэнняў прыпынены ў рэжыме \"Не турбаваць\""</string>
@@ -694,10 +701,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Не адцягвае ўвагу дзякуючы выключаным гуку і вібрацыі."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Прыцягвае ўвагу гукам і вібрацыяй."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Прыцягвае ўвагу да гэтага змесціва ўсплывальнай кнопкай."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Няма нядаўніх усплывальных апавяшчэнняў"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Нядаўнія і адхіленыя ўсплывальныя апавяшчэнні будуць паказаны тут."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Гэтыя апавяшчэнні нельга змяніць."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тут канфігурыраваць гэту групу апавяшчэнняў забаронена"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Праксіраванае апавяшчэнне"</string>
@@ -986,6 +991,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Перамясціць лявей і ніжэй"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Перамясціць правей і ніжэй"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Адхіліць"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навігацыя ў сістэме абноўлена. Каб унесці змяненні, перайдзіце ў Налады."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Перайдзіце ў Налады, каб абнавіць параметры навігацыі ў сістэме"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Рэжым чакання"</string>
@@ -995,18 +1006,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Элементы хуткага кіравання"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Дадаць сродкі кіравання"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Выберыце праграму, з якой трэба дадаць сродкі кіравання"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">У абраным цяпер <xliff:g id="NUMBER_1">%s</xliff:g> элемент.</item>
- <item quantity="few">У абраным цяпер <xliff:g id="NUMBER_1">%s</xliff:g> элементы.</item>
- <item quantity="many">У абраным цяпер <xliff:g id="NUMBER_1">%s</xliff:g> элементаў.</item>
- <item quantity="other">У абраным цяпер <xliff:g id="NUMBER_1">%s</xliff:g> элемента.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Дададзены <xliff:g id="NUMBER_1">%s</xliff:g> элемент кіравання.</item>
+ <item quantity="few">Дададзена <xliff:g id="NUMBER_1">%s</xliff:g> элементы кіравання.</item>
+ <item quantity="many">Дададзена <xliff:g id="NUMBER_1">%s</xliff:g> элементаў кіравання.</item>
+ <item quantity="other">Дададзена <xliff:g id="NUMBER_1">%s</xliff:g> элемента кіравання.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Сродкі кіравання"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Выберыце сродкі кіравання для хуткага доступу"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Абраныя"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Усе"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Не ўдалося загрузіць спіс усіх сродкаў кіравання."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Іншае"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 8c8ce1d..fa57d28 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Разрешаване"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Отстраняването на грешки през USB не е разрешено"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Потребителят, който понастоящем е влязъл в това устройство, не може да включи функцията за отстраняване на грешки през USB. За да я използвате, превключете към основния потребител."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Искате ли да разрешите безжичното отстраняване на грешки в тази мрежа?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Име на мрежата (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nАдрес на Wi‑Fi мрежата (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Винаги да се разрешава в тази мрежа"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Разрешаване"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Безжичното отстраняване на грешки не е разрешено"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Потребителят, който понастоящем е влязъл в това устройство, не може да включи функцията за безжично отстраняване на грешки. За да използвате, превключете към основния потребител."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB портът е деактивиран"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"С цел защита на устройството ви от течности и замърсяване USB портът е деактивиран и няма да открива аксесоари.\n\nЩе получите известие, когато можете отново да използвате USB порта."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB портът може да разпознава зарядни устройства и аксесоари"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Управление"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"История"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Беззвучни известия"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Известия за сигнализиране"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Разговори"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Изчистване на всички беззвучни известия"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Известията са поставени на пауза от режима „Не безпокойте“"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Помага ви да се фокусирате без звук или вибриране."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Привлича вниманието ви със звук или вибриране."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Задържа вниманието ви посредством плаващ пряк път към това съдържание."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Няма скорошни балончета"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Скорошните и отхвърлените балончета ще се показват тук."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Тези известия не могат да бъдат променяни."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Тази група от известия не може да бъде конфигурирана тук"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Известие, получено чрез делегиране"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Преместване долу вляво"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Преместване долу вдясно"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Отхвърляне"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Режимът за навигиране в системата е актуализиран. За да извършите промени, отворете настройките."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Отворете настройките, за да актуализирате режима за навигиране в системата"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим на готовност"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Бързи контроли"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Добавяне на контроли"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Изберете приложение, от което да добавите контроли"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Понастоящем има <xliff:g id="NUMBER_1">%s</xliff:g> любими.</item>
- <item quantity="one">Понастоящем има <xliff:g id="NUMBER_0">%s</xliff:g> любимо.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Добавени са <xliff:g id="NUMBER_1">%s</xliff:g> контроли.</item>
+ <item quantity="one">Добавена е <xliff:g id="NUMBER_0">%s</xliff:g> контрола.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Контроли"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Изберете контроли за бърз достъп"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Любими"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Всички"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Списъкът с всички контроли не бе зареден."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Друго"</string>
</resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index 84ae5b8..1f6a377 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"অনুমতি দিন"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ডিবাগিং অনুমোদিত নয়"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ব্যবহারকারী এখন এই ডিভাইসে সাইন-ইন করেছেন তাই USB ডিবাগিং চালু করা যাবে না। এই বৈশিষ্ট্যটি ব্যবহার করতে, প্রাথমিক ব্যবহারকারীতে পাল্টে নিন।"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"এই নেটওয়ার্কে ওয়্যারলেস ডিবাগিংয়ের অনুমতি দেবেন?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"নেটওয়ার্কের নাম (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nওয়াই-ফাই অ্যাড্রেস (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"এই নেটওয়ার্কে সবসময় অনুমতি দিন"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"অনুমতি দিন"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ওয়্যারলেস ডিবাগিং করা যাবে না"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ব্যবহারকারী এখন এই ডিভাইসে সাইন-ইন করেছেন তাই ওয়্যারলেস ডিবাগিং চালু করা যাবে না। এই ফিচারটি ব্যবহার করতে, প্রাথমিক ব্যবহারকারীতে পাল্টে নিন।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"ইউএসবি পোর্ট বন্ধ করা হয়েছে"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"কোনও তরল পদার্থ ও ধুলো থেকে আপনার ডিভাইসকে সুরক্ষিত রাখতে, ইউএসবি পোর্ট বন্ধ করা আছে, তাই কোনও অ্যাক্সেসরির শনাক্ত করা যাবে না।\n\nইউএসবি পোর্ট আবার ব্যবহার করা নিরাপদ হলে, আপনাকে জানানো হবে।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"চার্জার ও আনুষঙ্গিক আইটেম শনাক্ত করার জন্য ইউএসবি চালু করা হয়েছে"</string>
@@ -80,31 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"আবার স্ক্রিনশট নেওয়ার চেষ্টা করুন"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"বেশি জায়গা নেই তাই স্ক্রিনশটটি সেভ করা যাবে না৷"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"এই অ্যাপ বা আপনার প্রতিষ্ঠান স্ক্রিনশট নেওয়ার অনুমতি দেয়নি"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"স্ক্রিন রেকর্ডার"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"স্ক্রিন রেকর্ডিং সেশন চলার বিজ্ঞপ্তি"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"রেকর্ডিং শুরু করবেন?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"রেকর্ড করার সময়, আপনার স্ক্রিনে দেখানো বা ডিভাইসে চালানো যেকোনও ধরনের সংবেদনশীল তথ্য Android সিস্টেম ক্যাপচার করতে পারে। এর মধ্যে পাসওয়ার্ড, পেমেন্টের তথ্য, ফটো, মেসেজ এবং অডিও সম্পর্কিত তথ্য থাকে।"</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"অডিও রেকর্ড করুন"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"ডিভাইস অডিও"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"মিউজিক, কল এবং রিংটোনগুলির মতো আপনার ডিভাইস থেকে সাউন্ড"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"মাইক্রোফোন"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"ডিভাইস অডিও এবং মাইক্রোফোন"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"শুরু করুন"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"স্ক্রিন রেকর্ড করা হচ্ছে"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"স্ক্রিন এবং অডিও রেকর্ড করা হচ্ছে"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"স্ক্রিনে টাচ লোকেশন দেখুন"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"বন্ধ করতে ট্যাপ করুন"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"বন্ধ করুন"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"পজ করুন"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"স্ক্রিন রেকর্ডিং মুছে ফেলা হয়েছে"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"স্ক্রিন রেকডিং মুছে ফেলার সময় সমস্যা হয়েছে"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"অনুমতি পাওয়া যায়নি"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"স্ক্রিন রেকর্ডিং শুরু করার সময় সমস্যা হয়েছে"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB ফাইল স্থানান্তরের বিকল্পগুলি"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"একটি মিডিয়া প্লেয়ার হিসেবে মাউন্ট করুন (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"একটি ক্যামেরা হিসেবে মাউন্ট করুন (PTP)"</string>
@@ -499,9 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"আর দেখাবেন না"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"সবকিছু সাফ করুন"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"পরিচালনা করুন"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"ইতিহাস"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"নীরব বিজ্ঞপ্তি"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"বিজ্ঞপ্তি সংক্রান্ত সতর্কতা"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"কথোপকথন"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"সব নীরব বিজ্ঞপ্তি মুছুন"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'বিরক্ত করবে না\' দিয়ে বিজ্ঞপ্তি পজ করা হয়েছে"</string>
@@ -700,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"সাউন্ড বা ভাইব্রেশন ছাড়া ফোকাস করতে আপনাকে সাহায্য করে।"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"সাউন্ড বা ভাইব্রেশনের সাহায্যে দৃষ্টি আকর্ষণ করে।"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ফ্লোটিং শর্টকাট ব্যবহার করে এই কন্টেন্টে আপনার দৃষ্টি আকর্ষণ করে রাখে।"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"কোনও সাম্প্রতিক বাবল নেই"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"সাম্প্রতিক বাবল এবং বাতিল করা বাবল এখানে দেখানো হবে।"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"এই বিজ্ঞপ্তিগুলি পরিবর্তন করা যাবে না।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"এই সমস্ত বিজ্ঞপ্তিকে এখানে কনফিগার করা যাবে না"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"প্রক্সি করা বিজ্ঞপ্তি"</string>
@@ -726,25 +717,18 @@
<string name="notification_done" msgid="6215117625922713976">"সম্পন্ন"</string>
<string name="inline_undo" msgid="9026953267645116526">"আগের অবস্থায় ফিরে যান"</string>
<string name="demote" msgid="6225813324237153980">"কথোপকথন হিসেবে এই বিজ্ঞপ্তি চিহ্নিত করবেন না"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"গুরুত্বপূর্ণ কথোপকথন"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"গুরুত্বপূর্ণ কথোপকথন নয়"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"মিউট করা হয়েছে"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"সতর্ক করা"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"বাবল দেখুন"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"বাবল সরিয়ে দিন"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"হোম স্ক্রিনে যোগ করুন"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"বিজ্ঞপ্তির নিয়ন্ত্রণগুলি"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"বিজ্ঞপ্তি মনে করিয়ে দেওয়ার বিকল্পগুলি"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"আমাকে মনে করিয়ে দিও"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"সেটিংস"</string>
<string name="snooze_undo" msgid="60890935148417175">"পূর্বাবস্থায় ফিরুন"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> পরে আবার মনে করানো হবে"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +800,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"ডেটা সেভার বন্ধ আছে"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"চালু আছে"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"বন্ধ আছে"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"উপলভ্য নয়"</string>
<string name="nav_bar" msgid="4642708685386136807">"নেভিগেশন বার"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"লেআউট"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"অতিরিক্ত বাঁদিকের বোতামের ধরণ"</string>
@@ -996,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"নিচে বাঁদিকে সরান"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"নিচে ডান দিকে সরান"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"খারিজ করুন"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"সিস্টেম নেভিগেশন আপডেট হয়েছে। পরিবর্তন করার জন্য সেটিংসে যান।"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"সিস্টেম নেভিগেশন আপডেট করতে সেটিংসে যান"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"স্ট্যান্ডবাই"</string>
@@ -1005,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"দ্রুত নিয়ন্ত্রণ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"কন্ট্রোল যোগ করুন"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"এমন একটি অ্যাপ বাছুন যেটি থেকে কন্ট্রোল যোগ করা যাবে"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g>টি সাম্প্রতিক ফেভারিট।</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g>টি সাম্প্রতিক ফেভারিট।</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"নিয়ন্ত্রণ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"দ্রুত অ্যাক্সেস করার জন্য কন্ট্রোল বেছে নিন"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"পছন্দসই"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"সব"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"সব কন্ট্রোলের তালিকা লোড করা যায়নি।"</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index 97b20d1..fcc3680 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Dozvoli"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Otklanjanje grešaka putem uređaja spojenog na USB nije dozvoljeno"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može uključiti opciju za otklanjanje grešaka koristeći USB. Da koristite tu funkciju, prebacite se na primarnog korisnika."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Dozvoliti bežično otklanjanje grešaka na ovoj mreži?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Naziv mreže (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa WiFi mreže (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Uvijek dozvoli na ovoj mreži"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Dozvoli"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bežično otklanjanje grešaka nije dozvoljeno"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Korisnik koji je trenutno prijavljen na ovaj uređaj ne može uključiti bežično otklanjanje grešaka. Da koristite tu funkciju, prebacite se na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB priključak je onemogućen"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB priključak je onemogućen kako bi se vaš uređaj zaštitio od tečnosti i nečistoća i neće detektirati priključene uređaje.\n\nDobit ćete obavještenje kada ponovo bude sigurno koristiti USB priključak."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB priključak je omogućen za prepoznavanje punjača i pribora"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Upravljajte"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historija"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Nečujna obavještenja"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Obavještenja koja privlače pažnju"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Razgovori"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Obriši sva nečujna obavještenja"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Obavještenja su pauzirana načinom rada Ne ometaj"</string>
@@ -691,10 +698,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomaže vam da se koncentrirate bez zvuka ili vibracije."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Privlači vašu pažnju pomoću zvuka ili vibracije."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Privlači vašu pažnju pomoću plutajuće prečice do ovog sadržaja."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nema nedavnih oblačića"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Nedavni oblačići i odbačeni oblačići će se pojaviti ovdje."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ta obavještenja se ne mogu izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ovdje nije moguće konfigurirati ovu grupu obavještenja"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Obavještenje preko proksi servera"</string>
@@ -718,7 +723,7 @@
<string name="inline_undo" msgid="9026953267645116526">"Opozovi"</string>
<string name="demote" msgid="6225813324237153980">"Označi da ovo obavještenje nije razgovor"</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"Važan razgovor"</string>
- <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Ne radi se o važnom razgovoru"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Nije važan razgovor"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"Bez zvuka"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Upozorenja"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"Prikaži oblačić"</string>
@@ -981,6 +986,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Pomjeri dolje lijevo"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Pomjerite dolje desno"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Odbaci"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigiranje sistemom je ažurirano. Da izvršite promjene, idite u Postavke."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Idite u Postavke da ažurirate navigiranje sistemom"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string>
@@ -990,17 +1001,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Dodavanje kontrola"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Odaberite aplikaciju za dodavanje kontrola"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">Trenutno <xliff:g id="NUMBER_1">%s</xliff:g> omiljena.</item>
- <item quantity="few">Trenutno <xliff:g id="NUMBER_1">%s</xliff:g> omiljene.</item>
- <item quantity="other">Trenutno <xliff:g id="NUMBER_1">%s</xliff:g> omiljenih.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Dodana je <xliff:g id="NUMBER_1">%s</xliff:g> kontrola.</item>
+ <item quantity="few">Dodane su <xliff:g id="NUMBER_1">%s</xliff:g> kontrole.</item>
+ <item quantity="other">Dodano je <xliff:g id="NUMBER_1">%s</xliff:g> kontrola.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Odaberite kontrole za brzi pristup"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Omiljeno"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Sve"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Učitavanje liste svih kontrola nije uspjelo."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Drugo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 26074be..7f7eff1 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permet"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"No es permet la depuració per USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"L\'usuari que té iniciada la sessió al dispositiu en aquest moment no pot activar la depuració per USB. Per utilitzar aquesta funció, cal canviar a l\'usuari principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vols permetre la depuració sense fil en aquesta xarxa?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nom de la xarxa (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdreça Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permet sempre en aquesta xarxa"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permet"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"No es permet la depuració sense fil"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"L\'usuari que té iniciada la sessió al dispositiu en aquest moment no pot activar la depuració sense fil. Per utilitzar aquesta funció, cal canviar a l\'usuari principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"El port USB està desactivat"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Per protegir el teu dispositiu dels líquids o de la pols, el port USB s\'ha desactivat i no detectarà cap accessori.\n\nRebràs una notificació quan puguis tornar a utilitzar-lo."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"S\'ha activat el port USB per detectar carregadors i accessoris"</string>
@@ -83,10 +89,10 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Gravadora de pantalla"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notificació en curs d\'una sessió de gravació de la pantalla"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Vols iniciar la gravació?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Quan graves contingut, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou contrasenyes, informació de pagament, fotos, missatges i àudio."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Quan graves contingut, el sistema Android pot capturar qualsevol informació sensible que es mostri a la pantalla o que es reprodueixi al dispositiu. Això inclou les contrasenyes, la informació de pagament, les fotos, els missatges i l\'àudio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Grava l\'àudio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Àudio del dispositiu"</string>
- <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sons del dispositiu, com ara música, trucades i sons de trucada"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Sons del dispositiu, com ara la música, les trucades i els sons de trucada"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Micròfon"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Àudio del dispositiu i micròfon"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Inicia"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gestiona"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificacions silencioses"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificacions d\'alerta"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Converses"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Esborra totes les notificacions silencioses"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificacions pausades pel mode No molestis"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"T\'ajuda a concentrar-te sense so ni vibració."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Atrau la teva atenció amb so i vibració."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Atrau la teva atenció amb una drecera flotant a aquest contingut."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No hi ha bombolles recents"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Les bombolles recents i les ignorades es mostraran aquí."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aquestes notificacions no es poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquest grup de notificacions no es pot configurar aquí"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificació mitjançant aplicació intermediària"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mou a baix a l\'esquerra"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mou a baix a la dreta"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Omet"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"S\'ha actualitzat el sistema de navegació. Per fer canvis, ves a Configuració."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ves a Configuració per actualitzar el sistema de navegació"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controls ràpids"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Afegeix controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Tria una aplicació de la qual vulguis afegir controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> preferits actuals.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> preferit actual.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">S\'han afegit <xliff:g id="NUMBER_1">%s</xliff:g> controls.</item>
+ <item quantity="one">S\'ha afegit <xliff:g id="NUMBER_0">%s</xliff:g> control.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Tria controls per a l\'accés ràpid"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Preferits"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tots"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"No s\'ha pogut carregar la llista completa de controls."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Altres"</string>
</resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index dc01532..8d26c4a 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Povolit"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ladění přes USB není povoleno"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout ladění přes USB. Chcete-li tuto funkci použít, přepněte na primárního uživatele."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Povolit v této síti bezdrátové ladění?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Název sítě (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Vždy povolit v této síti"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Povolit"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bezdrátové ladění není povoleno"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Uživatel aktuálně přihlášený k tomuto zařízení nemůže zapnout bezdrátové ladění. Chcete-li tuto funkci použít, přepněte na primárního uživatele."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB je deaktivován"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Kvůli ochraně vašeho zařízení před tekutinami a nečistotami je port USB zakázán a nerozpozná žádné příslušenství.\n\nAž bude opět bezpečné port USB použít, budeme vás informovat."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB může zjišťovat nabíječky a příslušenství"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Spravovat"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historie"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Tichá oznámení"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Oznámení s upozorněním"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Konverzace"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Vymazat všechna tichá oznámení"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Oznámení jsou pozastavena režimem Nerušit"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomáhá vám soustředit se vypnutím zvuku a vibrací."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Upozorňuje vás pomocí zvuku a vibrací."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Přitahuje pozornost pomocí plovoucí zkratky k tomuto obsahu."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Žádné nedávné bubliny"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Zde se budou zobrazovat nedávné bubliny a zavřené bubliny."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tato oznámení nelze upravit."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tuto skupinu oznámení tady nelze nakonfigurovat"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Zprostředkované oznámení"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Přesunout vlevo dolů"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Přesunout vpravo dolů"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Zavřít"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systémová navigace byla aktualizována. Chcete-li provést změny, přejděte do Nastavení."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Přejděte do Nastavení a aktualizujte systémovou navigaci"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostní režim"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Rychlé ovládací prvky"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Přidání ovládacích prvků"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Vyberte aplikaci, ze které chcete přidat ovládací prvky"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> stávající oblíbené.</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> stávajících oblíbených.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> stávajících oblíbených.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> stávající oblíbený.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="few">Byly přidány <xliff:g id="NUMBER_1">%s</xliff:g> ovládací prvky.</item>
+ <item quantity="many">Bylo přidáno <xliff:g id="NUMBER_1">%s</xliff:g> ovládacího prvku.</item>
+ <item quantity="other">Bylo přidáno <xliff:g id="NUMBER_1">%s</xliff:g> ovládacích prvků.</item>
+ <item quantity="one">Byl přidán <xliff:g id="NUMBER_0">%s</xliff:g> ovládací prvek.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Ovládací prvky"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Vyberte ovládací prvky pro rychlý přístup"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Oblíbené"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Vše"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Načtení seznamu všech ovládacích prvků se nezdařilo."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Jiné"</string>
</resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index 261a80c..1ad3102 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Tillad"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-fejlretning er ikke tilladt"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Den bruger, der i øjeblikket er logget ind på denne enhed, kan ikke aktivere USB-fejlretning. Skift til den primære bruger for at bruge denne funktion."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vil du tillade trådløs fejlretning på dette netværk?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Netværksnavn (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-adresse (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Tillad altid på dette netværk"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Tillad"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Trådløs fejlretning er ikke tilladt"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Den bruger, der i øjeblikket er logget ind på denne enhed, kan ikke aktivere trådløs fejlretning. Skift til den primære bruger for at bruge denne funktion."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-porten er deaktiveret"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB-porten er blevet deaktiveret for at beskytte din enhed mod væske og snavs. Den kan derfor ikke registrere noget tilbehør.\n\nDu får besked, når du kan bruge USB-porten igen."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-porten er aktiveret for at registrere opladere og tilbehør"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Administrer"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historik"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Lydløse notifikationer"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notifikationer med vibration eller lyd"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Samtaler"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Ryd alle lydløse notifikationer"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifikationer er sat på pause af Forstyr ikke"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ingen lyde eller vibrationer, der forstyrrer dig."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Fanger din opmærksomhed med lyd eller vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Fastholder din opmærksomhed med en svævende genvej til indholdet."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Ingen seneste bobler"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Nye bobler og afviste bobler vises her."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse notifikationer kan ikke redigeres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Du kan ikke konfigurere denne gruppe notifikationer her"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxyforbundet notifikation"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Flyt ned til venstre"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Flyt ned til højre"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Afvis"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigationen blev opdateret. Gå til Indstillinger for at foretage ændringer."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gå til Indstillinger for at opdatere systemnavigationen"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Hurtig betjening"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Tilføj betjeningselementer"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Vælg en app at tilføje betjeningselementer fra"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> aktuel favorit.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> aktuelle favoritter.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> styringselement er tilføjet.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> styringselementer er tilføjet.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Betjeningselementer"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Vælg betjeningselementer til hurtig adgang"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritter"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Alle"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Listen over styringselementer kunne ikke indlæses."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Andre"</string>
</resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 28d53ec..4978041 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Erlauben"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-Debugging nicht zulässig"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Der momentan auf diesem Gerät angemeldete Nutzer kann das USB-Debugging nicht aktivieren. Um diese Funktion verwenden zu können, wechsle zum primären Nutzer."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Kabelloses Debugging in diesem Netzwerk zulassen?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Netzwerkname (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWLAN-Adresse (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Immer in diesem Netzwerk zulassen"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Zulassen"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Kabelloses Debugging nicht zulässig"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Der momentan auf diesem Gerät angemeldete Nutzer kann das kabellose Debugging nicht aktivieren. Um diese Funktion verwenden zu können, wechsle zum Hauptnutzer."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-Port deaktiviert"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Zum Schutz deines Geräts vor Flüssigkeiten oder Fremdkörpern ist der USB-Port zurzeit deaktiviert und erkennt kein Zubehör.\n\nDu wirst benachrichtigt, wenn der USB-Port wieder verwendet werden kann."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Erkennung von Ladegeräten und Zubehör am USB-Port aktiviert"</string>
@@ -83,16 +89,16 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Bildschirmaufzeichnung"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Fortlaufende Benachrichtigung für eine Bildschirmaufzeichnung"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Aufzeichnung starten?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Beim Aufnehmen kann Android-System vertrauliche Informationen erfassen, die auf deinem Bildschirm angezeigt oder von deinem Gerät wiedergegeben werden. Das können Passwörter, Zahlungsinformationen Fotos, Nachrichten und Audioinhalte sein."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Beim Aufnehmen kann das Android-System vertrauliche Informationen erfassen, die auf deinem Bildschirm angezeigt oder von deinem Gerät wiedergegeben werden. Das können Passwörter, Zahlungsinformationen, Fotos, Nachrichten und Audioinhalte sein."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Audio aufnehmen"</string>
- <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audioausgabe des Geräts"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio über das Gerät"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Audioinhalte auf deinem Gerät, wie Musik, Anrufe und Klingeltöne"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofon"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio über Gerät und Mikrofon aufnehmen"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio über Gerät und externes Mikrofon aufnehmen"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Start"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Bildschirm wird aufgezeichnet"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Bildschirm und Ton werden aufgezeichnet"</string>
- <string name="screenrecord_taps_label" msgid="1595690528298857649">"Tippen auf dem Display anzeigen"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"Berührungen des Bildschirms anzeigen"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"Zum Stoppen tippen"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"Anhalten"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"Pausieren"</string>
@@ -492,6 +498,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Verwalten"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Verlauf"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Lautlose Benachrichtigungen"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Nicht stummgeschaltete Benachrichtigungen"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Unterhaltungen"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Alle lautlosen Benachrichtigungen löschen"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Benachrichtigungen durch \"Bitte nicht stören\" pausiert"</string>
@@ -690,10 +697,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Benachrichtigungen werden ohne Ton oder Vibration angekündigt, um deine Konzentration nicht zu stören."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Benachrichtigungen werden mit einem Ton oder einer Vibration angekündigt."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Du wirst mit einer unverankerten Verknüpfung darauf aufmerksam gemacht."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Keine kürzlich geschlossenen Bubbles"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Hier werden aktuelle und geschlossene Bubbles angezeigt."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Diese Benachrichtigungen können nicht geändert werden."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Die Benachrichtigungsgruppe kann hier nicht konfiguriert werden"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Weitergeleitete Benachrichtigung"</string>
@@ -978,6 +983,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Nach unten links verschieben"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Nach unten rechts verschieben"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Schließen"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemsteuerungseinstellungen wurden angepasst. Änderungen kannst du in den Einstellungen vornehmen."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gehe zu den Einstellungen, um die Systemsteuerung anzupassen"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -987,16 +998,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Schnellsteuerung"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Steuerelemente hinzufügen"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"App auswählen, über die Steuerelemente hinzugefügt werden sollen"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> aktuelle Favoriten.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> aktueller Favorit.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> Steuerelemente hinzugefügt.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> Steuerelement hinzugefügt.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Steuerelemente"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Steuerelemente für den Schnellzugriff auswählen"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoriten"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Alle"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Fehler beim Laden der Liste mit Steuerelementen."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Andere"</string>
</resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index 2ca15c8..3eab4dd 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Να επιτρέπεται"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Δεν επιτρέπεται ο εντοπισμός σφαλμάτων USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Ο χρήστης που είναι συνδεδεμένος αυτήν τη στιγμή σε αυτήν τη συσκευή δεν μπορεί να ενεργοποιήσει τον εντοπισμό σφαλμάτων USB. Για να χρησιμοποιήσετε αυτήν τη λειτουργία, κάντε εναλλαγή στον κύριο χρήστη."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Να επιτρέπεται ο εντοπισμός σφαλμάτων μέσω ασύρματης σύνδεσης σε αυτό το δίκτυο;"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Όνομα δικτύου (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nΔιεύθυνση Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Να επιτρέπεται πάντα σε αυτό το δίκτυο"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Να επιτρέπεται"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Ο εντοπισμός σφαλμάτων μέσω ασύρματης σύνδεσης δεν επιτρέπεται"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Ο χρήστης που είναι συνδεδεμένος αυτήν τη στιγμή στη συγκεκριμένη συσκευή δεν μπορεί να ενεργοποιήσει τον εντοπισμό σφαλμάτων μέσω ασύρματης σύνδεσης. Για να χρησιμοποιήσετε αυτήν τη λειτουργία, κάντε εναλλαγή στον κύριο χρήστη."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Η θύρα USB απενεργοποιήθηκε"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Για την προστασία της συσκευής σας από υγρασία ή ακαθαρσίες, η θύρα USB έχει απενεργοποιηθεί και δεν θα εντοπίζει τυχόν αξεσουάρ.\n\nΘα ειδοποιηθείτε όταν θα μπορείτε να χρησιμοποιήσετε ξανά τη θύρα USB."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Η θύρα USB ενεργοποιήθηκε για τον εντοπισμό φορτιστών και αξεσουάρ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Διαχείριση"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Ιστορικό"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Ειδοποιήσεις σε σίγαση"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Ειδοποιήσεις"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Συνομιλίες"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Διαγραφή όλων των ειδοποιήσεων σε σίγαση"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Οι ειδοποιήσεις τέθηκαν σε παύση από τη λειτουργία \"Μην ενοχλείτε\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Σας βοηθά να συγκεντρωθείτε χωρίς ήχο και δόνηση."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Τραβά την προσοχή σας με ήχο ή δόνηση."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Κρατάει την προσοχή σας με μια κινούμενη συντόμευση προς αυτό το περιεχόμενο."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Δεν υπάρχουν πρόσφατες φούσκες"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Τα πρόσφατα συννεφάκια και τα συννεφάκια που παραβλέψατε θα εμφανίζονται εδώ."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Δεν είναι δυνατή η τροποποίηση αυτών των ειδοποιήσεων"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Δεν είναι δυνατή η διαμόρφωση αυτής της ομάδας ειδοποιήσεων εδώ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Ειδοποίηση μέσω διακομιστή μεσολάβησης"</string>
@@ -974,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Μετακίνηση κάτω αριστερά"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Μετακίνηση κάτω δεξιά"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Παράβλεψη"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Διατήρηση συζητήσεων στο προσκήνιο"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"Οι νέες συζητήσεις από την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> θα εμφανίζονται ως συννεφάκια. Πατήστε ένα συννεφάκι για άνοιγμα. Σύρετε για μετακίνηση.\n\nΠατήστε το συννεφάκι."</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Πατήστε Διαχείριση για να απενεργοποιήσετε τα συννεφάκια από αυτήν την εφαρμογή."</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Η πλοήγηση συστήματος ενημερώθηκε. Για να κάνετε αλλαγές, μεταβείτε στις Ρυθμίσεις."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Μεταβείτε στις Ρυθμίσεις για να ενημερώσετε την πλοήγηση συστήματος"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Κατάσταση αναμονής"</string>
@@ -983,16 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Στοιχεία γρήγορου ελέγχου"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Προσθήκη στοιχείων ελέγχου"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Επιλέξτε μια εφαρμογή από την οποία θα προσθέσετε στοιχεία ελέγχου"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> τρέχοντα αγαπημένα.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> τρέχον αγαπημένο.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Προστέθηκαν <xliff:g id="NUMBER_1">%s</xliff:g> στοιχεία ελέγχου.</item>
+ <item quantity="one">Προστέθηκε <xliff:g id="NUMBER_0">%s</xliff:g> στοιχείο ελέγχου.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Στοιχεία ελέγχου"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Επιλέξτε στοιχεία ελέγχου για γρήγορη πρόσβαση"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Αγαπημένα"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Όλα"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Ανεπιτυχής φόρτωση λίστας όλων των στοιχ. ελέγχου."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Άλλο"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 529c6af..98fcd53 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Allow"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debugging not allowed"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Allow wireless debugging on this network?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Network Name (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Address (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Always allow on this network"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Allow"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wireless debugging not allowed"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"The user currently signed in to this device can’t turn on wireless debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s OK to use the USB port again."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port enabled to detect chargers and accessories"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Manage"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Silent notifications"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerting notifications"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Clear all silent notifications"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications paused by Do Not Disturb"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Gets your attention with sound or vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Keeps your attention with a floating shortcut to this content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No recent bubbles"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Recently dismissed bubbles will appear here for easy retrieval."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recent bubbles and dismissed bubbles will appear here."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxied notification"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Move bottom left"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Move bottom right"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dismiss"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Keep chats up front"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"New chats from <xliff:g id="APP_NAME">%1$s</xliff:g> will appear as bubbles. Tap a bubble to open it. Drag to move it.\n\nTap the bubble"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tap Manage to turn off bubbles from this app"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Add controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choose an app from which to add controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> current favourites.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> current favourite.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> control added.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choose controls for quick access"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favourites"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"All"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"The list of all controls could not be loaded."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Other"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index ce6c827..dbdff59 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Allow"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debugging not allowed"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Allow wireless debugging on this network?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Network Name (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Address (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Always allow on this network"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Allow"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wireless debugging not allowed"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"The user currently signed in to this device can’t turn on wireless debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s OK to use the USB port again."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port enabled to detect chargers and accessories"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Manage"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Silent notifications"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerting notifications"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Clear all silent notifications"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications paused by Do Not Disturb"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Gets your attention with sound or vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Keeps your attention with a floating shortcut to this content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No recent bubbles"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Recently dismissed bubbles will appear here for easy retrieval."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recent bubbles and dismissed bubbles will appear here."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxied notification"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Move bottom left"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Move bottom right"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dismiss"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Keep chats up front"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"New chats from <xliff:g id="APP_NAME">%1$s</xliff:g> will appear as bubbles. Tap a bubble to open it. Drag to move it.\n\nTap the bubble"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tap Manage to turn off bubbles from this app"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Add controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choose an app from which to add controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> current favourites.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> current favourite.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> control added.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choose controls for quick access"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favourites"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"All"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"The list of all controls could not be loaded."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Other"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 529c6af..98fcd53 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Allow"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debugging not allowed"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Allow wireless debugging on this network?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Network Name (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Address (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Always allow on this network"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Allow"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wireless debugging not allowed"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"The user currently signed in to this device can’t turn on wireless debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s OK to use the USB port again."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port enabled to detect chargers and accessories"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Manage"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Silent notifications"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerting notifications"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Clear all silent notifications"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications paused by Do Not Disturb"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Gets your attention with sound or vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Keeps your attention with a floating shortcut to this content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No recent bubbles"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Recently dismissed bubbles will appear here for easy retrieval."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recent bubbles and dismissed bubbles will appear here."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxied notification"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Move bottom left"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Move bottom right"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dismiss"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Keep chats up front"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"New chats from <xliff:g id="APP_NAME">%1$s</xliff:g> will appear as bubbles. Tap a bubble to open it. Drag to move it.\n\nTap the bubble"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tap Manage to turn off bubbles from this app"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Add controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choose an app from which to add controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> current favourites.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> current favourite.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> control added.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choose controls for quick access"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favourites"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"All"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"The list of all controls could not be loaded."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Other"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 529c6af..98fcd53 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Allow"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debugging not allowed"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Allow wireless debugging on this network?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Network Name (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Address (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Always allow on this network"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Allow"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wireless debugging not allowed"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"The user currently signed in to this device can’t turn on wireless debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s OK to use the USB port again."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port enabled to detect chargers and accessories"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Manage"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Silent notifications"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerting notifications"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Clear all silent notifications"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications paused by Do Not Disturb"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Gets your attention with sound or vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Keeps your attention with a floating shortcut to this content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No recent bubbles"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Recently dismissed bubbles will appear here for easy retrieval."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recent bubbles and dismissed bubbles will appear here."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxied notification"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Move bottom left"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Move bottom right"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dismiss"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Keep chats up front"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"New chats from <xliff:g id="APP_NAME">%1$s</xliff:g> will appear as bubbles. Tap a bubble to open it. Drag to move it.\n\nTap the bubble"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tap Manage to turn off bubbles from this app"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Add controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choose an app from which to add controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> current favourites.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> current favourite.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> control added.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choose controls for quick access"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favourites"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"All"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"The list of all controls could not be loaded."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Other"</string>
</resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 924ad60..8b6a7eb 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Allow"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB debugging not allowed"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Allow wireless debugging on this network?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Network Name (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Address (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Always allow on this network"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Allow"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Wireless debugging not allowed"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"The user currently signed in to this device can’t turn on wireless debugging. To use this feature, switch to the primary user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port disabled"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"To protect your device from liquid or debris, the USB port is disabled and won’t detect any accessories.\n\nYou’ll be notified when it’s okay to use the USB port again."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB port enabled to detect chargers and accessories"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Manage"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Silent notifications"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerting notifications"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Clear all silent notifications"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications paused by Do Not Disturb"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Gets your attention with sound or vibration."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Keeps your attention with a floating shortcut to this content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No recent bubbles"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Recently dismissed bubbles will appear here for easy retrieval."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recent bubbles and dismissed bubbles will appear here."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"These notifications can\'t be modified."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"This group of notifications cannot be configured here"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxied notification"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Move bottom left"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Move bottom right"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dismiss"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Keep chats up front"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"New chats from <xliff:g id="APP_NAME">%1$s</xliff:g> will appear as bubbles. Tap a bubble to open it. Drag to move it.\n\nTap the bubble"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Tap Manage to turn off bubbles from this app"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"System navigation updated. To make changes, go to Settings."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Go to Settings to update system navigation"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Quick Controls"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Add Controls"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choose an app from which to add controls"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> current favorites.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> current favorite.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> control added.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controls"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choose controls for quick access"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favorites"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"All"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"The list of all controls could not be loaded."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Other"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index f2d145f..f5c7808 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"No tienes permitida la depuración por USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"El usuario al que accediste en este dispositivo no puede activar la depuración por USB. Para usar esta función, debes cambiar al usuario principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"¿Quieres permitir la depuración inalámbrica en esta red?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nombre de red (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nDirección Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permitir siempre en esta red"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"No tienes permitida la depuración inalámbrica"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"El usuario al que accediste en este dispositivo no puede activar la depuración inalámbrica. Para usar esta función, debes cambiar al usuario principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Puerto USB inhabilitado"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para proteger tu dispositivo de líquidos o suciedad, el puerto USB está inhabilitado y no detectará ningún accesorio.\n\nTe avisaremos cuando puedas usar el puerto USB de nuevo."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Se habilitó el puerto USB para detectar cargadores y accesorios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Administrar"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificaciones silenciosas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificaciones que alertan"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversaciones"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Borrar todas las notificaciones silenciosas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificaciones pausadas por el modo \"No interrumpir\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Te ayuda a concentrarte sin sonar ni vibrar."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Capta tu atención con sonido o vibración."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Retiene tu atención con un acceso directo flotante a este contenido."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No hay burbujas recientes"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Las burbujas recientes y las descartadas aparecerán aquí."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"No se pueden modificar estas notificaciones."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"No se puede configurar aquí este grupo de notificaciones"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificación almacenada en proxy"</string>
@@ -716,8 +721,8 @@
<string name="notification_conversation_unfavorite" msgid="181383708304763807">"No es una conversación importante"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"Silenciada"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Activar alertas"</string>
- <string name="notification_conversation_bubble" msgid="2242180995373949022">"Mostrar cuadro"</string>
- <string name="notification_conversation_unbubble" msgid="6908427185031099868">"Quitar cuadros"</string>
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"Mostrar burbuja"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"Quitar burbujas"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"Agregar a la pantalla principal"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g> de <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"controles de notificación"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Ubicar abajo a la izquierda"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Ubicar abajo a la derecha"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ignorar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Se actualizó el sistema de navegación. Para hacer cambios, ve a Configuración."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ve a Configuración para actualizar la navegación del sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Agregar controles"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Elige una app desde la cual agregar controles"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos actuales</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorito actual</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Se agregaron <xliff:g id="NUMBER_1">%s</xliff:g> controles.</item>
+ <item quantity="one">Se agregó <xliff:g id="NUMBER_0">%s</xliff:g> control.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Elige los controles de acceso rápido"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Todo"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"No se cargó la lista completa de controles."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Otros"</string>
</resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index a5b1871..85af824 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Depuración USB no permitida"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"El usuario con el que se ha iniciado sesión en este dispositivo no puede activar la depuración USB. Para utilizar esta función, inicia sesión con la cuenta de usuario principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"¿Quieres permitir la depuración inalámbrica en esta red?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nombre de la red (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nDirección Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permitir siempre en esta red"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Depuración inalámbrica no permitida"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"El usuario con el que se ha iniciado sesión en este dispositivo no puede activar la depuración inalámbrica. Para utilizar esta función, inicia sesión con la cuenta de usuario principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Puerto USB inhabilitado"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para proteger tu dispositivo de los líquidos y la suciedad, el puerto USB se ha inhabilitado y no detectará ningún accesorio.\n\nRecibirás una notificación cuando puedas volver a usarlo."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Puerto USB habilitado para detectar cargadores y accesorios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gestionar"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificaciones silenciadas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificaciones que alertan"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversaciones"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Borrar todas las notificaciones silenciadas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificaciones pausadas por el modo No molestar"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Te ayuda a concentrarte sin sonido ni vibración."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Llama tu atención con sonido o vibración."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Llama tu atención con un acceso directo flotante a este contenido."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"No hay burbujas recientes"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Las burbujas recientes y las descartadas aparecerán aquí."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificaciones no se pueden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Este grupo de notificaciones no se puede configurar aquí"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificación mediante proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mover abajo a la izquierda."</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mover abajo a la derecha"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Cerrar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Se ha actualizado la navegación del sistema. Para hacer cambios, ve a Ajustes."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ve a Ajustes para actualizar la navegación del sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Añadir controles"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Elige una aplicación de la que quieras añadir controles"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorito.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Se han añadido <xliff:g id="NUMBER_1">%s</xliff:g> controles.</item>
+ <item quantity="one">Se ha añadido <xliff:g id="NUMBER_0">%s</xliff:g> control.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Elige controles de acceso rápido"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Todos"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"No se ha podido cargar la lista de los controles."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Otros"</string>
</resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index aaa4d5c..548076d 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Luba"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-silumine pole lubatud"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Sellesse seadmesse praegu sisse logitud kasutaja ei saa USB-silumist sisse lülitada. Selle funktsiooni kasutamiseks vahetage peamisele kasutajale."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Kas lubada selles võrgus juhtmevaba silumine?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Võrgu nimi (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWiFi-võrgu aadress (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Luba selles võrgus alati"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Luba"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Juhtmevaba silumine pole lubatud"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Sellesse seadmesse praegu sisse logitud kasutaja ei saa juhtmevaba silumist sisse lülitada. Selle funktsiooni kasutamiseks vahetage peamisele kasutajale."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-port on keelatud"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Selleks et kaitsta teie seadet vedeliku või mustuse eest, on USB-port keelatud ja see ei tuvasta lisatarvikuid.\n\nKui USB-porti tohib taas kasutada, saate selle kohta märguande."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-pordil on lubatud tuvastada laadijaid ja tarvikuid"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Haldamine"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Ajalugu"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Hääletud märguanded"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Hoiatusmärguanded"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Vestlused"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Kustuta kõik hääletud märguanded"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Režiim Mitte segada peatas märguanded"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Aitab teil keskenduda (heli või vibreerimine puudub)."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Haarab heli või vibreerimisega teie tähelepanu."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Hoiab teie tähelepanu hõljuva otseteega selle sisu juurde."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Hiljutisi mulle pole"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Siin kuvatakse hiljutised mullid ja mullid, millest loobuti."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Neid märguandeid ei saa muuta."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Seda märguannete rühma ei saa siin seadistada"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Puhvriga märguanne"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Teisalda alla vasakule"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Teisalda alla paremale"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Loobu"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Süsteemis navigeerimine on värskendatud. Muutmiseks avage jaotis Seaded."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Süsteemi navigeerimise värskendamiseks avage jaotis Seaded"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ooterežiim"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Kiirnupud"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Juhtnuppude lisamine"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Valige rakendus, kus juhtnupud lisada"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> praegust lemmikut.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> praegune lemmik.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Lisati <xliff:g id="NUMBER_1">%s</xliff:g> juhtnuppu.</item>
+ <item quantity="one">Lisati <xliff:g id="NUMBER_0">%s</xliff:g> juhtnupp.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Juhtnupud"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Valige kiirjuurdepääsuks juhtnupud"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Lemmikud"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Kõik"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Kõikide juhtelementide loendit ei saanud laadida."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Muu"</string>
</resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 8397c34..380b752 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Baimendu"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ez da onartzen USB bidezko arazketa"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Gailu honetan saioa hasita daukan erabiltzaileak ezin du aktibatu USB bidezko arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Hari gabeko arazketa onartu nahi duzu sare honetan?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Sarearen izena (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWifi-helbidea (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Onartu beti sare honetan"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Baimendu"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Ez da onartzen hari gabeko arazketa"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Gailu honetan saioa hasita daukan erabiltzaileak ezin du aktibatu hari gabeko bidezko arazketa. Eginbide hori erabiltzeko, aldatu erabiltzaile nagusira."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Desgaitu egin da USB ataka"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB ataka desgaitu egin da gailua likido edo zikinkeriengandik babesteko, eta ez du hautemango osagarririk.\n\nJakinarazpen bat jasoko duzu USB ataka berriz erabiltzeko moduan dagoenean."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB ataka gaitu da kargagailuak eta osagarriak hautemateko"</string>
@@ -83,7 +89,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Pantaila-grabagailua"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Pantailaren grabaketa-saioaren jakinarazpen jarraitua"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Grabatzen hasi nahi duzu?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Zerbait grabatzen duzun bitartean, Android sistemak atzeman egin dezake pantailan agertzen den edo gailuak erreproduzitzen duen kontuzko informazioa; besteak beste, pasahitzak, ordainketen informazioa, argazkiak, mezuak eta audioak."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Pantaila grabatzen duzun bitartean, Android sistemak detektatu egin dezake pantailan agertzen den edo gailuak erreproduzitzen duen kontuzko informazioa; besteak beste, pasahitzak, ordainketen informazioa, argazkiak, mezuak eta audioak."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Grabatu audioa"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Gailuaren audioa"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Gailuko soinuak; adibidez, musika, deiak eta tonuak"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Kudeatu"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historia"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Soinurik gabeko jakinarazpenak"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Soinua/Dar-dar egiten duten jakinarazpenak"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Elkarrizketak"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Garbitu soinurik gabeko jakinarazpen guztiak"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Ez molestatzeko moduak pausatu egin ditu jakinarazpenak"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ez du egiten soinu edo dardararik, arretarik gal ez dezazun."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Arreta erakartzen du soinua eta dardara eginda."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Eduki honetarako lasterbide gainerakor bat eskaintzen dizu, arretarik gal ez dezazun."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Ez dago azkenaldiko burbuilarik"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Azken burbuilak eta baztertutakoak agertuko dira hemen."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Jakinarazpen horiek ezin dira aldatu."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Jakinarazpen talde hau ezin da konfiguratu hemen"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxy bidezko jakinarazpena"</string>
@@ -713,7 +718,7 @@
<string name="inline_undo" msgid="9026953267645116526">"Desegin"</string>
<string name="demote" msgid="6225813324237153980">"Markatu jakinarazpen hau ez dela elkarrizketa bat"</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"Elkarrizketa garrantzitsua"</string>
- <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Ez da elkarrizketa garrantzitsu bat"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Elkarrizketa ez da garrantzitsua"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"Ezkutatuta"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Aktibatu jakinarazpenak"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"Erakutsi burbuila"</string>
@@ -788,7 +793,7 @@
<string name="clock" msgid="8978017607326790204">"Erlojua"</string>
<string name="headset" msgid="4485892374984466437">"Mikrofonodun entzungailua"</string>
<string name="accessibility_long_click_tile" msgid="210472753156768705">"Ireki ezarpenak"</string>
- <string name="accessibility_status_bar_headphones" msgid="1304082414912647414">"Aurikularrak konektatu dira"</string>
+ <string name="accessibility_status_bar_headphones" msgid="1304082414912647414">"Entzungailuak konektatu dira"</string>
<string name="accessibility_status_bar_headset" msgid="2699275863720926104">"Mikrofonodun entzungailua konektatu da"</string>
<string name="data_saver" msgid="3484013368530820763">"Datu-aurrezlea"</string>
<string name="accessibility_data_saver_on" msgid="5394743820189757731">"Aktibatuta dago datu-aurrezlea"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Eraman behealdera, ezkerretara"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Eraman behealdera, eskuinetara"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Baztertu"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Eguneratu da sistemaren nabigazioa. Aldaketak egiteko, joan Ezarpenak atalera."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistemaren nabigazioa eguneratzeko, joan Ezarpenak atalera"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Egonean"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Kontrol bizkorrak"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Gehitu kontrolatzeko aukerak"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Aukeratu zein aplikaziotatik gehitu nahi dituzun kontrolatzeko aukerak"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Une honetan, <xliff:g id="NUMBER_1">%s</xliff:g> gogoko daude.</item>
- <item quantity="one">Une honetan, <xliff:g id="NUMBER_0">%s</xliff:g> gogoko daude.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontrol-aukera gehitu dira.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontrol-aukera gehitu da.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrolatzeko aukerak"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Aukeratu sarbide bizkorra kontrolatzeko aukerak"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Gogokoak"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Guztiak"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Ezin izan da kargatu kontrol guztien zerrenda."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Beste bat"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index b50e595..c7c0336 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"اجازه دادن"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"اشکالزدایی USB مجاز نیست"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"کاربری که درحال حاضر در این دستگاه وارد سیستم شده است نمیتواند اشکالزدایی USB را روشن کند. برای استفاده از این قابلیت، به کاربر اصلی تغییر وضعیت دهید."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"اشکالزدایی بیسیم در این شبکه مجاز شود؟"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"نام شبکه (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nنشانی Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"همیشه در این شبکه مجاز شود"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"مجاز"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"اشکالزدایی بیسیم مجاز نیست"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"کاربری که درحالحاضر در این دستگاه به سیستم وارد شده است نمیتواند اشکالزدایی بیسیم را روشن کند. برای استفاده از این ویژگی، به کاربر اصلی بروید."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"درگاه USB غیرفعال شده است"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"برای محافظت از دستگاهتان دربرابر مایعات یا خاکروبه، درگاه USB غیرفعال شده است و هیچکدام از لوازم جانبی را شناسایی نخواهد کرد.\n\nهرزمان که استفاده از درگاه USB امکانپذیر باشد، به شما اطلاع داده میشود."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"درگاه USB برای تشخیص شارژرها و لوازم جانبی فعال شد"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"مدیریت"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"سابقه"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"اعلانهای بیصدا"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"اعلانهای هشدار"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"مکالمهها"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"پاک کردن همه اعلانهای بیصدا"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"اعلانها توسط «مزاحم نشوید» موقتاً متوقف شدند"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"به شما کمک میکند بدون صدا یا لرزش تمرکز کنید."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"با صدا یا لرزش توجه شما را جلب میکند."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"با میانبری شناور به این محتوا، توجهتان را جلب میکند."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"هیچ ابزارک اعلان جدیدی وجود ندارد"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ابزارکهای اعلان اخیر و ابزارکهای اعلان ردشده اینجا ظاهر خواهند شد."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"این اعلانها قابل اصلاح نیستند."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"نمیتوانید این گروه اعلانها را در اینجا پیکربندی کنید"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"اعلانهای دارای پراکسی"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"انتقال به پایین سمت راست"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"انتقال به پایین سمت چپ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"رد کردن"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"پیمایش سیستم بهروزرسانی شد. برای انجام تغییرات به «تنظیمات» بروید."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"برای بهروزرسانی پیمایش سیستم، به «تنظیمات» بروید"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"آمادهبهکار"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"کنترل های سریع"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"افزودن کنترلها"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"برنامهای را که میخواهید کنترلها را از آن اضافه کنید انتخاب کنید"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> مورد دلخواه کنونی.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> مورد دلخواه کنونی.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> کنترل اضافه شده است.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> کنترل اضافه شده است.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"کنترلها"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"کنترلهای موردنظر را برای دسترسی سریع انتخاب کنید"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"موارد دلخواه"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"همه"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"فهرست همه کنترلها را نمیتوان بارگیری کرد."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"موارد دیگر"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index c6898f0..0daab9e 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Salli"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-vianetsintää ei sallita"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Laitteelle tällä hetkellä kirjautunut käyttäjä ei voi ottaa USB-vianetsintää käyttöön. Vaihda käyttäjäksi ensisijainen käyttäjä, jotta voit käyttää tätä ominaisuutta."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Sallitaanko langaton virheenkorjaus tässä verkossa?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Verkon nimi (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi-Fin osoite (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Salli aina tässä verkossa"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Salli"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Langatonta virheenkorjausta ei sallita"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Laitteelle tällä hetkellä kirjautunut käyttäjä ei voi ottaa langatonta virheenkorjausta käyttöön. Vaihda käyttäjäksi ensisijainen käyttäjä, jotta voit käyttää tätä ominaisuutta."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-portti poistettu käytöstä"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Laitteen suojaamiseksi nesteiltä ja lialta USB-portti on poistettu käytöstä, eikä se havaitse lisävarusteita.\n\nSaat ilmoituksen, kun USB-porttia voi taas käyttää."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-portti on käytössä ja voi havaita latureita sekä lisävarusteita"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Muuta asetuksia"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historia"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Hiljaiset ilmoitukset"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Ääni-ilmoitukset"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Keskustelut"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Tyhjennä kaikki hiljaiset ilmoitukset"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Älä häiritse ‑tila keskeytti ilmoitukset"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Keskittyminen on helpompaa ilman ääntä tai värinää."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Kiinnittää huomion äänellä tai värinällä"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Kelluva sisällön pikakuvake säilyttää huomiosi"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Ei viimeaikaisia ohjekuplia"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Viimeaikaiset ja äskettäin ohitetut ohjekuplat näkyvät täällä."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Näitä ilmoituksia ei voi muokata"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tätä ilmoitusryhmää ei voi määrittää tässä"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Välitetty ilmoitus"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Siirrä vasempaan alareunaan"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Siirrä oikeaan alareunaan"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ohita"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Järjestelmän navigointitapa vaihdettu. Voit muuttaa sitä asetuksista."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Vaihda järjestelmän navigointitapaa asetuksista"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Virransäästötila"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Pikasäätimet"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Säätimien lisääminen"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Valitse sovellus, jolla säätimet lisätään"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> nykyistä suosikkia.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> nykyinen suosikki.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> säädintä lisätty</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> säädin lisätty</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Säätimet"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Valitse pikakäytön säätimet"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Suosikit"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Kaikki"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Kaikkien säätimien luetteloa ei voitu ladata."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Muu"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 9b2003f..cc9b7c23 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Autoriser"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Débogage USB non autorisé"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Autoriser le débogage sans fil sur ce réseau?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nom du réseau (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresse Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Toujours autoriser sur ce réseau"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Autoriser"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Débogage sans fil non autorisé"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage sans fil. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Le port USB a été désactivé"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Pour protéger votre appareil des liquides et des débris, le port USB est désactivé et ne pourra pas détecter les accessoires.\n\nVous verrez une notification lorsque vous pourrez utiliser le port USB à nouveau."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Le port USB a été activé afin de détecté les chargeurs et les accessoires"</string>
@@ -92,7 +98,7 @@
<string name="screenrecord_start" msgid="330991441575775004">"Démarrer"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Enregistrement de l\'écran"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Enregistrement de l\'écran et de l\'audio"</string>
- <string name="screenrecord_taps_label" msgid="1595690528298857649">"Afficher là où le doigt touche l\'écran"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"Afficher les endroits touchés à l\'écran"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"Toucher pour arrêter"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"Arrêter"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"Pause"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gérer"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historique"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notifications silencieuses"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notifications d\'alerte"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Effacer toutes les notifications silencieuses"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Les notifications sont suspendues par le mode Ne pas déranger"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Vous aider à vous concentrer, sans son ni vibration."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Attire votre attention à l\'aide de sons et de vibrations."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Garde votre attention à l\'aide d\'un raccourci flottant vers ce contenu."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Aucune bulle récente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Les bulles récentes et les bulles ignorées s\'afficheront ici."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ces notifications ne peuvent pas être modifiées"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ce groupe de notifications ne peut pas être configuré ici"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notification par mandataire"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Déplacer dans coin inf. gauche"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Déplacer dans coin inf. droit"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Fermer"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"La navigation système a été mise à jour. Pour apporter des modifications, accédez au menu Paramètres."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accédez au menu Paramètres pour mettre à jour la navigation système"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Veille"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Commandes rapides"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Ajouter des commandes"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Choisissez une application de laquelle ajouter des commandes"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> favori actuel.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoris actuels.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> commande ajoutée.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> commandes ajoutées.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Commandes"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Choisissez les commandes d\'accès rapide"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoris"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tous"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Impossible de charger la liste des commandes."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Autre"</string>
</resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 90fdcfe..26a4010 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Autoriser"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Débogage USB non autorisé"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage USB. Pour utiliser cette fonctionnalité, l\'utilisateur principal doit se connecter."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Autoriser le débogage via Wi-Fi sur ce réseau ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nom du réseau (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresse Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Toujours autoriser sur ce réseau"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Autoriser"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Débogage via Wi-Fi non autorisé"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"L\'utilisateur actuellement connecté sur cet appareil ne peut pas activer le débogage via Wi-Fi. Pour que cette fonctionnalité soit disponible, l\'utilisateur principal doit se connecter."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB désactivé"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Pour protéger votre appareil des liquides et des saletés, le port USB est désactivé et ne détecte plus les accessoires.\n\nVous recevrez une notification lorsque vous pourrez de nouveau utiliser le port USB."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB activé pour détecter les chargeurs et les accessoires"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gérer"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historique"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notifications silencieuses"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notifications sonores"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversations"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Effacer toutes les notifications silencieuses"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifications suspendues par le mode Ne pas déranger"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Sans sons ni vibrations, vous aide à vous concentrer."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Attire votre attention à l\'aide de sons ou de vibrations."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Attire votre attention à l\'aide d\'un raccourci flottant vers ce contenu."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Aucune bulle récente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Les bulles récentes et fermées s\'afficheront ici."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossible de modifier ces notifications."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Vous ne pouvez pas configurer ce groupe de notifications ici"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notification de proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Déplacer en bas à gauche"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Déplacer en bas à droite"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ignorer"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigation système mise à jour. Pour apporter des modifications, accédez aux paramètres."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accédez aux paramètres pour mettre à jour la navigation système"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Mode Veille imminent"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Commandes rapides"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Ajouter des commandes"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Sélectionnez une application depuis laquelle vous souhaitez ajouter des commandes"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> current favorites.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoris actuels.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> commandes ajoutées.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Commandes"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Sélectionnez des commandes pour pouvoir y accéder rapidement"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoris"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tout"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Impossible de charger toutes les commandes."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Autre"</string>
</resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 4e2a116..e1e8c76 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Non se permite a depuración por USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"O usuario coa sesión iniciada actualmente neste dispositivo non pode activar a depuración por USB. Para utilizar esta función, cambia ao usuario principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Queres permitir a depuración sen fíos nesta rede?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nome de rede (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nEnderezo wifi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permitir sempre nesta rede"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Non se permite a depuración sen fíos"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"O usuario coa sesión iniciada actualmente neste dispositivo non pode activar a depuración sen fíos. Para utilizar esta función, cambia ao usuario principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"O porto USB está desactivado"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para protexer o dispositivo de líquidos ou residuos, desactivouse o porto USB e non detectará ningún accesorio.\n\nRecibirás unha notificación cando o poidas utilizar de novo."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Activouse o porto USB para detectar cargadores e accesorios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Xestionar"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historial"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificacións silenciadas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificación de alerta"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversas"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Borra todas as notificacións silenciadas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"O modo Non molestar puxo en pausa as notificacións"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Axúdache a centrarte sen son nin vibración."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Chama a túa atención con son ou vibración."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantén a túa atención cun atallo flotante a este contido."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Non hai burbullas recentes"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"As burbullas recentes e rexeitadas aparecerán aquí."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Estas notificacións non se poden modificar."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Aquí non se pode configurar este grupo de notificacións"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificación mediante proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mover á parte infer. esquerda"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mover á parte inferior dereita"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ignorar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Actualizouse a navegación do sistema. Para facer cambios, vai a Configuración."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Para actualizar a navegación do sistema, vai a Configuración"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controis rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Engadir controis"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Escolle unha aplicación cuxos controis queiras engadir"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos actuais.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorito actual.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Engadíronse <xliff:g id="NUMBER_1">%s</xliff:g> controis.</item>
+ <item quantity="one">Engadiuse <xliff:g id="NUMBER_0">%s</xliff:g> control.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controis"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Escolle os controis aos que queiras acceder rapidamente"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Todo"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Non se puido cargar a lista de todos os controis."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Outra"</string>
</resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index b0f8cde..b16362b 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"મંજૂરી આપો"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ડીબગિંગની મંજૂરી નથી"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"હાલમાં આ ઉપકરણમાં સાઇન ઇન થયેલ વપરાશકર્તા USB ડિબગીંગ ચાલુ કરી શકતા નથી. આ સુવિધાનો ઉપયોગ કરવા માટે પ્રાથમિક વપરાશકર્તા પર સ્વિચ કરો."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"આ નેટવર્ક પર વાયરલેસ ડિબગીંગની મંજૂરી આપીએ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"નેટવર્કનું નામ (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nવાઇ-ફાઇ ઍડ્રેસ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"આ નેટવર્ક પર હંમેશા મંજૂરી આપો"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"મંજૂરી આપો"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"વાયરલેસ ડિબગીંગની મંજૂરી નથી"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"હાલમાં આ ડિવાઇસમાં સાઇન ઇન થયેલ વપરાશકર્તા વાયરલેસ ડિબગીંગ ચાલુ કરી શકતાં નથી. આ સુવિધાનો ઉપયોગ કરવા માટે પ્રાથમિક વપરાશકર્તા પર સ્વિચ કરો."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB પોર્ટ બંધ કરવામાં આવ્યો છે"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"પ્રવાહી અથવા ધૂળથી તમારા ડિવાઇસનું રક્ષણ કરવા માટે, USB પોર્ટ બંધ કરવામાં આવ્યો છે અને કોઈ ઍક્સેસરી શોધશે નહીં.\n\nજ્યારે ફરીથી USB પોર્ટને ઉપયોગમાં લેવાનું સુરક્ષિત હશે ત્યારે તમને નોટિફિકેશન આપવામાં આવશે."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ચાર્જર અને ઍક્સેસરીની ઓળખ માટે USB પોર્ટ ચાલુ કર્યું"</string>
@@ -80,31 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"ફરીથી સ્ક્રીનશૉટ લેવાનો પ્રયાસ કરો"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"મર્યાદિત સ્ટોરેજ સ્પેસને કારણે સ્ક્રીનશૉટ સાચવી શકાતો નથી"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"ઍપ્લિકેશન કે તમારી સંસ્થા દ્વારા સ્ક્રીનશૉટ લેવાની મંજૂરી નથી"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"સ્ક્રીન રેકૉર્ડર"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"સ્ક્રીન રેકોર્ડિંગ સત્ર માટે ચાલુ નોટિફિકેશન"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"રેકૉર્ડિંગ શરૂ કરીએ?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"રેકૉર્ડ કરતી વખતે, Android System તમારી સ્ક્રીન પર દેખાતી હોય અથવા તમારા ડિવાઇસ પર ચલાવવામાં આવતી હોય તેવી કોઈપણ સંવેદનશીલ માહિતીને કૅપ્ચર કરી શકે છે. આમાં પાસવર્ડ, ચુકવણીની માહિતી, ફોટા, સંદેશા અને ઑડિયોનો સમાવેશ થાય છે."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"ઑડિયો રેકૉર્ડ કરો"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"ડિવાઇસનો ઑડિયો"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"મ્યુઝિક, કૉલ અને રિંગટોન જેવા તમારા ડિવાઇસના સાઉન્ડ"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"માઇક્રોફોન"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"ડિવાઇસનો ઑડિયો અને માઇક્રોફોન"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"શરૂ કરો"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"સ્ક્રીનને રેકૉર્ડ કરી રહ્યાં છીએ"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"સ્ક્રીન અને ઑડિયોને રેકૉર્ડ કરી રહ્યાં છીએ"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"સ્ક્રીન પર ટચ બતાવો"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"રોકવા માટે ટૅપ કરો"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"રોકો"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"થોભાવો"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"સ્ક્રીન રેકોર્ડિંગ ડિલીટ કર્યું"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"સ્ક્રીન રેકોર્ડિંગ ડિલીટ કરવામાં ભૂલ આવી"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"પરવાનગીઓ મેળવવામાં નિષ્ફળ રહ્યાં"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"સ્ક્રીનને રેકૉર્ડ કરવાનું શરૂ કરવામાં ભૂલ"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB ફાઇલ ટ્રાન્સફર વિકલ્પો"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"મીડિયા પ્લેયર તરીકે માઉન્ટ કરો (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"કૅમેરા તરીકે માઉન્ટ કરો (PTP)"</string>
@@ -499,9 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"ફરીથી બતાવશો નહીં"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"બધુ સાફ કરો"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"મેનેજ કરો"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"ઇતિહાસ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"સાઇલન્ટ નોટિફિકેશન"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"નોટિફિકેશન બદલી રહ્યાં છીએ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"વાતચીત"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"બધા સાઇલન્ટ નોટિફિકેશન સાફ કરો"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"ખલેલ પાડશો નહીં દ્વારા થોભાવેલ નોટિફિકેશન"</string>
@@ -700,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"તમને સાઉન્ડ અથવા વાઇબ્રેશન વિના ફોકસ કરવામાં સહાય કરે છે."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"સાઉન્ડ અથવા વાઇબ્રેશન વિના તમારું ધ્યાન દોરે છે."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ફ્લોટિંગ શૉર્ટકટથી આ કન્ટેન્ટ પર તમારું ધ્યાન દોરી રાખે છે."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"તાજેતરના કોઈ બબલ નથી"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"એકદમ નવા બબલ અને છોડી દીધેલા બબલ અહીં દેખાશે."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"આ નોટિફિકેશનમાં કોઈ ફેરફાર થઈ શકશે નહીં."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"નોટિફિકેશનના આ ગ્રૂપની ગોઠવણી અહીં કરી શકાશે નહીં"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"પ્રૉક્સી નોટિફિકેશન"</string>
@@ -726,25 +717,18 @@
<string name="notification_done" msgid="6215117625922713976">"થઈ ગયું"</string>
<string name="inline_undo" msgid="9026953267645116526">"રદ કરો"</string>
<string name="demote" msgid="6225813324237153980">"આ નોટિફિકેશન વાતચીત ન હોવા તરીકે માર્ક કરો"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"મહત્ત્વપૂર્ણ વાતચીત"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"મહત્ત્વપૂર્ણ વાતચીત નથી"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"શાંત કરી"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"અલર્ટ કરીએ છીએ"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"બબલ બતાવો"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"બબલ કાઢી નાખો"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"હોમ સ્ક્રીન પર ઉમેરો"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"સૂચના નિયંત્રણો"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"સૂચના સ્નૂઝ કરવાના વિકલ્પો"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"મને યાદ કરાવો"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"સેટિંગ"</string>
<string name="snooze_undo" msgid="60890935148417175">"પૂર્વવત્ કરો"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> માટે સ્નૂઝ કરો"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +800,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"ડેટા સેવર બંધ છે"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"ચાલુ"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"બંધ"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"ઉપલબ્ધ નથી"</string>
<string name="nav_bar" msgid="4642708685386136807">"નેવિગેશન બાર"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"લેઆઉટ"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"અતિરિક્ત ડાબો બટન પ્રકાર"</string>
@@ -996,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"નીચે ડાબે ખસેડો"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"નીચે જમણે ખસેડો"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"છોડી દો"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"સિસ્ટમ નૅવિગેશન અપડેટ કર્યું. ફેરફારો કરવા માટે, સેટિંગ પર જાઓ."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"સિસ્ટમ નૅવિગેશનને અપડેટ કરવા માટે સેટિંગ પર જાઓ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"સ્ટૅન્ડબાય"</string>
@@ -1005,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ઝડપી નિયંત્રણો"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"નિયંત્રણો ઉમેરો"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"જેમાંથી નિયંત્રણો ઉમેરવા હોય તે ઍપ પસંદ કરો"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">હાલમાં <xliff:g id="NUMBER_1">%s</xliff:g> મનપસંદ.</item>
- <item quantity="other">હાલમાં <xliff:g id="NUMBER_1">%s</xliff:g> મનપસંદ.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"નિયંત્રણો"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ઝડપી ઍક્સેસ માટેનાં નિયંત્રણો પસંદ કરો"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"મનપસંદ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"તમામ"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"બધા નિયંત્રણોની સૂચિ લોડ કરી શકાઈ નથી."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index c3b5528..3cb4c6f 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"अनुमति दें"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB डीबगिंग की अनुमति नहीं है"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन किया है, वो USB डीबगिंग चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, प्राथमिक उपयोगकर्ता में बदलें."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"क्या आप इस नेटवर्क पर वायरलेस तरीके से डीबग करने की सुविधा के इस्तेमाल की अनुमति देना चाहते हैं?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"नेटवर्क का नाम (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nवाई-फ़ाई का पता (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"इस नेटवर्क पर हमेशा अनुमति दें"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"अनुमति दें"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"वायरलेस तरीके से डीबग करने की सुविधा चालू करने की अनुमति नहीं है"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"अभी इस डिवाइस में जिस उपयोगकर्ता ने साइन इन कर रखा है वह वायरलेस तरीके से डीबग करने की सुविधा चालू नहीं कर सकता. इस सुविधा का इस्तेमाल करने के लिए, मुख्य उपयोगकर्ता के तौर पर साइन इन करें."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"यूएसबी पोर्ट बंद है"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"तरल चीज़ या कचरे से आपके डिवाइस की सुरक्षा करने के लिए, यूएसबी पोर्ट को बंद कर दिया गया है. साथ ही, इससे किसी भी एक्सेसरी की पहचान नहीं की जा सकेगी.\n\nयूएसबी पोर्ट का दोबारा इस्तेमाल करना सुरक्षित होने पर आपको सूचित किया जाएगा."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"चार्जर और एक्सेसरी पहचानने के लिए यूएसबी पोर्ट को चालू कर दिया गया है"</string>
@@ -80,31 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"स्क्रीनशॉट दोबारा लेने की कोशिश करें"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"मेमोरी कम होने की वजह से स्क्रीनशॉट सेव नहीं किया जा सका"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"ऐप्लिकेशन या आपका संगठन स्क्रीनशॉट लेने की अनुमति नहीं देता"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"स्क्रीन रिकॉर्डर"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रिकॉर्ड सेशन के लिए जारी सूचना"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"रिकॉर्डिंग शुरू करना चाहते हैं?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"रिकॉर्ड करते समय, Android सिस्टम आपकी स्क्रीन पर दिखने वाली या चलाई जाने वाली संवेदनशील जानकारी को कैप्चर कर सकता है. इसमें पासवर्ड, पैसे चुकाने से जुड़ी जानकारी, फ़ोटो, मैसेज, और ऑडियो शामिल हैं."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"ऑडियो रिकॉर्ड करें"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"डिवाइस ऑडियो"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"आपके डिवाइस से आने वाली आवाज़. जैसे कि संगीत, कॉल, और रिंगटोन"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"माइक्रोफ़ोन"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"डिवाइस ऑडियो और माइक्रोफ़ोन"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"शुरू करें"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"स्क्रीन को रिकॉर्ड किया जा रहा है"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"स्क्रीन और ऑडियो, दोनों रिकॉर्ड हो रहे हैं"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"स्क्रीन को कहां छुआ गया, ये दिखाएं"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"रोकने के लिए टैप करें"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"रोकें"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"रोकें"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"स्क्रीन रिकॉर्डिंग मिटा दी गई"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"स्क्रीन रिकॉर्डिंग मिटाने में गड़बड़ी हुई"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"मंज़ूरी नहीं मिल सकी"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रीन को रिकॉर्ड करने में गड़बड़ी आ रही है"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB फ़ाइल स्थानांतरण विकल्प"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"मीडिया प्लेयर के रूप में माउंट करें (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"कैमरे के रूप में माउंट करें (PTP)"</string>
@@ -499,9 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"फिर से न दिखाएं"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"सभी को हटाएं"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"प्रबंधित करें"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"इतिहास"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"बिना आवाज़ या वाइब्रेशन वाली सूचनाएं"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"आवाज़ या वाइब्रेशन वाली सूचनाएं"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"बातचीत"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"बिना आवाज़ की सभी सूचनाएं हटाएं"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'परेशान न करें\' सुविधा के ज़रिए कुछ समय के लिए सूचनाएं दिखाना रोक दिया गया है"</string>
@@ -700,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"आवाज़ या वाइब्रेशन न होने की वजह से आप काम में ध्यान लगा पाते हैं."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"आवाज़ या वाइब्रेशन होने की वजह से आपका ध्यान सूचनाओं पर जाता है."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"फ़्लोट करने वाले शॉर्टकट की मदद से इस सामग्री पर आपका ध्यान बना रहता है."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"हाल ही के बबल्स मौजूद नहीं हैं"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"हाल ही के बबल्स और हटाए गए बबल्स यहां दिखेंगे."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ये सूचनाएं नहीं बदली जा सकती हैं."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"सूचनाओं के इस समूह को यहां कॉन्फ़िगर नहीं किया जा सकता"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"प्रॉक्सी सूचना"</string>
@@ -726,25 +717,18 @@
<string name="notification_done" msgid="6215117625922713976">"हो गया"</string>
<string name="inline_undo" msgid="9026953267645116526">"पहले जैसा करें"</string>
<string name="demote" msgid="6225813324237153980">"इस सूचना को \'बातचीत नहीं\' के रूप में मार्क करें"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"अहम बातचीत"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"अहम बातचीत नहीं है"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"आवाज़ और वाइब्रेशन बंद किया गया"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"आवाज़ या वाइब्रेशन चालू करें"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"बबल दिखाएं"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"बबल हटाएं"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"होम स्क्रीन पर जोड़ें"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"सूचना नियंत्रण"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"सूचना को स्नूज़ (थोड़ी देर के लिए चुप करना) करने के विकल्प"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"बाद में याद दिलाएं"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"सेटिंग"</string>
<string name="snooze_undo" msgid="60890935148417175">"पहले जैसा करें"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> के लिए याद दिलाया गया"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +800,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"डेटा बचाने की सेटिंग बंद है"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"चालू"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"बंद"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"उपलब्ध नहीं है"</string>
<string name="nav_bar" msgid="4642708685386136807">"नेविगेशन बार"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"लेआउट"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"कुछ और बाएं बटन के प्रकार"</string>
@@ -996,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"बाईं ओर सबसे नीचे ले जाएं"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"सबसे नीचे दाईं ओर ले जाएं"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"खारिज करें"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेविगेशन अपडेट हो गया. बदलाव करने के लिए \'सेटिंग\' पर जाएं."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेविगेशन अपडेट करने के लिए \'सेटिंग\' में जाएं"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टैंडबाई"</string>
@@ -1005,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"फटाफट नियंत्रण"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"कंट्राेल जोड़ें"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"वह ऐप्लिकेशन चुनें जिससे आप कंट्राेल जोड़ना चाहते हैं"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">फ़िलहाल, <xliff:g id="NUMBER_1">%s</xliff:g> कंट्राेल पसंदीदा है.</item>
- <item quantity="other">फ़िलहाल, <xliff:g id="NUMBER_1">%s</xliff:g> कंट्राेल पसंदीदा हैं.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"कंट्राेल"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"झटपट ऐक्सेस पाने के लिए कंट्राेल चुनें"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"पसंदीदा"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"सभी"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"सभी कंट्रोल की सूची लोड नहीं हो सकी."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 161c1ad..d648aeb 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Dopusti"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Otklanjanje pogrešaka putem USB-a nije dopušteno"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Korisnik koji je trenutačno prijavljen na ovaj uređaj ne može uključiti otklanjanje pogrešaka putem USB-a. Da biste upotrebljavali tu značajku, prijeđite na primarnog korisnika."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Želite li dopustiti bežično otklanjanje pogrešaka na ovoj mreži?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Naziv mreže (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa Wi‑Fija (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Uvijek dopusti na ovoj mreži"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Dopusti"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bežično otklanjanje pogrešaka nije dopušteno"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Korisnik koji je trenutačno prijavljen na ovaj uređaj ne može uključiti bežično otklanjanje pogrešaka. Da biste upotrebljavali tu značajku, prijeđite na primarnog korisnika."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Onemogućen je USB priključak"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Radi zaštite uređaja od tekućine ili prljavštine USB priključak onemogućen je i neće otkrivati pribor.\n\nPrimit ćete obavijest kad upotreba USB priključka ponovo bude sigurna."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB priključak omogućen za otkrivanje punjača i opreme"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Upravljajte"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Povijest"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Bešumne obavijesti"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Upozoravajuće obavijesti"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Razgovori"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Izbriši sve bešumne obavijesti"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Značajka Ne uznemiravaj pauzirala je Obavijesti"</string>
@@ -689,10 +696,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomaže vam da se usredotočite bez zvučnih signala i vibracija."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Privlači vašu pažnju zvučnim signalima ili vibracijama."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Održava vam pozornost pomoću plutajućeg prečaca ovom sadržaju."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nema nedavnih oblačića"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Ovdje će se prikazivati nedavni i odbačeni oblačići."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Te se obavijesti ne mogu izmijeniti."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ta se grupa obavijesti ne može konfigurirati ovdje"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Obavijest poslana putem proxyja"</string>
@@ -979,6 +984,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Premjesti u donji lijevi kut"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Premjestite u donji desni kut"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Odbaci"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Ažurirana je navigacija sustavom. Možete je promijeniti u Postavkama."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Navigaciju sustavom možete ažurirati u Postavkama"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string>
@@ -988,17 +999,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Dodavanje kontrola"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Odaberite aplikaciju putem koje želite dodati kontrole"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">Trenutačno <xliff:g id="NUMBER_1">%s</xliff:g> omiljena.</item>
- <item quantity="few">Trenutačno <xliff:g id="NUMBER_1">%s</xliff:g> omiljene.</item>
- <item quantity="other">Trenutačno <xliff:g id="NUMBER_1">%s</xliff:g> omiljenih.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Dodana je <xliff:g id="NUMBER_1">%s</xliff:g> kontrola.</item>
+ <item quantity="few">Dodane su <xliff:g id="NUMBER_1">%s</xliff:g> kontrole.</item>
+ <item quantity="other">Dodano je <xliff:g id="NUMBER_1">%s</xliff:g> kontrola.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrole"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Odaberite kontrole za brzi pristup"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoriti"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Sve"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Popis svih kontrola nije se učitao."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Drugo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index 21b383c..03151ae 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Engedélyezés"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Az USB hibakeresése nem engedélyezett"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Az eszközre jelenleg bejelentkezett felhasználó nem engedélyezheti az USB-hibakeresést. A funkció használatához váltson az elsődleges felhasználóra."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Engedélyezi a vezeték nélküli hibakeresést ezen a hálózaton?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Hálózat neve (SSID):\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-cím (BSSID):\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Mindig engedélyezze ezen a hálózaton"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Engedélyezés"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"A vezeték nélküli hibakeresés nem engedélyezett"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Az eszközre jelenleg bejelentkezett felhasználó nem engedélyezheti a vezeték nélküli hibakeresést. A funkció használatához váltson az elsődleges felhasználóra."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-port letiltva"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Az eszköz folyadéktól és szennyeződésektől való megóvása érdekében az USB-portot letiltottuk, így az nem észleli a kiegészítőket.\n\nÉrtesítést küldünk, amikor ismét rendben használhatja az USB-portot."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Az USB-csatlakozó számára engedélyezve van a töltők és más tartozékok észlelése"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Kezelés"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Előzmények"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Néma értesítések"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Figyelemfelkeltő értesítések"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Beszélgetések"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Az összes néma értesítés törlése"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Ne zavarjanak funkcióval szüneteltetett értesítések"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Hangjelzés és rezgés nélkül segít a koncentrálásban."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Figyelemfelkeltő a hangjelzésnek és rezgésnek köszönhetően."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"A tartalomra mutató lebegő parancsikon segítségével tartja fenn az Ön figyelmét."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nincsenek buborékok a közelmúltból"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"A legutóbbi és az elvetett buborékok itt jelennek majd meg."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ezeket az értesítéseket nem lehet módosítani."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Az értesítések jelen csoportját itt nem lehet beállítani"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Továbbított értesítés"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Áthelyezés le és balra"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Áthelyezés le és jobbra"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Elvetés"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"A rendszer-navigáció módja megváltozott. Módosításához nyissa meg a Beállításokat."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"A rendszer-navigációs lehetőségeket a Beállításokban módosíthatja"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Készenléti mód"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Gyorsvezérlők"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Vezérlők hozzáadása"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Alkalmazás kiválasztása, amelyről vezérlőket adhat hozzá"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> jelenlegi kedvenc.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> jelenlegi kedvenc.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> vezérlő hozzáadva.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> vezérlő hozzáadva.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Vezérlők"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Vezérlők kiválasztása a gyors hozzáféréshez"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Kedvencek"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Összes"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Nem sikerült betölteni az összes vezérlő listáját."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Más"</string>
</resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index e5d85a5..d8728f5 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Թույլատրել"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-ով վրիպազերծումը թույլատրված չէ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Ընթացիկ հաշվի միջոցով չեք կարող միացնել USB-ով վրիպազերծումը: Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշիվ:"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Թույլատրե՞լ անլար վրիպազերծումն այս ցանցում"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Ցանցի անվանումը (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-ի հասցեն (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Միշտ թույլատրել այս ցանցում"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Թույլատրել"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Անլար վրիպազերծումը թույլատրված չէ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Դուք չեք կարող միացնել անլար վրիպազերծումը ընթացիկ հաշվի միջոցով։ Այս գործառույթը միացնելու համար մուտք գործեք հիմնական օգտատիրոջ հաշիվ։"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB միացքն անջատված է"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB միացքն անջատվել է, որպեսզի ձեր սարքը չթրջվի կամ չաղտոտվի: Այժմ USB միացքի միջոցով հնարավոր չէ միացնել այլ սարքեր:\n\nԴուք ծանուցում կստանաք, երբ այն նորից անվտանգ լինի օգտագործել:"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB միացքը միացվել է՝ լիցքավորիչներն ու լրասարքերը հայտնաբերելու համար"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Կառավարել"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Պատմություն"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Անձայն ծանուցումներ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Նախազգուշացնող ծանուցումներ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Խոսակցություններ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Ջնջել բոլոր անձայն ծանուցումները"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Ծանուցումները չեն ցուցադրվի «Չանհանգստացնել» ռեժիմում"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Ծանուցումները գալիս են ձայնով կամ թրթռոցով։"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Լողացող դյուրանցման միջոցով ձեր ուշադրությունն է գրավում բովանդակության նկատմամբ"</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Վերջին ամպիկներ չկան"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Այստեղ կցուցադրվեն վերջերս փակված ամպիկները, որոնք կկարողանաք հեշտությամբ վերաբացել։"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Այստեղ կցուցադրվեն վերջերս օգտագործված և փակված ամպիկները, որոնք կկարողանաք հեշտությամբ վերաբացել։"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Այս ծանուցումները չեն կարող փոփոխվել:"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ծանուցումների տվյալ խումբը հնարավոր չէ կարգավորել այստեղ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Ծանուցումն ուղարկվել է պրոքսի սերվերի միջոցով"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Տեղափոխել ներքև՝ ձախ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Տեղափոխել ներքև՝ աջ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Փակել"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Ցուցադրել զրույցները առջևում"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի նոր զրույցները կհայտնվեն ամպիկների տեսքով։ Հպեք ամպիկին՝ այն բացելու համար։ Քաշեք՝ այն տեղափոխելու համար։\n\nՀպեք ամպիկին"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Հպեք «Կառավարել» կոճակին՝ այս հավելվածի ամպիկներն անջատելու համար։"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Համակարգի նավիգացիան թարմացվեց: Փոփոխություններ անելու համար անցեք կարգավորումներ:"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Թարմացրեք համակարգի նավիգացիան կարգավորումներում"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Սպասման ռեժիմ"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Արագ կառավարման տարրեր"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Ավելացրեք կառավարման տարրեր"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Ընտրեք հավելված, որից կավելացվեն կառավարման տարրերը։"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">Ընտրանու <xliff:g id="NUMBER_1">%s</xliff:g> տարր։</item>
- <item quantity="other">Ընտրանու <xliff:g id="NUMBER_1">%s</xliff:g> տարր։</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Ավելացվեց կառավարման <xliff:g id="NUMBER_1">%s</xliff:g> տարր։</item>
+ <item quantity="other">Ավելացվեց կառավարման <xliff:g id="NUMBER_1">%s</xliff:g> տարր։</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Կառավարման տարրեր"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Ընտրեք կառավարման տարրեր՝ արագ մուտքի համար"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Ընտրանի"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Բոլորը"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Չհաջողվեց բեռնել բոլոր կառավարների ցանկը։"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Այլ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 801b70c..012a16e 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Izinkan"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Debug USB tidak diizinkan"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Pengguna yang sedang login ke perangkat ini tidak dapat mengaktifkan proses debug USB. Beralihlah ke pengguna utama untuk menggunakan fitur ini."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Izinkan proses debug nirkabel di perangkat ini?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nama Jaringan (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAlamat Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Selalu izinkan di jaringan ini"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Izinkan"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Proses debug nirkabel tidak diizinkan"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Pengguna yang sedang login ke perangkat ini tidak dapat mengaktifkan proses debug nirkabel. Beralihlah ke pengguna utama untuk menggunakan fitur ini."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB dinonaktifkan"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Untuk melindungi perangkat dari cairan atau kotoran, port USB dinonaktifkan dan tidak akan mendeteksi aksesori apa pun.\n\nAnda akan diberi tahu jika port USB sudah dapat digunakan kembali."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB diaktifkan untuk mendeteksi pengisi daya dan aksesori"</string>
@@ -83,7 +89,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Perekam Layar"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifikasi yang sedang berjalan untuk sesi rekaman layar"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Mulai Merekam?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Saat merekam, Sistem Android dapat mengambil informasi sensitif yang terlihat di layar atau diputar di perangkat Anda. Informasi ini mencakup sandi, info pembayaran, foto, pesan, dan audio."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Saat merekam, Sistem Android dapat ikut merekam informasi sensitif yang terlihat di layar atau diputar di perangkat Anda. Informasi ini mencakup sandi, info pembayaran, foto, pesan, dan audio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Rekam audio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio perangkat"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Suara dari perangkat Anda, seperti musik, panggilan, dan nada dering"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Kelola"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Histori"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notifikasi senyap"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notifikasi aktif"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Percakapan"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Hapus semua notifikasi senyap"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifikasi dijeda oleh mode Jangan Ganggu"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Menarik perhatian Anda dengan suara atau getaran."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Menjaga perhatian dengan pintasan floating ke konten ini."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Tidak ada balon baru-baru ini"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Balon yang baru-baru ini ditutup akan muncul di sini agar mudah diambil."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Balon baru-baru ini dan balon yang ditutup akan muncul di sini."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Notifikasi ini tidak dapat diubah."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Grup notifikasi ini tidak dapat dikonfigurasi di sini"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notifikasi proxy"</string>
@@ -972,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Pindahkan ke kiri bawah"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Pindahkan ke kanan bawah"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Tutup"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"Tampilkan chat di depan"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"Chat baru dari <xliff:g id="APP_NAME">%1$s</xliff:g> akan muncul sebagai balon. Ketuk balon untuk membukanya. Tarik untuk memindahkannya.\n\nKetuk balon"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"Ketuk Kelola untuk menonaktifkan balon dari aplikasi ini"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigasi sistem diupdate. Untuk melakukan perubahan, buka Setelan."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Buka Setelan untuk mengupdate navigasi sistem"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Siaga"</string>
@@ -981,13 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Kontrol Cepat"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Tambahkan Kontrol"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Pilih aplikasi yang digunakan untuk menambahkan kontrol"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favorit saat ini.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorit saat ini.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontrol ditambahkan.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontrol ditambahkan.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrol"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Pilih kontrol untuk akses cepat"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favorit"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Semua"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Daftar semua kontrol tidak dapat dimuat."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Lainnya"</string>
</resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 4ec778e..7542e3e 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Leyfa"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-villuleit ekki leyfð"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Notandinn sem er skráður inn í þetta tæki núna getur ekki kveikt á USB-villuleit. Til þess að nota þennan eiginleika skaltu skipta yfir í aðalnotandann."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Viltu leyfa þráðlausa villuleit á þessu neti?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Heiti netkerfis (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi vistfang (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Leyfa alltaf á þessu neti"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Leyfa"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Þráðlaus villuleit er ekki leyfð"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Notandinn sem er skráður inn í þetta tæki núna getur ekki kveikt á þráðlausri villuleit. Til að nota þennan eiginleika þarf að skipta yfir í aðalnotanda."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-tengi gert óvirkt"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Til að vernda tækið fyrir vökva og óhreinindum er USB-tengið óvirkt og mun ekki greina aukabúnað.\n\nÞú færð tilkynningu þegar öruggt er að nota USB-tengið aftur."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Kveikt var á USB-tengi til að greina hleðslutæki og aukabúnað"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Stjórna"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Ferill"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Þöglar tilkynningar"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Viðvörunartilkynningar"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Samtöl"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Hreinsa allar þöglar tilkynningar"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Hlé gert á tilkynningum þar sem stillt er á „Ónáðið ekki“"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Auðveldar þér að einbeita þér án hljóðs eða titrings."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Fangar athygli þína með hljóði eða titringi."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Fangar athygli þína með fljótandi flýtileið á þetta efni."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Engar nýlegar blöðrur"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Nýlegar blöðrur og blöðrur sem þú hefur hunsað birtast hér."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ekki er hægt að breyta þessum tilkynningum."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ekki er hægt að stilla þessar tilkynningar hér"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Staðgengilstilkynning"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Færa neðst til vinstri"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Færðu neðst til hægri"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Hunsa"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Kerfisstjórnun uppfærð. Þú getur breytt þessu í stillingunum."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Farðu í stillingar til að uppfæra kerfisstjórnun"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Biðstaða"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Flýtistýringar"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Bæta við stýringum"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Veldu forrit sem bæta á við stýringum frá"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> núverandi eftirlæti.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> núverandi eftirlæti.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> stýringu bætt við.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> stýringum bætt við.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Stýringar"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Veldu stýringar fyrir skjótan aðgang"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Uppáhald"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Allt"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Ekki tókst að hlaða lista yfir allar stýringar."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Annað"</string>
</resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 4d1db3a..65dc514 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Consenti"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Debug USB non consentito"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"L\'utente che ha eseguito l\'accesso a questo dispositivo non può attivare il debug USB. Per utilizzare questa funzione, passa all\'utente principale."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Consentire debug wireless su questa rete?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nome della rete (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nIndirizzo Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Consenti sempre su questa rete"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Consenti"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Debug wireless non consentito"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"L\'utente che ha eseguito l\'accesso a questo dispositivo non può attivare il debug wireless. Per utilizzare questa funzionalità, passa all\'utente principale."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Porta USB disattivata"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Per proteggere il dispositivo da liquidi o detriti, la porta USB è stata disattivata e non rileverà gli accessori.\n\nTi avviseremo quando sarà di nuovo possibile utilizzarla."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Porta USB attivata per rilevare caricabatterie e accessori"</string>
@@ -83,13 +89,13 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Screen Recorder"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Notifica costante per una sessione di registrazione dello schermo"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Avviare la registrazione?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Durante la registrazione, il sistema Android può catturare dati sensibili visibili sul tuo schermo o riprodotti durante la riproduzione sul tuo dispositivo. Sono incluse password, dettagli sui pagamenti, foto, messaggi e audio."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Durante la registrazione, il sistema Android può catturare dati sensibili visibili sullo schermo o riprodotti sul tuo dispositivo. Sono incluse password, dati di pagamento, foto, messaggi e audio."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Registra audio"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Audio del dispositivo"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Suoni del dispositivo, come musica, chiamate e suonerie"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Microfono"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Audio del dispositivo e microfono"</string>
- <string name="screenrecord_start" msgid="330991441575775004">"Inizia"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"Avvia"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Registrazione schermo"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Registrazione schermo e audio"</string>
<string name="screenrecord_taps_label" msgid="1595690528298857649">"Mostra tocchi sullo schermo"</string>
@@ -486,8 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"Non mostrare più"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"Cancella tutto"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"Gestisci"</string>
- <string name="manage_notifications_history_text" msgid="57055985396576230">"Storia"</string>
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"Cronologia"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notifiche silenziose"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notifiche di avviso"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversazioni"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Cancella tutte le notifiche silenziose"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notifiche messe in pausa in base alla modalità Non disturbare"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Favorisce la tua concentrazione grazie all\'assenza di suono o vibrazione."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Richiama la tua attenzione con suono o vibrazione."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantiene la tua attenzione con una scorciatoia mobile a questi contenuti."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nessuna bolla recente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Le bolle recenti e ignorate verranno visualizzate qui."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Impossibile modificare queste notifiche."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Qui non è possibile configurare questo gruppo di notifiche"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notifica inviata al proxy"</string>
@@ -714,7 +719,7 @@
<string name="demote" msgid="6225813324237153980">"Contrassegna questa notifica come \"non è una conversazione\""</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"Conversazione importante"</string>
<string name="notification_conversation_unfavorite" msgid="181383708304763807">"Non è una conversazione importante"</string>
- <string name="notification_conversation_mute" msgid="268951550222925548">"Senza audio"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"Silenziata"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Avvisi"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"Mostra fumetto"</string>
<string name="notification_conversation_unbubble" msgid="6908427185031099868">"Rimuovi fumetti"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Sposta in basso a sinistra"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Sposta in basso a destra"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ignora"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigazione del sistema aggiornata. Per apportare modifiche, usa le Impostazioni."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Usa le Impostazioni per aggiornare la navigazione del sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controlli rapidi"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Aggiungi controlli"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Scegli un\'app da cui aggiungere controlli"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> preferiti attuali.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> preferito attuale.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controlli aggiunti.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> controllo aggiunto.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controlli"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Scegli i controlli per l\'accesso rapido"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Preferiti"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tutti"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Impossibile caricare l\'elenco di tutti i controlli."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Altro"</string>
</resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 5d48af3..2a9d596 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"יש אישור"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"לא ניתן לבצע ניפוי באגים ב-USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"למשתמש המחובר לחשבון במכשיר הזה אין אפשרות להפעיל ניפוי באגים ב-USB. כדי להשתמש בתכונה הזו יש לעבור אל המשתמש הראשי."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"לאשר ניפוי באגים אלחוטי ברשת הזו?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"שם הרשת (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nכתובת Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"אפשר תמיד ברשת זו"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"אישור"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"אין הרשאה לניפוי באגים אלחוטי"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"למשתמש המחובר לחשבון במכשיר הזה אין אפשרות להפעיל ניפוי באגים אלחוטי. כדי להשתמש בתכונה הזו, יש לעבור אל המשתמש הראשי."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"יציאת ה-USB מושבתת"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"כדי להגן על המכשיר שלך מנוזלים או חלקיקים, יציאת ה-USB מושבתת ולא מזהה אביזרים כלל.\n\nתתקבל התראה כשניתן יהיה להשתמש ביציאת ה-USB."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"יציאת USB הופעלה לזיהוי מטענים ואביזרים"</string>
@@ -80,19 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"יש לנסות שוב לבצע צילום מסך"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"לא היה מספיק מקום לשמור את צילום המסך"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"האפליקציה או הארגון שלך אינם מתירים ליצור צילומי מסך"</string>
- <string name="screenrecord_name" msgid="2596401223859996572">"מכשיר הקלטה של המסך"</string>
+ <string name="screenrecord_name" msgid="2596401223859996572">"מקליט מסך"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"התראה מתמשכת לסשן הקלטת מסך"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"להתחיל את ההקלטה?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"בזמן ההקלטה, מערכת Android יכולה לתעד מידע רגיש שגלוי במסך או מופעל במכשיר שלך. זה כולל סיסמאות, פרטי תשלום, תמונות, הודעות ואודיו."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"בזמן ההקלטה, מערכת Android יכולה לתעד מידע רגיש שגלוי במסך או מופעל במכשיר שלך. מידע זה כולל סיסמאות, פרטי תשלום, תמונות, הודעות ואודיו."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"הקלטת אודיו"</string>
- <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"אודיו של המכשיר"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"אודיו מהמכשיר"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"צלילים מהמכשיר, כמו מוזיקה, שיחות ורינגטונים"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"מיקרופון"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"מיקרופון ואודיו של המכשיר"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"מיקרופון ואודיו מהמכשיר"</string>
<string name="screenrecord_start" msgid="330991441575775004">"התחלה"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"מתבצעת הקלטה של המסך"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"מתבצעת הקלטה של המסך והאודיו"</string>
- <string name="screenrecord_taps_label" msgid="1595690528298857649">"הצגת המיקומים של מגע במסך"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"הצגת מיקומים של נגיעות במסך"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"אפשר להקיש כדי להפסיק"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"עצירה"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"השהיה"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ניהול"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"היסטוריה"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"התראות שקטות"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"התראות עם צלילים או רטט"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"שיחות"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ניקוי כל ההתראות השקטות"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"התראות הושהו על ידי מצב \'נא לא להפריע\'"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"עוזרת להתרכז ללא צלילים או רטט."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"מעוררת תשומת לב באמצעות צלילים או רטט."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"מעוררת תשומת לב באמצעות קיצור דרך צף לתוכן הזה."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"אין בועות מהזמן האחרון"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"בועות אחרונות ובועות שנסגרו יופיעו כאן."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"לא ניתן לשנות את ההתראות האלה."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"לא ניתן להגדיר כאן את קבוצת ההתראות הזו"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"התראה דרך שרת proxy"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"העברה לפינה השמאלית התחתונה"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"העברה לפינה הימנית התחתונה"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"סגירה"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"הניווט במערכת עודכן. אפשר לערוך שינויים דרך ההגדרות."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"יש לעבור להגדרות כדי לעדכן את הניווט במערכת"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"המתנה"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"פקדים מהירים"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"הוספת פקדים"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"יש לבחור אפליקציות שמהן יתווספו פקדים"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="two"><xliff:g id="NUMBER_1">%s</xliff:g> מועדפים בשלב זה.</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> מועדפים בשלב זה.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> מועדפים בשלב זה.</item>
- <item quantity="one">מועדף אחד (<xliff:g id="NUMBER_0">%s</xliff:g>) בשלב זה.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="two">נוספו <xliff:g id="NUMBER_1">%s</xliff:g> פקדים.</item>
+ <item quantity="many">נוספו <xliff:g id="NUMBER_1">%s</xliff:g> פקדים.</item>
+ <item quantity="other">נוספו <xliff:g id="NUMBER_1">%s</xliff:g> פקדים.</item>
+ <item quantity="one">נוסף פקד אחד (<xliff:g id="NUMBER_0">%s</xliff:g>).</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"פקדים"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"יש לבחור פקדים לגישה מהירה"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"מועדפים"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"הכול"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"לא ניתן היה לטעון את הרשימה של כל הפקדים."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"אחר"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index b2059ef..b4952ff 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"許可"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USBデバッグは許可されていません"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"このデバイスに現在ログインしているユーザーでは、USB デバッグを ON にすることはできません。この機能を使用するには、メインユーザーに切り替えてください。"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"このネットワークでワイヤレス デバッグを許可しますか?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ネットワーク名(SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi アドレス(BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"このネットワークで常に許可する"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"許可"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ワイヤレス デバッグは許可されていません"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"このデバイスに現在ログインしているユーザーでは、ワイヤレス デバッグを ON にすることはできません。この機能を使用するには、メインユーザーに切り替えてください。"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB ポート無効"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"液体やゴミからデバイスを保護するため、USB ポートは無効になっています。アクセサリの検出は行われません。\n\nUSB ポートを再び安全に使用できるようになりましたらお知らせします。"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB ポートが有効になり、充電器やアクセサリを検出できるようになりました"</string>
@@ -82,7 +88,7 @@
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"スクリーンショットの作成はアプリまたは組織で許可されていません"</string>
<string name="screenrecord_name" msgid="2596401223859996572">"画面レコーダー"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"画面の録画セッション中の通知"</string>
- <string name="screenrecord_start_label" msgid="1750350278888217473">"記録を開始しますか?"</string>
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"録画を開始しますか?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"録画中に機密情報が画面に表示されたりデバイスで再生されたりした場合、Android システムでキャプチャされることがあります。これには、パスワード、お支払い情報、写真、メッセージ、音声などが含まれます。"</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"録音"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"デバイスの音声"</string>
@@ -90,9 +96,9 @@
<string name="screenrecord_mic_label" msgid="2111264835791332350">"マイク"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"デバイスの音声とマイク"</string>
<string name="screenrecord_start" msgid="330991441575775004">"開始"</string>
- <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"画面を記録しています"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"画面を録画しています"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"画面と音声を記録しています"</string>
- <string name="screenrecord_taps_label" msgid="1595690528298857649">"画面上のタップを表示する"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"画面上のタップも記録する"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"タップして停止"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"停止"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"一時停止"</string>
@@ -105,7 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"画面の録画を削除しました"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"画面の録画の削除中にエラーが発生しました"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"権限を取得できませんでした"</string>
- <string name="screenrecord_start_error" msgid="2200660692479682368">"画面の記録中にエラーが発生しました"</string>
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"画面の録画中にエラーが発生しました"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USBファイル転送オプション"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"メディアプレーヤー(MTP)としてマウント"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"カメラ(PTP)としてマウント"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"管理"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"履歴"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"サイレント通知"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"バイブレーションまたは音を伴う通知"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"会話"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"サイレント通知がすべて消去されます"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"サイレント モードにより通知は一時停止中です"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"音やバイブレーションで通知をお知らせします。"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"このコンテンツのフローティング ショートカットで通知をお知らせします。"</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"最近閉じたふきだしはありません"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"最近閉じたふきだしがここに表示され、簡単に確認できます。"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"最近表示されたふきだしや閉じたふきだしが、ここに表示されます。"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"これらの通知は変更できません。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"このグループの通知はここでは設定できません"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"代理通知"</string>
@@ -711,7 +718,7 @@
<string name="inline_undo" msgid="9026953267645116526">"元に戻す"</string>
<string name="demote" msgid="6225813324237153980">"この通知を会話ではないとマーク"</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"重要な会話"</string>
- <string name="notification_conversation_unfavorite" msgid="181383708304763807">"重要な会話ではない"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"重要でない会話"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"マナーモード"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"アラートを受け取る"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"ふきだしを表示"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"左下に移動"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"右下に移動"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"閉じる"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"システム ナビゲーションを更新しました。変更するには [設定] に移動してください。"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"システム ナビゲーションを更新するには [設定] に移動してください"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"スタンバイ"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"クイック コントロール"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"コントロールの追加"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"コントロールを追加するアプリの選択"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">現在のお気に入りは <xliff:g id="NUMBER_1">%s</xliff:g> 個です。</item>
- <item quantity="one">現在のお気に入りは <xliff:g id="NUMBER_0">%s</xliff:g> 個です。</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> 件のコントロールを追加しました。</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> 件のコントロールを追加しました。</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"コントロール"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"クイック アクセスのコントロールの選択"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"お気に入り"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"すべて"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"全コントロールの一覧を読み込めませんでした。"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"その他"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index e05f244..07b9e2a 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"დაშვება"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ხარვეზების გამართვა ნებადართული არაა"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ამ მოწყობილობაზე ამჟამად შესულ მომხმარებელს არ შეუძლია USB ხარვეზების გამართვის ფუნქციის ჩართვა. ამ ფუნქციის გამოსაყენებლად, მიუერთდით მთავარ მომხმარებელს."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"დაუშვებთ ამ ქსელში შეცდომების უსადენო გამართვას?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ქსელის სახელი (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi მისამართი (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ყოველთვის დაშვება ამ ქსელში"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"დაშვება"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"შეცდომების უსადენო გამართვა არ არის დაშვებული"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ამ მოწყობილობაზე ამჟამად შესულ მომხმარებელს არ შეუძლია შეცდომების უსადენო გამართვის ჩართვა. ამ ფუნქციის გამოსაყენებლად, გადაერთეთ მთავარ მომხმარებელზე."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB პორტი გათიშულია"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"თქვენი მოწყობილობის სითხის ან ნადებისგან დასაცავად, USB პორტი გათიშულია და ვერცერთი აქსესუარის აღმოჩენას ვერ შეძლებს.\n\nთქვენ მიიღებთ შეტყობინებას, როდესაც USB პორტის გამოყენება კვლავ შესაძლებელი იქნება."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB პორტი ჩართულია დამტენებისა და აქსესუარების აღმოსაჩენად"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"მართვა"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ისტორია"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ჩუმი შეტყობინებები"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"გამაფრთხილებელი შეტყობინებები"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"მიმოწერები"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ყველა ჩუმი შეტყობინების გასუფთავება"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"შეტყობინებები დაპაუზდა „არ შემაწუხოთ“ რეჟიმის მეშვეობით"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"გეხმარებათ ფოკუსირებაში ხმის ან ვიბრაციის უქონლობის გამო."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"იპყრობს თქვენს ყურადღებას ხმით ან ვიბრაციით."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"იპყრობს თქვენს ყურადღებას ამ კონტენტის მოლივლივე მალსახმობით."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ბოლო დროს გამოყენებული ბუშტები არ არის"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"აქ გამოჩნდება ბოლოდროინდელი ბუშტები და უარყოფილი ბუშტები."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ამ შეტყობინებების შეცვლა შეუძლებელია."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"შეტყობინებების ამ ჯგუფის კონფიგურირება აქ შეუძლებელია"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"პროქსირებული შეტყობინება"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ქვევით და მარცხნივ გადატანა"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"გადაანაცვ. ქვემოთ და მარჯვნივ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"დახურვა"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"სისტემური ნავიგაცია განახლდა. ცვლილებების შესატანად გადადით პარამეტრებზე."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"სისტემური ნავიგაციის გასაახლებლად გადადით პარამეტრებზე"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"მოლოდინის რეჟიმი"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"სწრაფი მართვის ელემენტები"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"მართვის საშუალებების დამატება"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"აირჩიეთ აპი, რომლიდანაც მართვის საშუალებები დაემატება"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ამჟამინდელი ფავორიტი.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> ამჟამინდელი ფავორიტი.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">დაემატა <xliff:g id="NUMBER_1">%s</xliff:g> მართვის საშუალება.</item>
+ <item quantity="one">დაემატა <xliff:g id="NUMBER_0">%s</xliff:g> მართვის საშუალება.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"მართვის საშუალებები"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"აირჩიეთ სწრაფი წვდომის მართვის საშუალებები"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ფავორიტები"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ყველა"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"მართვის ყველა საშუალების სია ვერ ჩაიტვირთა."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"სხვა"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index f3462a0..d6391891 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Рұқсат беру"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB жөндеу рұқсат етілмеген"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Бұл құрылғыға жаңа кірген пайдаланушы USB түзетуін іске қосылмайды. Бұл мүмкіндікті пайдалану үшін негізгі пайдаланушыға ауысыңыз."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Бұл желіде сымсыз түзетуге рұқсат етілсін бе?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Желі атауы (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi мекенжайы (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Осы желіде үнемі рұқсат ету"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Рұқсат ету"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Сымсыз түзетуге рұқсат етілмейді"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Бұл құрылғыға жаңа кірген пайдаланушы сымсыз түзетуді іске қоса алмайды. Бұл мүмкіндікті пайдалану үшін негізгі пайдаланушыға ауысыңыз."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB порты өшірілді"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Құрылғыңызға сұйықтық немесе қоқыс кіріп кетпеуі үшін, USB порты өшірілген және ешқандай керек-жарақты анықтамайды.\n\nUSB портын қайта пайдалануға болатын кезде хабарландыру аласыз."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Зарядтағыштар мен аксессуарларды анықтау үшін USB порты қосылды."</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Басқару"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Тарих"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Дыбыссыз хабарландырулар"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Ескертуші хабарландлырулар"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Сөйлесулер"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Барлық дыбыссыз хабарландыруларды өшіру"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Хабарландырулар \"Мазаламау\" режимінде кідіртілді"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Хабарландырулар келгенде, дыбыс шықпайды не дірілдемейді"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Хабарландырулар келгенде, дыбыс шығады не дірілдейді"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Осы мазмұнға бекітілген қалқымалы таңбашамен назарыңызды өзіне тартады."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Жақындағы қалқымалы анықтамалар жоқ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Жақында ашылған және жабылған қалқымалы анықтамалар осы жерде пайда болады."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бұл хабарландыруларды өзгерту мүмкін емес."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Мұндай хабарландырулар бұл жерде конфигурацияланбайды."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Прокси-сервер арқылы жіберілген хабарландыру"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Төменгі сол жаққа жылжыту"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Төменгі оң жаққа жылжыту"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Жабу"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Жүйе навигациясы жаңартылды. Өзгерту енгізу үшін \"Параметрлер\" бөліміне өтіңіз."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Жүйе навигациясын жаңарту үшін \"Параметрлер\" бөліміне өтіңіз."</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Күту режимі"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Жылдам басқару элементтері"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Басқару элементтерін енгізу"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Ішінен басқару элементтері енгізілетін қолданбаны таңдаңыз."</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Ағымдағы таңдаулылар саны: <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="one">Ағымдағы таңдаулылар саны: <xliff:g id="NUMBER_0">%s</xliff:g>.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> басқару элементі енгізілді.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> басқару элементі енгізілді.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Басқару элементтері"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Жылдам кіру үшін басқару элементтерін таңдау"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Таңдаулылар"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Барлығы"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Барлық басқару элементі тізімі жүктелмеді."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Басқа"</string>
</resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index ddfe5cb..8306dff 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"អនុញ្ញាត"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"មិនអនុញ្ញាតការកែកំហុសតាម USB ទេ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"អ្នកប្រើដែលបច្ចុប្បន្នបានចូលគណនីនៅលើឧបករណ៍នេះមិនអាចបើកការកែកំហុស USB បានទេ។ ដើម្បីប្រើមុខងារនេះ សូមប្តូរទៅអ្នកប្រើចម្បង។"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"អនុញ្ញាតការជួសជុលដោយឥតខ្សែនៅលើបណ្ដាញនេះឬ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ឈ្មោះបណ្ដាញ (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nអាសយដ្ឋាន Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"អនុញ្ញាតនៅលើបណ្ដាញនេះជានិច្ច"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"អនុញ្ញាត"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"មិនអនុញ្ញាតការជួសជុលដោយឥតខ្សែទេ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"អ្នកប្រើប្រាស់ដែលបច្ចុប្បន្នបានចូលគណនីនៅលើឧបករណ៍នេះមិនអាចបើកការជួសជុលដោយឥតខ្សែបានទេ។ ដើម្បីប្រើមុខងារនេះ សូមប្ដូរទៅអ្នកប្រើប្រាស់ចម្បង។"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"បានបិទរន្ធ USB"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ដើម្បីការពារឧបករណ៍របស់អ្នកកុំឱ្យចូលទឹក ឬកម្ទេចផ្សេងៗ រន្ធ USB ត្រូវបានបិទ ហើយនឹងមិនស្គាល់គ្រឿងបរិក្ខារនោះទេ។\n\nអ្នកនឹងទទួលបានការជូនដំណឺង នៅពេលអ្នកអាចប្រើប្រាស់រន្ធ USB ម្ដងទៀត។"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"បានបើករន្ធ USB ដើម្បីសម្គាល់ឆ្នាំងសាក និងគ្រឿងផ្សេងៗ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"គ្រប់គ្រង"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ប្រវត្តិ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ការជូនដំណឹងស្ងាត់"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ការជូនដំណឹងញ័រ ឬរោទ៍"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ការសន្ទនា"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"សម្អាតការជូនដំណឹងស្ងាត់ទាំងអស់"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"ការជូនដំណឹងបានផ្អាកដោយមុខងារកុំរំខាន"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ជួយឱ្យអ្នកផ្តោតអារម្មណ៍ ដោយមិនឮសំឡេង ឬការញ័រ។"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ធ្វើឱ្យអ្នកចាប់អារម្មណ៍តាមរយៈសំឡេង ឬការញ័រ។"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ធ្វើឱ្យអ្នកចាប់អារម្មណ៍ដោយប្រើផ្លូវកាត់អណ្ដែតសម្រាប់ខ្លឹមសារនេះ។"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"មិនមានសារលេចឡើងថ្មីៗទេ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"សារលេចឡើងដែលបានច្រានចោល និងសារលេចឡើងថ្មីៗនឹងបង្ហាញនៅទីនេះ។"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"មិនអាចកែប្រែការជូនដំណឹងទាំងនេះបានទេ។"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"មិនអាចកំណត់រចនាសម្ព័ន្ធក្រុមការជូនដំណឹងនេះនៅទីនេះបានទេ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ការជូនដំណឹងជាប្រូកស៊ី"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ផ្លាស់ទីទៅផ្នែកខាងក្រោមខាងឆ្វេង"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ផ្លាស់ទីទៅផ្នែកខាងក្រោមខាងស្ដាំ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ច្រានចោល"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"បានធ្វើបច្ចុប្បន្នភាពការរុករកក្នុងប្រព័ន្ធ។ ដើម្បីធ្វើការផ្លាស់ប្ដូរ សូមចូលទៅកាន់ការកំណត់។"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ចូលទៅកាន់ការកំណត់ ដើម្បីធ្វើបច្ចុប្បន្នភាពការរុករកក្នុងប្រព័ន្ធ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ផ្អាកដំណើរការ"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"ការគ្រប់គ្រងរហ័ស"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"បញ្ចូលការគ្រប់គ្រង"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ជ្រើសរើសកម្មវិធីដើម្បីបញ្ចូលការគ្រប់គ្រង"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">សំណព្វបច្ចុប្បន្ន <xliff:g id="NUMBER_1">%s</xliff:g>។</item>
- <item quantity="one">សំណព្វបច្ចុប្បន្ន <xliff:g id="NUMBER_0">%s</xliff:g>។</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">បានបញ្ចូលការគ្រប់គ្រង <xliff:g id="NUMBER_1">%s</xliff:g>។</item>
+ <item quantity="one">បានបញ្ចូលការគ្រប់គ្រង <xliff:g id="NUMBER_0">%s</xliff:g>។</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"ការគ្រប់គ្រង"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ជ្រើសរើសការគ្រប់គ្រងសម្រាប់ការចូលប្រើប្រាស់រហ័ស"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"សំណព្វ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ទាំងអស់"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"មិនអាចផ្ទុកបញ្ជីនៃការគ្រប់គ្រងទាំងអស់បានទេ។"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"ផ្សេងៗ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 7d2c6cb..880e083 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ಅನುಮತಿಸಿ"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ಬಳಕೆದಾರರು ಪ್ರಸ್ತುತ ಈ ಸಾಧನಕ್ಕೆ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದಾರೆ USB ಡೀಬಗ್ ಮಾಡುವುದನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು, ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರಿಗೆ ಬದಲಾಯಿಸಿ."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ಈ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸಬೇಕೆ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ನೆಟ್ವರ್ಕ್ ಹೆಸರು (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nವೈ-ಫೈ ವಿಳಾಸ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ಈ ನೆಟ್ವರ್ಕ್ನಲ್ಲಿ ಅನುಮತಿಸಿ"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ಅನುಮತಿಸಿ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವಿಕೆಯನ್ನು ಅನುಮತಿಸಲಾಗಿಲ್ಲ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ಬಳಕೆದಾರರು ಪ್ರಸ್ತುತ ಈ ಸಾಧನಕ್ಕೆ ಸೈನ್ ಇನ್ ಮಾಡಿದ್ದಾರೆ ವೈರ್ಲೆಸ್ ಡೀಬಗ್ ಮಾಡುವುದನ್ನು ಆನ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ. ಈ ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬಳಸಲು, ಪ್ರಾಥಮಿಕ ಬಳಕೆದಾರರಿಗೆ ಬದಲಾಯಿಸಿ."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB ಪೋರ್ಟ್ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ದ್ರವ ಅಥವಾ ಧೂಳಿನ ಕಣಗಳಿಂದ ನಿಮ್ಮ ಸಾಧನವನ್ನು ರಕ್ಷಿಸಲು, USB ಪೋರ್ಟ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ ಹಾಗಾಗಿ ಅದು ಯಾವುದೇ ಪರಿಕರಗಳನ್ನು ಪತ್ತೆ ಮಾಡುವುದಿಲ್ಲ. \n\n USB ಪೋರ್ಟ್ ಬಳಸಲು ಸುರಕ್ಷಿತವಾಗಿದ್ದಾಗ ಮತ್ತೆ ನಿಮಗೆ ಸೂಚಿಸಲಾಗುವುದು."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ಚಾರ್ಜರ್ಗಳು ಮತ್ತು ಪರಿಕರಗಳನ್ನು ಪತ್ತೆಹಚ್ಚಲು USB ಪೋರ್ಟ್ ಅನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ನಿರ್ವಹಿಸಿ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ಇತಿಹಾಸ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ನಿಶ್ಶಬ್ಧ ಅಧಿಸೂಚನೆಗಳು"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ಎಚ್ಚರಿಸುವ ಅಧಿಸೂಚನೆಗಳು"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ಸಂವಾದಗಳು"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ಎಲ್ಲಾ ನಿಶ್ಶಬ್ಧ ಅಧಿಸೂಚನೆಗಳನ್ನು ತೆರವುಗೊಳಿಸಿ"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"ಅಡಚಣೆ ಮಾಡಬೇಡಿ ಎನ್ನುವ ಮೂಲಕ ಅಧಿಸೂಚನೆಗಳನ್ನು ವಿರಾಮಗೊಳಿಸಲಾಗಿದೆ"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ಶಬ್ದ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಇರದಂತೆ ನಿಮಗೆ ಗಮನಹರಿಸಲು ಸಹಾಯ ಮಾಡುತ್ತದೆ."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ಧ್ವನಿ ಅಥವಾ ವೈಬ್ರೇಷನ್ ಮೂಲಕ ನಿಮ್ಮ ಗಮನವನ್ನು ಸೆಳೆಯುತ್ತದೆ."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ಈ ವಿಷಯಕ್ಕೆ ಲಿಂಕ್ ಮಾಡಿ ಕೊಂಡೊಯ್ಯುವ ಶಾರ್ಟ್ಕಟ್ ಕಡೆಗೆ ಗಮನ ಇರಿಸಿ."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಬಬಲ್ಗಳಿಲ್ಲ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ಇತ್ತೀಚಿನ ಬಬಲ್ಗಳು ಮತ್ತು ವಜಾಗೊಳಿಸಿದ ಬಬಲ್ಗಳು ಇಲ್ಲಿ ಗೋಚರಿಸುತ್ತವೆ."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ಈ ಅಧಿಸೂಚನೆಗಳನ್ನು ಮಾರ್ಪಡಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ಈ ಗುಂಪಿನ ಅಧಿಸೂಚನೆಗಳನ್ನು ಇಲ್ಲಿ ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿರುವುದಿಲ್ಲ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ಪ್ರಾಕ್ಸಿ ಮಾಡಿದ ಅಧಿಸೂಚನೆಗಳು"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ಸ್ಕ್ರೀನ್ನ ಎಡ ಕೆಳಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ಕೆಳಗಿನ ಬಲಭಾಗಕ್ಕೆ ಸರಿಸಿ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ವಜಾಗೊಳಿಸಿ"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ ಅಪ್ಡೇಟ್ ಮಾಡಲಾಗಿದೆ ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು, ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ಸಿಸ್ಟಂ ನ್ಯಾವಿಗೇಷನ್ ಅಪ್ಡೇಟ್ ಮಾಡಲು ಸೆಟ್ಟಿಂಗ್ಗಳಿಗೆ ಹೋಗಿ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ಸ್ಟ್ಯಾಂಡ್ಬೈ"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ತ್ವರಿತ ನಿಯಂತ್ರಣಗಳು"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"ನಿಯಂತ್ರಣಗಳನ್ನು ಸೇರಿಸಿ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ನಿಯಂತ್ರಣಗಳನ್ನು ಸೇರಿಸಲು ಆ್ಯಪ್ ಅನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> ಪ್ರಸ್ತುತ ಮೆಚ್ಚಿನವುಗಳು.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ಪ್ರಸ್ತುತ ಮೆಚ್ಚಿನವುಗಳು.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"ನಿಯಂತ್ರಣಗಳು"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ತ್ವರಿತ ಪ್ರವೇಶಕ್ಕಾಗಿ ನಿಯಂತ್ರಣಗಳನ್ನು ಆಯ್ಕೆಮಾಡಿ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ಮೆಚ್ಚಿನವುಗಳು"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ಎಲ್ಲಾ"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"ಎಲ್ಲಾ ನಿಯಂತ್ರಣಗಳ ಪಟ್ಟಿಯನ್ನು ಲೋಡ್ ಮಾಡಲು ಆಗಲಿಲ್ಲ."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 0c90b4a..ca8cdb0 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"허용"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB 디버깅이 허용되지 않음"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"현재 이 기기에 로그인한 사용자는 USB 디버깅을 사용 설정할 수 없습니다. 이 기능을 사용하려면 기본 사용자로 전환하세요."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"이 네트워크에서 무선 디버깅을 허용하시겠습니까?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"네트워크 이름(SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi 주소(BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"이 네트워크에서 항상 허용"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"허용"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"무선 디버깅이 허용되지 않음"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"현재 이 기기에 로그인한 사용자는 무선 디버깅을 사용 설정할 수 없습니다. 이 기능을 사용하려면 기본 사용자로 전환하세요."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB 포트 비활성화됨"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"기기를 액체나 이물질로부터 보호하기 위해 USB 포트가 사용 중지되었으며 액세서리를 연결할 수 없습니다.\n\nUSB 포트를 다시 안전하게 사용할 수 있게 되면 알려 드리겠습니다."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"충전기와 액세서리를 감지할 수 있도록 USB 포트가 사용 설정됨"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"관리"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"기록"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"무음 알림"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"주의를 끄는 알림"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"대화"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"무음 알림 모두 삭제"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"방해 금지 모드로 일시중지된 알림"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"소리나 진동 없이 집중할 수 있도록 도와줍니다"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"소리나 진동으로 알립니다."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"이 콘텐츠로 연결되는 플로팅 바로가기로 사용자의 주의를 끕니다."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"최근에 닫은 도움말 풍선 없음"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"최근 버블과 내가 닫은 버블이 여기 표시됩니다."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"이 알림은 수정할 수 없습니다."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"이 알림 그룹은 여기에서 설정할 수 없습니다."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"프록시를 통한 알림"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"왼쪽 하단으로 이동"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"오른쪽 하단으로 이동"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"닫기"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"시스템 탐색이 업데이트되었습니다. 변경하려면 설정으로 이동하세요."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"설정으로 이동하여 시스템 탐색을 업데이트하세요."</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"대기"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"빠른 컨트롤"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"컨트롤 추가"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"컨트롤을 추가할 앱을 선택하세요."</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">현재 즐겨찾는 항목 <xliff:g id="NUMBER_1">%s</xliff:g>개 있음</item>
- <item quantity="one">현재 즐겨찾는 항목 <xliff:g id="NUMBER_0">%s</xliff:g>개 있음</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">제어 기능 <xliff:g id="NUMBER_1">%s</xliff:g>개가 추가되었습니다.</item>
+ <item quantity="one">제어 기능 <xliff:g id="NUMBER_0">%s</xliff:g>개가 추가되었습니다.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"제어"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"빠른 액세스를 위한 컨트롤을 선택하세요."</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"즐겨찾기"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"전체"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"전체 컨트롤 목록을 로드할 수 없습니다."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"기타"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index 3565389..719380e 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Уруксат берүү"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB мүчүлүштүктөрүн оңдоого уруксат жок"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Учурда бул аккаунтта USB аркылуу мүчүлүштүктөрдү оңдоо функциясын иштетүүгө болбойт. Негизги колдонуучунун аккаунтуна кириңиз."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Бул тармакта мүчүлүштүктөрдү зымсыз оңдоого уруксат берилсинби?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Тармактын аталышы (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi дареги (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Бул тармакта ар дайым уруксат берилсин"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Уруксат берүү"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Мүчүлүштүктөрдү зымсыз оңдоого уруксат берилген жок"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Учурда бул түзмөккө кирген колдонуучу мүчүлүштүктөрдү зымсыз оңдоо функциясын күйгүзө албайт. Бул функцияны колдонуу үчүн негизги колдонуучунун аккаунтуна которулуңуз."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB порту өчүрүлдү"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Түзмөгүңүздүн ичине суюктук же булганч нерселер кирип кетпеши үчүн USB порту өчүрүлдү. Азырынча ал аркылуу башка түзмөктөргө туташууга болбойт.\n\nUSB портун кайра колдонуу мүмкүн болгондо, билдирме аласыз."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Кубаттагычтарды жана аксессуарларды аныктоо үчүн USB оюкчасы иштетилди"</string>
@@ -78,33 +84,21 @@
<string name="screenshot_saved_text" msgid="7778833104901642442">"Скриншотуңузду көрүү үчүн таптап коюңуз"</string>
<string name="screenshot_failed_title" msgid="3259148215671936891">"Скриншот сакталган жок"</string>
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"Скриншотту кайра тартып көрүңүз"</string>
- <string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"Сактагычта бош орун аз болгондуктан скриншот сакталбай жатат"</string>
+ <string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"Сактагычта бош орун аз болгондуктан, скриншот сакталбай жатат"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"Скриншот тартууга колдонмо же ишканаңыз тыюу салган."</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"Экранды жаздыргыч"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Экранды жаздыруу сеансы боюнча учурдагы билдирме"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"Жаздырып башталсынбы?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Жаздыруу учурунда Android тутуму экраныңызда көрүнүп турган жана түзмөктө ойнотулуп жаткан бардык купуя маалыматты жаздырып алат. Буга сырсөздөр, төлөм маалыматы, сүрөттөр, билдирүүлөр жана аудио файлдар кирет."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"Аудио жаздыруу"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Түзмөктүн аудиосу"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Музыка, чалуулар жана рингтондор сыяктуу түзмөгүңүздөгү добуштар"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"Микрофон"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Түзмөктүн аудиосу жана микрофон"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"Старт"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"Экран жаздырылууда"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"Экран жана аудио жаздырылууда"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"Экранды басууларды көрсөтүү"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"Токтотуш үчүн басыңыз"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"Токтотуу"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"Тындыруу"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"Экранды жаздыруу өчүрүлдү"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"Экранды жаздырууну өчүрүүдө ката кетти"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"Уруксаттар алынбай калды"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"Экранды жаздырууну баштоодо ката кетти"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB менен файл өткөрүү мүмкүнчүлүктөрү"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"Медиа ойноткуч катары кошуу (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"Камера катары кошуу (PTP)"</string>
@@ -311,7 +304,7 @@
<string name="gps_notification_found_text" msgid="3145873880174658526">"GPS боюнча аныкталган жайгашуу"</string>
<string name="accessibility_location_active" msgid="2845747916764660369">"Жайгаштыруу талаптары иштелүүдө"</string>
<string name="accessibility_sensors_off_active" msgid="2619725434618911551">"\"Сенсорлорду өчүрүүнү\" активдештирүү"</string>
- <string name="accessibility_clear_all" msgid="970525598287244592">"Бардык билдирмелерди тазалоо."</string>
+ <string name="accessibility_clear_all" msgid="970525598287244592">"Бардык билдирмелерди өчүрүү."</string>
<string name="notification_group_overflow_indicator" msgid="7605120293801012648">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="91483442850649192">
<item quantity="other">Дагы <xliff:g id="NUMBER_1">%s</xliff:g> эскертме бар.</item>
@@ -499,9 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"Экинчи көрсөтүлбөсүн"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"Баарын тазалап салуу"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"Башкаруу"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"Таржымал"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Үнсүз билдирмелер"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Эскертүүлөр"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Жазышуулар"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Маанилүү эмес билдирмелердин баарын өчүрүү"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\"Тынчымды алба\" режиминде билдирмелер тындырылды"</string>
@@ -673,9 +666,9 @@
<string name="tuner_full_importance_settings" msgid="1388025816553459059">"Эскертмелерди башкаруу каражаттары"</string>
<string name="tuner_full_importance_settings_on" msgid="917981436602311547">"Күйүк"</string>
<string name="tuner_full_importance_settings_off" msgid="5580102038749680829">"Өчүк"</string>
- <string name="power_notification_controls_description" msgid="1334963837572708952">"Бул функциянын жардамы менен ар бир колдонмо үчүн билдирменин маанилүүлүгүн 0дон 5ке чейин бааласаңыз болот. \n\n"<b>"5-деңгээл"</b>" \n- Билдирмелер тизмесинин өйдө жагында көрсөтүлөт \n- Билдирмелер толук экранда көрсөтүлөт \n- Калкып чыгуучу билдирмелерге уруксат берилет \n\n"<b>"4-деңгээл"</b>" \n- Билдирмелер толук экранда көрсөтүлбөйт \n- Калкып чыгуучу билдирмелерге уруксат берилет \n\n"<b>"3-деңгээл"</b>" \n- Билдирмелер толук экранда көрсөтүлбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n\n"<b>"2-деңгээл"</b>" \n- Билдирмелер толук экранда көрсөтүлбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n- Эч качан үн чыкпайт же дирилдебейт \n\n"<b>"1-деңгээл"</b>" \n- Билдирмелер толук экранда көрсөтүлбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n- Эч качан үн чыкпайт же дирилдебейт \n- Кулпуланган экрандан жана абал тилкесинен жашырылат \n- Билдирмелер тизмесинин ылдый жагында көрсөтүлөт \n\n"<b>"0-деңгээл"</b>" \n- Колдонмодон алынган бардык билдирмелер бөгөттөлөт"</string>
+ <string name="power_notification_controls_description" msgid="1334963837572708952">"Бул функциянын жардамы менен, ар бир колдонмо үчүн билдирменин маанилүүлүгүн 0дон 5ке чейин бааласаңыз болот. \n\n"<b>"5-деңгээл"</b>" \n- Билдирмелер тизмесинин өйдө жагында көрсөтүлөт \n- Билдирмелер толук экранда көрсөтүлөт \n- Калкып чыгуучу билдирмелерге уруксат берилет \n\n"<b>"4-деңгээл"</b>" \n- Билдирмелер толук экранда көрүнбөйт \n- Калкып чыгуучу билдирмелерге уруксат берилет \n\n"<b>"3-деңгээл"</b>" \n- Билдирмелер толук экранда көрүнбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n\n"<b>"2-деңгээл"</b>" \n- Билдирмелер толук экранда көрүнбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n- Эч качан үн чыкпайт же дирилдебейт \n\n"<b>"1-деңгээл"</b>" \n- Билдирмелер толук экранда көрүнбөйт \n- Калкып чыгуучу билдирмелерге тыюу салынат \n- Эч качан үн чыкпайт же дирилдебейт \n- Кулпуланган экрандан жана абал тилкесинен жашырылат \n- Билдирмелер тизмесинин ылдый жагында көрсөтүлөт \n\n"<b>"0-деңгээл"</b>" \n- Колдонмодон алынган бардык билдирмелер бөгөттөлөт"</string>
<string name="notification_header_default_channel" msgid="225454696914642444">"Билдирмелер"</string>
- <string name="notification_channel_disabled" msgid="928065923928416337">"Мындан ары бул билдирмелер сизге көрсөтүлбөйт"</string>
+ <string name="notification_channel_disabled" msgid="928065923928416337">"Мындан ары бул билдирмелер сизге көрүнбөйт"</string>
<string name="notification_channel_minimized" msgid="6892672757877552959">"Бул билдирмелер кичирейтилет"</string>
<string name="notification_channel_silenced" msgid="1995937493874511359">"Бул билдирмелер үнсүз көрсөтүлөт"</string>
<string name="notification_channel_unsilenced" msgid="94878840742161152">"Бул билдирмелер тууралуу кабарлап турабыз"</string>
@@ -700,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Үн же дирилдөөсүз ой топтоого жардам берет."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Билдирүүдөн үн чыгат же дирилдейт."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Калкыма ыкчам баскыч менен көңүлүңүздү бул мазмунга буруп турат."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Акыркы калкып чыкма билдирмелер жок"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Кайра жөнөтүлгөн жана жабылган калкып чыкма билдирмелер ушул жерде көрүнөт."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Бул билдирмелерди өзгөртүүгө болбойт."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Бул билдирмелердин тобун бул жерде конфигурациялоого болбойт"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Прокси билдирмеси"</string>
@@ -726,25 +717,18 @@
<string name="notification_done" msgid="6215117625922713976">"Бүттү"</string>
<string name="inline_undo" msgid="9026953267645116526">"Кайтаруу"</string>
<string name="demote" msgid="6225813324237153980">"Бул билдирме \"жазышуу эмес\" катары белгиленсин"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"Маанилүү жазышуу"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Маанилүү жазышуу эмес"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"Үнү өчүрүлгөн"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Билдирүү"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"Калкып чыкма билдирмени көрсөтүү"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"Калкып чыкма билдирмелерди алып салуу"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"Башкы экранга кошуу"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"билдирмелерди башкаруу каражаттары"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"эскертмени тындыруу опциялары"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"Эскертилсин"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"Жөндөөлөр"</string>
<string name="snooze_undo" msgid="60890935148417175">"КАЙТАРУУ"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> тындырылды"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +800,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"Трафикти үнөмдөө режими өчүрүлгөн"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"Күйүк"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"Өчүк"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"Жеткиликсиз"</string>
<string name="nav_bar" msgid="4642708685386136807">"Чабыттоо тилкеси"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"Калып"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"Сол жактагы кошумча баскычтын түрү"</string>
@@ -996,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Төмөнкү сол жакка жылдыруу"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Төмөнкү оң жакка жылдырыңыз"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Жабуу"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Тутум чабыттоосу жаңырды. Өзгөртүү үчүн, Жөндөөлөргө өтүңүз."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Тутум чабыттоосун жаңыртуу үчүн Жөндөөлөргө өтүңүз"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Көшүү режими"</string>
@@ -1005,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Ыкчам көзөмөл"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Көзөмөлдөө функцияларын кошуу"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Көзөмөлдөө функцияларын кошуу үчүн колдонмо тандоо"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Учурда <xliff:g id="NUMBER_1">%s</xliff:g> сүйүктүү бар.</item>
- <item quantity="one">Учурда <xliff:g id="NUMBER_0">%s</xliff:g> сүйүктүү бар.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> көзөмөл кошулду.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> көзөмөл кошулду.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Башкаруу элементтери"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Тез табуу мүмкүнчүлүгү үчүн көзөмөлдөө функцияларын тандоо"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Сүйүктүүлөр"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Баары"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Бардык көзөмөлдөрдүн тизмеси жүктөлгөн жок."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Башка"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index c9fa791..1737e0c 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ອະນຸຍາດ"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"ບໍ່ອະນຸຍາດໃຫ້ມີການແກ້ໄຂບັນຫາ USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ຜູ້ໃຊ້ທີ່ກຳລັງເຂົ້າສູ່ລະບົບອຸປະກອນຢູ່ໃນຕອນນີ້ບໍ່ສາມາດເປີດໃຊ້ການດີບັກ USB ໄດ້. ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ສະຫຼັບໄປໃຊ້ຜູ້ໃຊ້ຫຼັກ."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ອະນຸຍາດການດີບັກໄຮ້ສາຍຢູ່ເຄືອຂ່າຍນີ້ບໍ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ຊື່ເຄືອຂ່າຍ (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nທີ່ຢູ່ Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ອະນຸຍາດຕະຫຼອດຢູ່ເຄືອຂ່າຍນີ້"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ອະນຸຍາດ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ບໍ່ອະນຸຍາດໃຫ້ໃຊ້ການດີບັກໄຮ້ສາຍ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ຜູ້ໃຊ້ທີ່ກຳລັງເຂົ້າສູ່ລະບົບອຸປະກອນຢູ່ໃນຕອນນີ້ບໍ່ສາມາດເປີດໃຊ້ການດີບັກໄຮ້ສາຍໄດ້. ເພື່ອໃຊ້ຄຸນສົມບັດນີ້, ໃຫ້ສະຫຼັບໄປໃຊ້ຜູ້ໃຊ້ຫຼັກ."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"ປິດການນຳໃຊ້ຜອດ USB ແລ້ວ"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ເພື່ອປົກປ້ອງອຸປະກອນຂອງທ່ານຈາກຂອງແຫລວ ຫຼື ເສດດິນຕ່າງໆ, ຜອດ USB ຈຶ່ງຖືກປິດການນຳໃຊ້ ແລະ ຈະບໍ່ກວດຫາອຸປະກອນເສີມໃດໆ.\n\nທ່ານຈະໄດ້ຮັບການແຈ້ງເຕືອນເມື່ອສາມາດໃຊ້ຜອດ USB ໄດ້ອີກເທື່ອໜຶ່ງ."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ເປີດນຳໃຊ້ USB ແລ້ວເພື່ອກວດຫາສາຍສາກ ແລະ ອຸປະກອນເສີມ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ຈັດການ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ປະຫວັດ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ການແຈ້ງເຕືອນແບບງຽບ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ການແຈ້ງເຕືອນການເຕືອນ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ການສົນທະນາ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ລຶບລ້າງການແຈ້ງເຕືອນແບບງຽບທັງໝົດ"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"ຢຸດການແຈ້ງເຕືອນໂດຍໂໝດຫ້າມລົບກວນແລ້ວ"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ດຶງຄວາມສົນໃຈຂອງທ່ານດ້ວຍສຽງ ຫຼື ການສັ່ນເຕືອນ."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ເອົາໃຈໃສ່ທາງລັດແບບລອຍໄປຫາເນື້ອຫານີ້."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ບໍ່ມີ bubble ຫຼ້າສຸດ"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Bubble ທີ່ຫາກໍປິດໄປຈະປາກົດຢູ່ບ່ອນນີ້ເພື່ອໃຫ້ດຶງໄດ້ງ່າຍ."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Bubbles ຫຼ້າສຸດ ແລະ Bubbles ທີ່ປິດໄປຈະປາກົດຢູ່ບ່ອນນີ້."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ບໍ່ສາມາດແກ້ໄຂການແຈ້ງເຕືອນເຫຼົ່ານີ້ໄດ້."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ບໍ່ສາມາດຕັ້ງຄ່າກຸ່ມການແຈ້ງເຕືອນນີ້ຢູ່ບ່ອນນີ້ໄດ້"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ການແຈ້ງເຕືອນແບບພຣັອກຊີ"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ຍ້າຍຊ້າຍລຸ່ມ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ຍ້າຍຂວາລຸ່ມ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ປິດໄວ້"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ອັບເດດການນຳທາງລະບົບແລ້ວ. ເພື່ອປ່ຽນແປງ, ກະລຸນາໄປທີ່ການຕັ້ງຄ່າ."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ໄປທີ່ການຕັ້ງຄ່າເພື່ອອັບເດດການນຳທາງລະບົບ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ສະແຕນບາຍ"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"ການຄວບຄຸມດ່ວນ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"ເພີ່ມການຄວບຄຸມ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ເລືອກແອັບໃດໜຶ່ງທີ່ຈະເພີ່ມການຄວບຄຸມ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ລາຍການທີ່ມັກປັດຈຸບັນ.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> ລາຍການທີ່ມັກປັດຈຸບັນ.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">ເພີ່ມ <xliff:g id="NUMBER_1">%s</xliff:g> ການຄວບຄຸມແລ້ວ.</item>
+ <item quantity="one">ເພີ່ມ <xliff:g id="NUMBER_0">%s</xliff:g> ການຄວບຄຸມແລ້ວ.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"ການຄວບຄຸມ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ເລືອກການຄວບຄຸມສຳລັບການເຂົ້າເຖິງດ່ວນ"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ລາຍການທີ່ມັກ"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"ທັງໝົດ"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"ບໍ່ສາມາດໂຫຼດລາຍຊື່ການຄວບຄຸມທັງໝົດໄດ້."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"ອື່ນໆ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 3132439..31fd57f 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Leisti"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB derinimas neleidžiamas"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Šiuo metu prie įrenginio prisijungęs naudotojas negali įjungti USB derinimo. Kad galėtumėte naudoti šią funkciją, perjunkite į pagrindinį naudotoją."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Leisti belaidžio ryšio derinimą prisijungus prie šio tinklo?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Tinklo pavadinimas (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\n„Wi‑Fi“ adresas (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Visada leisti naudojant šį tinklą"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Leisti"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Belaidžio ryšio derinimas neleidžiamas"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Šiuo metu prie įrenginio prisijungęs naudotojas negali įjungti belaidžio ryšio derinimo. Kad galėtumėte naudoti šią funkciją, perjunkite į pagrindinį naudotoją."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB prievadas išjungtas"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Siekiant apsaugoti įrenginį nuo skysčių ar smulkių dalelių, USB prievadas buvo išjungtas ir neaptiks jokių priedų.\n\nJums bus pranešta, kai galėsite vėl saugiai naudoti USB prievadą."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB prievadas įgalintas aptikti kroviklius ir priedus"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Tvarkyti"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Istorija"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Tylieji pranešimai"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Įspėjamieji pranešimai"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Pokalbiai"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Išvalyti visus tylius pranešimus"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Pranešimai pristabdyti naudojant netrukdymo režimą"</string>
@@ -693,7 +700,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Atkreipia dėmesį garsu arba vibravimu."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Naudojant slankųjį spartųjį klavišą lengviau sutelkti dėmesį į šį turinį."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nėra naujausių debesėlių"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Neseniai atmesti debesėliai bus rodomi čia, kad galėtumėte lengvai vėl juos pasiekti."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Naujausi ir atmesti debesėliai bus rodomi čia."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šių pranešimų keisti negalima."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Šios grupės pranešimai čia nekonfigūruojami"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Per tarpinį serverį gautas pranešimas"</string>
@@ -982,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Perkelti į apačią kairėje"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Perkelti į apačią dešinėje"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Atmesti"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistemos naršymo funkcijos atnaujintos. Jei norite pakeisti, eikite į skiltį „Nustatymai“."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Eikite į skiltį „Nustatymai“, kad atnaujintumėte sistemos naršymo funkcijas"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Budėjimo laikas"</string>
@@ -991,15 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Spartieji valdikliai"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Valdiklių pridėjimas"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Pasirinkite programą, iš kurios norėsite pridėti valdiklių"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> dabartinis mėgstamiausias elementas.</item>
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> dabartiniai mėgstamiausi elementai.</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> dabartinio mėgstamiausio elemento.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> dabartinių mėgstamiausių elementų.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Pridėtas <xliff:g id="NUMBER_1">%s</xliff:g> valdiklis.</item>
+ <item quantity="few">Pridėti <xliff:g id="NUMBER_1">%s</xliff:g> valdikliai.</item>
+ <item quantity="many">Pridėta <xliff:g id="NUMBER_1">%s</xliff:g> valdiklio.</item>
+ <item quantity="other">Pridėta <xliff:g id="NUMBER_1">%s</xliff:g> valdiklių.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Valdikliai"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Pasirinkite sparčiosios prieigos valdiklius"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Mėgstamiausi"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Visi"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Nepavyko įkelti visų valdiklių sąrašo."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Kita"</string>
</resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index 3d10ba1..44e15cc 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Atļaut"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB atkļūdošana nav atļauta"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Lietotājs, kurš pašlaik ir pierakstījies šajā ierīcē, nevar iespējot USB atkļūdošanu. Lai izmantotu šo funkciju, pārslēdzieties uz galveno lietotāju."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vai atļaut bezvadu atkļūdošanu šajā tīklā?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Tīkla nosaukums (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi adrese (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Vienmēr atļaut šajā tīklā"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Atļaut"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bezvadu atkļūdošana nav atļauta"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Lietotājs, kurš pašlaik ir pierakstījies šajā ierīcē, nevar iespējot bezvadu atkļūdošanu. Lai izmantotu šo funkciju, pārslēdzieties uz galveno lietotāju."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB pieslēgvieta atspējota"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Lai aizsargātu ierīci no šķidruma un gružiem, USB pieslēgvieta ir atspējota un tajā nevarēs noteikt pieslēgtus piederumus.\n\nKad USB pieslēgvietu atkal drīkstēs izmantot, saņemsiet paziņojumu."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB portam ir iespējota uzlādes ierīču un piederumu noteikšana"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Pārvaldīt"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Vēsture"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Klusie paziņojumi"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Paziņojumi ar skaņu vai vibrāciju"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Sarunas"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Notīrīt visus klusos paziņojumus"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Paziņojumi pārtraukti, izmantojot iestatījumu “Netraucēt”"</string>
@@ -689,10 +696,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Palīdz jums koncentrēties, nenovēršot uzmanību ar skaņu vai vibrāciju."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Jūsu uzmanība tiek piesaistīta ar skaņas vai vibrācijas signālu."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Piesaista jūsu uzmanību, rādot peldošu saīsni uz šo saturu."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nav nesen aizvērtu burbuļu"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Šeit būs redzami nesen rādītie burbuļi un aizvērtie burbuļi."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Šos paziņojumus nevar modificēt."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Šeit nevar konfigurēt šo paziņojumu grupu."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Starpniekservera paziņojums"</string>
@@ -979,6 +984,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Pārvietot apakšpusē pa kreisi"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Pārvietot apakšpusē pa labi"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Nerādīt"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistēmas navigācija ir atjaunināta. Lai veiktu izmaiņas, atveriet iestatījumus."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Atveriet iestatījumus, lai atjauninātu sistēmas navigāciju"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gaidstāve"</string>
@@ -988,17 +999,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Ātrās vadīklas"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Vadīklu pievienošana"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Izvēlieties lietotni, no kuras pievienot vadīklas."</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="zero">Šobrīd izlasē ir <xliff:g id="NUMBER_1">%s</xliff:g> vienumi.</item>
- <item quantity="one">Šobrīd izlasē ir <xliff:g id="NUMBER_1">%s</xliff:g> vienums.</item>
- <item quantity="other">Šobrīd izlasē ir <xliff:g id="NUMBER_1">%s</xliff:g> vienumi.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="zero">Pievienotas <xliff:g id="NUMBER_1">%s</xliff:g> vadīklas.</item>
+ <item quantity="one">Pievienota <xliff:g id="NUMBER_1">%s</xliff:g> vadīkla.</item>
+ <item quantity="other">Pievienotas <xliff:g id="NUMBER_1">%s</xliff:g> vadīklas.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Vadīklas"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Izvēlieties vadīklas ātrajai piekļuvei."</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Izlase"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Visas"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Nevarēja ielādēt sarakstu ar visām vadīklām."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Cita"</string>
</resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index e1e6365..f0896e6 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Дозволи"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Отстранувањето грешки на USB не е дозволено"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Корисникот што моментално е најавен на уредов не може да вклучи отстранување грешки на USB. За да ја користите функцијава, префрлете се на примарниот корисник."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Да се дозволи безжично отстранување грешки на мрежава?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Име на мрежа (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-адреса (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Секогаш дозволувај на оваа мрежа"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Дозволи"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Безжичното отстранување грешки не е дозволено"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Корисникот што моментално е најавен на уредов не може да вклучи безжично отстранување грешки. За да ја користите функцијава, префрлете се на примарниот корисник."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-портата е оневозможена"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"За да го заштитиме уредот од течност или нечистотија, USB-портата е оневозможена и нема да ги открива додатоците.\n\nЌе ве известиме кога ќе биде во ред да ја користите USB-портата повторно."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-портата е овозможена за откривање полначи и додатоци"</string>
@@ -298,7 +304,7 @@
<string name="gps_notification_found_text" msgid="3145873880174658526">"Локацијата е поставена со GPS"</string>
<string name="accessibility_location_active" msgid="2845747916764660369">"Активни барања за локација"</string>
<string name="accessibility_sensors_off_active" msgid="2619725434618911551">"Исклучувањето на сензорите е активно"</string>
- <string name="accessibility_clear_all" msgid="970525598287244592">"Исчисти ги сите известувања."</string>
+ <string name="accessibility_clear_all" msgid="970525598287244592">"Избриши ги сите известувања."</string>
<string name="notification_group_overflow_indicator" msgid="7605120293801012648">"+ <xliff:g id="NUMBER">%s</xliff:g>"</string>
<plurals name="notification_group_overflow_description" formatted="false" msgid="91483442850649192">
<item quantity="one">Уште <xliff:g id="NUMBER_1">%s</xliff:g> известување внатре.</item>
@@ -488,8 +494,9 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Управувајте"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Историја"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Тивки известувања"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Известувања за предупредување"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Разговори"</string>
- <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Исчисти ги сите тивки известувања"</string>
+ <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Избриши ги сите тивки известувања"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Известувањата се паузирани од „Не вознемирувај“"</string>
<string name="media_projection_action_text" msgid="3634906766918186440">"Започни сега"</string>
<string name="empty_shade_text" msgid="8935967157319717412">"Нема известувања"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ви помага да се концентрирате без звук или вибрации."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Ви го привлекува вниманието со звук или вибрации."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Ви го задржува вниманието со лебдечка кратенка на содржинава."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Нема неодамнешни балончиња"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Неодамнешните и отфрлените балончиња ќе се појавуваат тука."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Овие известувања не може да се изменат"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Оваа група известувања не може да се конфигурира тука"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Известување преку прокси"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Премести долу лево"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Премести долу десно"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Отфрли"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навигацијата на системот е ажурирана. За да извршите промени, одете во „Поставки“."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Одете во „Поставки“ за да ја ажурирате навигацијата на системот"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Подготвеност"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Брзи контроли"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Додајте контроли"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Изберете апликација од која ќе додавате контроли"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> моментална омилена.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> моментални омилени.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Додадена е <xliff:g id="NUMBER_1">%s</xliff:g> контрола.</item>
+ <item quantity="other">Додадени се <xliff:g id="NUMBER_1">%s</xliff:g> контроли.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Контроли"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Изберете контроли за брз пристап"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Омилени"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Сите"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Не можеше да се вчита списокот со сите контроли."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Друга"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index ba78113..2e6f6f5 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"അനുവദിക്കുക"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ഡീബഗ്ഗിംഗ് അനുവദനീയമല്ല"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ഉപകരണത്തിൽ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്തിരിക്കുന്ന ഉപയോക്താവിന് USB ഡീബഗ്ഗിംഗ് ഓണാക്കാനാകില്ല. ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ പ്രാഥമിക ഉപയോക്താവിലേക്ക് മാറുക."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ഈ നെറ്റ്വർക്കിൽ വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ അനുവദിക്കണോ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"നെറ്റ്വർക്കിന്റെ പേര് (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nവൈഫൈ വിലാസം (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ഈ നെറ്റ്വർക്കിൽ എപ്പോഴും അനുവദിക്കുക"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"അനുവദിക്കൂ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ അനുവദനീയമല്ല"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ഉപകരണത്തിൽ ഇപ്പോൾ സൈൻ ഇൻ ചെയ്തിരിക്കുന്ന ഉപയോക്താവിന് വയർലെസ് ഡീബഗ്ഗ് ചെയ്യൽ ഓണാക്കാനാകില്ല. ഈ ഫീച്ചർ ഉപയോഗിക്കാൻ പ്രാഥമിക ഉപയോക്താവിലേക്ക് മാറുക."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB പോർട്ട് പ്രവർത്തനരഹിതമാക്കി"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ദ്രാവകത്തിൽ നിന്നോ പൊടിയിൽ നിന്നോ നിങ്ങളുടെ ഉപകരണത്തെ പരിരക്ഷിക്കാനായി USB പോർട്ട് പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നതിനാൽ അത് ആക്സസറികളൊന്നും തിരിച്ചറിയില്ല.\n\n USB പോർട്ട് വീണ്ടും ഉപയോഗിക്കാനാകുമ്പോൾ നിങ്ങളെ അറിയിക്കും."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ആക്സസറികളും ചാർജറുകളും കണ്ടെത്താൻ USB പോർട്ട് പ്രവർത്തനക്ഷമമാക്കുക"</string>
@@ -80,31 +86,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"സ്ക്രീൻഷോട്ട് എടുക്കാൻ വീണ്ടും ശ്രമിക്കുക"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"സ്റ്റോറേജ് ഇടം പരിമിതമായതിനാൽ സ്ക്രീൻഷോട്ട് സംരക്ഷിക്കാനാകുന്നില്ല"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"സ്ക്രീൻഷോട്ടുകൾ എടുക്കുന്നത് ആപ്പോ നിങ്ങളുടെ സ്ഥാപനമോ അനുവദിക്കുന്നില്ല"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"സ്ക്രീൻ റെക്കോർഡർ"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"ഒരു സ്ക്രീൻ റെക്കോർഡിംഗ് സെഷനായി നിലവിലുള്ള അറിയിപ്പ്"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"റെക്കോർഡിംഗ് ആരംഭിക്കണോ?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"റെക്കോർഡ് ചെയ്യുമ്പോൾ, നിങ്ങളുടെ സ്ക്രീനിൽ ദൃശ്യമാകുന്നതോ ഉപകരണത്തിൽ പ്ലേ ചെയ്യുന്നതോ ആയ ഏത് തന്ത്രപ്രധാന വിവരങ്ങളും Android സിസ്റ്റത്തിന് പകർത്താനാവും. പാസ്വേഡുകൾ, പേയ്മെന്റ് വിവരം, ഫോട്ടോകൾ, സന്ദേശങ്ങൾ, ഓഡിയോ എന്നിവ ഇതിൽ ഉൾപ്പെടുന്നു."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"ഓഡിയോ റെക്കോർഡ് ചെയ്യുക"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"ഉപകരണത്തിന്റെ ഓഡിയോ"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"സംഗീതം, കോളുകൾ, റിംഗ്ടോണുകൾ എന്നിവപോലെ നിങ്ങളുടെ ഉപകരണത്തിൽ നിന്നുള്ള ശബ്ദം"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"മൈക്രോഫോൺ"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"ഉപകരണത്തിന്റെ ഓഡിയോയും മൈക്രോഫോണും"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"ആരംഭിക്കുക"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"സ്ക്രീൻ റെക്കോർഡ് ചെയ്യുന്നു"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"സ്ക്രീനും ഓഡിയോയും റെക്കോർഡ് ചെയ്യുന്നു"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"സ്ക്രീനിൽ തൊടുന്ന ഭാഗങ്ങൾ കാണിക്കുക"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"നിർത്താൻ ടാപ്പ് ചെയ്യുക"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"നിർത്തുക"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"താൽക്കാലികമായി നിർത്തുക"</string>
@@ -117,8 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"സ്ക്രീൻ റെക്കോർഡിംഗ് ഇല്ലാതാക്കി"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"സ്ക്രീൻ റെക്കോർഡിംഗ് ഇല്ലാതാക്കുന്നതിൽ പിശക്"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"അനുമതികൾ ലഭിച്ചില്ല"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"സ്ക്രീൻ റെക്കോർഡിംഗ് ആരംഭിക്കുന്നതിൽ പിശക്"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB ഫയൽ കൈമാറൽ ഓപ്ഷനുകൾ"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"ഒരു മീഡിയ പ്ലേയറായി (MTP) മൗണ്ടുചെയ്യുക"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"ഒരു ക്യാമറയായി (PTP) മൗണ്ടുചെയ്യുക"</string>
@@ -499,9 +492,9 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"വീണ്ടും കാണിക്കരുത്"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"എല്ലാം മായ്ക്കുക"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"മാനേജ് ചെയ്യുക"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"ചരിത്രം"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"നിശബ്ദ അറിയിപ്പുകൾ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"മുന്നറിയിപ്പ് നൽകുന്ന അറിയിപ്പുകൾ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"സംഭാഷണങ്ങൾ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"എല്ലാ നിശബ്ദ അറിയിപ്പുകളും മായ്ക്കുക"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'ശല്യപ്പെടുത്തരുത്\' വഴി അറിയിപ്പുകൾ താൽക്കാലികമായി നിർത്തി"</string>
@@ -700,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ശബ്ദമോ വൈബ്രേഷനോ ഇല്ലാതെ ശ്രദ്ധ കേന്ദ്രീകരിക്കാൻ നിങ്ങളെ സഹായിക്കുന്നു."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ശബ്ദമോ വെെബ്രേഷനോ ഉപയോഗിച്ച് നിങ്ങളുടെ ശ്രദ്ധ ക്ഷണിക്കുന്നു."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ഈ ഉള്ളടക്കത്തിലേക്ക് ഒരു ഫ്ലോട്ടിംഗ് കുറുക്കുവഴി ഉപയോഗിച്ച് നിങ്ങളുടെ ശ്രദ്ധ നിലനിർത്തുന്നു."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"അടുത്തിടെയുള്ള ബബിളുകൾ ഒന്നുമില്ല"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"അടുത്തിടെയുള്ള Bubbles-ഉം ഡിസ്മിസ് ചെയ്ത Bubbles-ഉം ഇവിടെ ദൃശ്യമാവും."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ഈ അറിയിപ്പുകൾ പരിഷ്ക്കരിക്കാനാവില്ല."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"അറിയിപ്പുകളുടെ ഈ ഗ്രൂപ്പ് ഇവിടെ കോണ്ഫിഗര് ചെയ്യാൻ കഴിയില്ല"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"പ്രോക്സി അറിയിപ്പ്"</string>
@@ -726,25 +717,18 @@
<string name="notification_done" msgid="6215117625922713976">"പൂർത്തിയായി"</string>
<string name="inline_undo" msgid="9026953267645116526">"പഴയപടിയാക്കുക"</string>
<string name="demote" msgid="6225813324237153980">"ഈ അറിയിപ്പ് സംഭാഷണമല്ലെന്ന് അടയാളപ്പെടുത്തുക"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"പ്രധാനപ്പെട്ട സംഭാഷണം"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"പ്രധാനപ്പെട്ട സംഭാഷണമല്ല"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"നിശബ്ദമാക്കി"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"മുന്നറിയിപ്പ് നൽകൽ"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"ബബ്ൾ ആയി കാണിക്കുക"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"ബബിളുകൾ നീക്കം ചെയ്യുക"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"ഹോം സ്ക്രീനിലേക്ക് ചേർക്കുക"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"അറിയിപ്പ് നിയന്ത്രണങ്ങൾ"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"അറിയിപ്പ് സ്നൂസ് ഓപ്ഷനുകൾ"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"എന്നെ ഓർമ്മിപ്പിക്കുക"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"ക്രമീകരണം"</string>
<string name="snooze_undo" msgid="60890935148417175">"പഴയപടിയാക്കുക"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"<xliff:g id="TIME_AMOUNT">%1$s</xliff:g> സമയത്തേക്ക് സ്നൂസ് ചെയ്തു"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +800,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"ഡാറ്റാ സേവർ ഓഫാണ്"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"ഓൺ"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"ഓഫ്"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"ലഭ്യമല്ല"</string>
<string name="nav_bar" msgid="4642708685386136807">"നാവിഗേഷൻ ബാർ"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"ലേഔട്ട്"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"അധിക ഇടത് ബട്ടൺ തരം"</string>
@@ -996,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ചുവടെ ഇടതുഭാഗത്തേക്ക് നീക്കുക"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ചുവടെ വലതുഭാഗത്തേക്ക് നീക്കുക"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ഡിസ്മിസ് ചെയ്യുക"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്തു. മാറ്റങ്ങൾ വരുത്താൻ ക്രമീകരണത്തിലേക്ക് പോവുക."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"സിസ്റ്റം നാവിഗേഷൻ അപ്ഡേറ്റ് ചെയ്യാൻ ക്രമീകരണത്തിലേക്ക് പോവുക"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"സ്റ്റാൻഡ്ബൈ"</string>
@@ -1005,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ദ്രുത നിയന്ത്രണങ്ങൾ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"നിയന്ത്രണങ്ങൾ ചേർക്കുക"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"നിയന്ത്രണങ്ങൾ ചേർക്കാൻ ഒരു ആപ്പ് തിരഞ്ഞെടുക്കുക"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">നിലവിലെ <xliff:g id="NUMBER_1">%s</xliff:g> പ്രിയപ്പെട്ടവ.</item>
- <item quantity="one">നിലവിലെ <xliff:g id="NUMBER_0">%s</xliff:g> പ്രിയപ്പെട്ടത്.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"നിയന്ത്രണങ്ങൾ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"അതിവേഗ ആക്സസിനുള്ള നിയന്ത്രണങ്ങൾ തിരഞ്ഞെടുക്കുക"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"പ്രിയപ്പെട്ടവ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"എല്ലാം"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"എല്ലാ നിയന്ത്രണങ്ങളുടെയും ലിസ്റ്റ് ലോഡ് ചെയ്യാനായില്ല."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index cdb3995..ea93816 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Зөвшөөрөх"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB алдаа засалт хийх боломжгүй"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Энэ төхөөрөмжид нэвтэрсэн хэрэглэгч USB дебаг хийх онцлогийг асаах боломжгүй байна. Энэ онцлогийг ашиглахын тулд үндсэн хэрэглэгч рүү сэлгэнэ үү."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Энэ сүлжээн дээр утасгүй дебагийг зөвшөөрөх үү?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Сүлжээний нэр (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi хаяг (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Энэ сүлжээн дээр үргэлж зөвшөөрөх"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Зөвшөөрөх"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Утасгүй дебагийг зөвшөөрөөгүй байна"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Энэ төхөөрөмжид одоогоор нэвтэрсэн байгаа хэрэглэгч утасгүй дебагийг асаах боломжгүй. Энэ онцлогийг ашиглахын тулд үндсэн хэрэглэгч рүү сэлгэнэ үү."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB портыг идэвхгүй болгосон"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Таны төхөөрөмжийг шингэн зүйл эсвэл бохирдлоос хамгаалахын тулд USB портыг идэвхгүй болгосон бөгөөд энэ нь ямар ч дагалдах хэрэгслийг илрүүлэхгүй.\n\nТанд USB портыг дахин ашиглахад аюулгүй болох үед мэдэгдэх болно."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Цэнэглэгч болон нэмэлт хэрэгслийг илрүүлэхийн тулд USB портыг идэвхжүүлсэн"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Удирдах"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Түүх"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Чимээгүй мэдэгдэл"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Сэрэмжлүүлэх мэдэгдэл"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Харилцан яриа"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Бүх чимээгүй мэдэгдлийг арилгах"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Бүү саад бол горимын түр зогсоосон мэдэгдэл"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Дуу эсвэл чичиргээгүйгээр танд төвлөрөхөд тусална."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Дуу эсвэл чичиргээгүйгээр таны анхаарлыг татна."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Энэ контентын хөвөн гарч ирэх товчлолтойгоор таны анхаарлыг татдаг."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Саяхны бөмбөлөг алга байна"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Саяхны бөмбөлгүүд болон үл хэрэгссэн бөмбөлгүүд энд харагдана."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эдгээр мэдэгдлийг өөрчлөх боломжгүй."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Энэ бүлэг мэдэгдлийг энд тохируулах боломжгүй байна"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Прокси хийсэн мэдэгдэл"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Зүүн доош зөөх"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Баруун доош зөөх"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Үл хэрэгсэх"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Системийн навигацыг шинэчиллээ. Өөрчлөхийн тулд Тохиргоо руу очно уу."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Системийн навигацыг шинэчлэхийн тулд Тохиргоо руу очно уу"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Зогсолтын горим"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Шуурхай хяналтууд"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Хяналт нэмэх"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Хяналт нэмэх апп сонгох"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Одоогоор <xliff:g id="NUMBER_1">%s</xliff:g> дуртай зүйл байна.</item>
- <item quantity="one">Одоогоор <xliff:g id="NUMBER_0">%s</xliff:g> дуртай зүйл байна.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> хяналтыг нэмлээ.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> хяналтыг нэмлээ.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Хяналт"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Шуурхай хандалтын хяналт сонгох"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Дуртай"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Бүх"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Бүх хяналтын жагсаалтыг ачаалж чадсангүй."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Бусад"</string>
</resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 9012e88..3c7e18e 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"अनुमती द्या"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB डीबग करण्यास अनुमती नाही"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"सध्या या डीव्हाइसमध्ये साइन इन केलेला वापरकर्ता USB डीबग करणे चालू करू शकत नाही. हे वैशिष्ट्य वापरण्यासाठी, प्राथमिक वापरकर्त्यावर स्विच करा."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"या नेटवर्कवर वायरलेस डीबगिंग करण्याला अनुमती द्यायची का?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"नेटवर्कचे नाव (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nवाय-फाय ॲड्रेस (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"या नेटवर्कवर नेहमी अनुमती द्या"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"अनुमती द्या"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"वायरलेस डीबगिंग करण्याला अनुमती नाही"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"सध्या या डिव्हाइसमध्ये साइन इन केलेला वापरकर्ता वायरलेस डीबगिंग सुरू करू शकत नाही. हे वैशिष्ट्य वापरण्यासाठी प्राथमिक वापरकर्त्यावर स्विच करा."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB पोर्ट बंद करा"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"तुमच्या डिव्हाइसला ओलावा किंवा धूळीपासून संरक्षित करण्यासाठी, USB पोर्ट बंद आहे आणि अॅक्सेसरी डिटेक्ट करणार नाही. \n\n तुम्हाला USB पोर्ट पुन्हा वापरणे ठीक आहे तेव्हा सूचित केले जाईल."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"चार्जर आणि अॅक्सेसरी शोधण्यासाठी USB पोर्ट सुरू केलेले आहे"</string>
@@ -82,11 +88,11 @@
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"अॅप किंवा आपल्या संस्थेद्वारे स्क्रीनशॉट घेण्याची अनुमती नाही"</string>
<string name="screenrecord_name" msgid="2596401223859996572">"स्क्रीन रेकॉर्डर"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"स्क्रीन रेकॉर्ड सत्रासाठी सुरू असलेली सूचना"</string>
- <string name="screenrecord_start_label" msgid="1750350278888217473">"रेकॉर्डिंग सुरू करायची आहे का?"</string>
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"रेकॉर्डिंग सुरू करायचे आहे का?"</string>
<string name="screenrecord_description" msgid="1123231719680353736">"रेकॉर्डिंग करताना, Android सिस्टम तुमच्या स्क्रीनवर दिसणारी किंवा तुमच्या डिव्हाइसवर प्ले केलेली कोणतीही संवेदनशील माहिती कॅप्चर करू शकते. यात पासवर्ड, पेमेंट माहिती, फोटो, मेसेज आणि ऑडिओचा समावेश आहे."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"ऑडिओ रेकॉर्ड करा"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"डिव्हाइस ऑडिओ"</string>
- <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"तुमच्या डिव्हाइसवरील आवाज जसे संगीत, कॉल आणि रिंगटोन"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"तुमच्या डिव्हाइसवरील आवाज जसे की, संगीत, कॉल आणि रिंगटोन"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"मायक्रोफोन"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"डिव्हाइस ऑडिओ आणि मायक्रोफोन"</string>
<string name="screenrecord_start" msgid="330991441575775004">"सुरू"</string>
@@ -105,7 +111,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"स्क्रीन रेकॉर्डिंग हटवले"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"स्क्रीन रेकॉर्डिंग हटवताना एरर आली"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"परवानग्या मिळवता आल्या नाहीत"</string>
- <string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रीन रेकॉर्डिंग सुरू एरर आली"</string>
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"स्क्रीन रेकॉर्डिंग सुरू करताना एरर आली"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB फाईल स्थानांतरण पर्याय"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"मीडिया प्लेअर म्हणून माउंट करा (MTP)"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"कॅमेरा म्हणून माउंट करा (PTP)"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"व्यवस्थापित करा"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"इतिहास"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"सायलंट सूचना"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"लक्ष वेधून घेणाऱ्या सूचना"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"संभाषणे"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"सर्व सायलंट सूचना साफ करा"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"व्यत्यय आणून नकाद्वारे सूचना थांबवल्या"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"आवाज किंवा व्हायब्रेशनशिवाय तुम्हाला लक्ष केंद्रित करण्यास मदत करते."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"आवाज किंवा व्हायब्रेशनने तुमचे लक्ष वेधून घेते."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"या आशयाच्या फ्लोटिंग शॉर्टकटसह तुमचे लक्ष केंद्रित करते."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"अलीकडील कोणतेही बबल नाहीत"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"अलीकडील बबल आणि डिसमिस केलेले बबल येथे दिसतील."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"या सूचनांमध्ये सुधारणा केली जाऊ शकत नाही."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"या सूचनांचा संच येथे कॉन्फिगर केला जाऊ शकत नाही"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"प्रॉक्सी केलेल्या सूचना"</string>
@@ -713,7 +718,7 @@
<string name="inline_undo" msgid="9026953267645116526">"पहिल्यासारखे करा"</string>
<string name="demote" msgid="6225813324237153980">"ही सूचना संभाषण नाही म्हणून खूण करा"</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"महत्त्वाचे संभाषण"</string>
- <string name="notification_conversation_unfavorite" msgid="181383708304763807">"महत्वाचे संभाषण नाही"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"महत्त्वाचे संभाषण नाही"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"शांत केले"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"सूचना देत आहे"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"बबल दाखवा"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"तळाशी डावीकडे हलवा"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"तळाशी उजवीकडे हलवा"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"डिसमिस करा"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"सिस्टम नेव्हिगेशन अपडेट केले. बदल करण्यासाठी, सेटिंग्जवर जा."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"सिस्टम नेव्हिगेशन अपडेट करण्यासाठी सेटिंग्जवर जा"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टँडबाय"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"क्विक नियंत्रणे"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"नियंत्रणे जोडा"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ज्यामधून नियंत्रणे जोडायची आहेत ते ॲप निवडा"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> सध्याचे आवडते.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> सध्याचे आवडते.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"नियंत्रणे"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"झटपट अॅक्सेससाठी नियंत्रणे निवडा"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"आवडते"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"सर्व"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"सर्व नियंत्रणांची सूची लोड करता आली नाही."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index 7b05493..6d266737 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Benarkan"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Penyahpepijatan USB tidak dibenarkan"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Pengguna yang log masuk ke peranti ini pada masa ini tidak boleh menghidupkan penyahpepijatan USB. Untuk menggunakan ciri ini, tukar kepada pengguna utama."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Benarkan penyahpepijatan wayarles pada rangkaian ini?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nama Rangkaian (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAlamat Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Sentiasa benarkan pada rangkaian ini"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Benarkan"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Penyahpepijatan wayarles tidak dibenarkan"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Pengguna yang telah log masuk ke peranti ini pada masa ini tidak boleh menghidupkan penyahpepijatan wayarles. Untuk menggunakan ciri ini, tukar kepada pengguna utama."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB dilumpuhkan"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Untuk melindungi peranti anda daripada cecair atau serpihan, port USB dilumpuhkan dan tidak akan mengesan sebarang aksesori.\n\nAnda akan dimaklumi apabila selamat untuk menggunakan port USB lagi."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB didayakan untuk mengesan pengecas dan aksesori"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Urus"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Sejarah"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Pemberitahuan senyap"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Pemberitahuan memaklumi"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Perbualan"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Kosongkan semua pemberitahuan senyap"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Pemberitahuan dijeda oleh Jangan Ganggu"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Membantu anda fokus tanpa bunyi atau getaran."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Menarik perhatian anda dengan bunyi atau getaran."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Memastikan anda memberikan perhatian dengan pintasan terapung ke kandungan ini."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Tiada gelembung terbaharu"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Gelembung baharu dan gelembung yang diketepikan akan dipaparkan di sini."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Pemberitahuan ini tidak boleh diubah suai."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kumpulan pemberitahuan ini tidak boleh dikonfigurasikan di sini"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Pemberitahuan berproksi"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Alihkan ke bawah sebelah kiri"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Alihkan ke bawah sebelah kanan"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ketepikan"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigasi sistem dikemas kini. Untuk membuat perubahan, pergi ke Tetapan."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Pergi ke Tetapan untuk mengemas kini navigasi sistem"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tunggu sedia"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Kawalan Pantas"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Tambah Kawalan"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Pilih apl untuk digunakan bagi menambah kawalan"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kegemaran semasa.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kegemaran semasa.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kawalan ditambah.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kawalan ditambah.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kawalan"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Pilih kawalan untuk akses pantas"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Kegemaran"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Semua"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Senarai semua kawalan tidak dapat dimuatkan."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Lain-lain"</string>
</resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index d3b2941..dd3e6c1 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ခွင့်ပြုရန်"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB အမှားပြင်ဆင်ခြင်း ခွင့်မပြုပါ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် USB အမှားပြင်ဆင်ခြင်းကို ဖွင့်၍မရပါ။ ဤဝန်ဆောင်မှုကို အသုံးပြုရန် အဓိကအသုံးပြုသူအဖြစ်သို့ ပြောင်းပါ။"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ဤကွန်ရက်တွင် ကြိုးမဲ့ အမှားရှာပြင်ခြင်းကို ခွင့်ပြုမလား။"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ကွန်ရက်အမည် (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi လိပ်စာ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ဤကွန်ရက်ကို အမြဲခွင့်ပြုပါ"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ခွင့်ပြုရန်"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ကြိုးမဲ့ အမှားပြင်ဆင်ခြင်းကို ခွင့်မပြုပါ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ဤစက်ပစ္စည်းသို့ လက်ရှိဝင်ရောက်ထားသည့် အသုံးပြုသူသည် ကြိုးမဲ့ အမှားပြင်ဆင်ခြင်းကို ဖွင့်၍မရပါ။ ဤဝန်ဆောင်မှုကို အသုံးပြုရန် အဓိကအသုံးပြုသူအဖြစ်သို့ ပြောင်းပါ။"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB ပို့တ် ပိတ်ပြီးပြီ"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB ပို့တ်ကို ပိတ်၍ သင့်ကိရိယာသို့ အရည် သို့မဟုတ် အမှိုက်စများ မဝင်စေရန် ကာကွယ်ပါ၊ မည်သည့် အပိုပစ္စည်းကိုမျှ အာရုံခံသိရှိနိုင်တော့မည် မဟုတ်ပါ။\n\nUSB ပို့တ်ကို ပြန်အသုံးပြုနိုင်သည့်အခါ သင့်ကိုအကြောင်းကြားပါမည်။"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"အားသွင်းကိရိယာနှင့် ဆက်စပ်ပစ္စည်းများ သိရှိရန် USB ပို့တ် ဖွင့်ထားသည်"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"စီမံရန်"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"မှတ်တမ်း"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"အကြောင်းကြားချက်များကို အသံတိတ်ခြင်း"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"အကြောင်းကြားချက်များကို သတိပေးခြင်း"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"စကားဝိုင်းများ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"အသံတိတ် အကြောင်းကြားချက်များအားလုံးကို ရှင်းလင်းရန်"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"အကြောင်းကြားချက်များကို \'မနှောင့်ယှက်ရ\' က ခေတ္တရပ်ထားသည်"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"အသံ သို့မဟုတ် တုန်ခါမှု မပါဘဲ အာရုံစိုက်နိုင်စေရန် ကူညီပေးသည်။"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"အသံ သို့မဟုတ် တုန်ခါမှုဖြင့် အာရုံစိုက်လာအောင် ပြုလုပ်သည်။"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"အကြောင်းအရာကို floating shortcut ကိုသုံး၍ အာရုံစိုက်လာအောင်လုပ်ပါ။"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"မကြာမီက ပူဖောင်းကွက်များ မရှိပါ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"လတ်တလော ပူဖောင်းကွက်များနှင့် ပိတ်လိုက်သော ပူဖောင်းကွက်များသည် ဤနေရာတွင် ပေါ်ပါမည်။"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ဤအကြောင်းကြားချက်များကို ပြုပြင်၍ မရပါ။"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ဤအကြောင်းကြားချက်အုပ်စုကို ဤနေရာတွင် စီစဉ်သတ်မှတ်၍ မရပါ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ပရောက်စီထည့်ထားသော အကြောင်းကြားချက်"</string>
@@ -974,6 +979,9 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ဘယ်အောက်ခြေသို့ ရွှေ့ရန်"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ညာအောက်ခြေသို့ ရွှေ့ပါ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ပယ်ရန်"</string>
+ <string name="bubbles_user_education_title" msgid="3385222165904578710">"ချတ်များကို အရှေ့တွင်ထားခြင်း"</string>
+ <string name="bubbles_user_education_description" msgid="6663205638091146934">"<xliff:g id="APP_NAME">%1$s</xliff:g> မှ ချတ်အသစ်များသည် ပူဖောင်းများအဖြစ် ပေါ်လာပါမည်။ ဖွင့်ရန် ပူဖောင်းကို တို့ပါ။ ၎င်းကို ဖိဆွဲ၍ ရွှေ့ပါ။\n\nပူဖောင်းကို တို့ပါ"</string>
+ <string name="bubbles_user_education_manage" msgid="1391639189507036423">"ဤအက်ပ်မှနေ၍ ပူဖောင်းများကို ပိတ်ရန်အတွက် \'စီမံရန်\' ကို တို့ပါ"</string>
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ပြီးပါပြီ။ အပြောင်းအလဲများ ပြုလုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ။"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"စနစ်လမ်းညွှန်ခြင်း အပ်ဒိတ်လုပ်ရန် \'ဆက်တင်များ\' သို့သွားပါ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"အသင့်အနေအထား"</string>
@@ -983,16 +991,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"အမြန်ထိန်းချုပ်မှုများ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"ထိန်းချုပ်မှုများကို ထည့်ပါ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ထိန်းချုပ်မှုများ ထည့်လိုသည့် အက်ပ်တစ်ခုကို ရွေးချယ်ပါ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">လက်ရှိ အနှစ်သက်ဆုံး <xliff:g id="NUMBER_1">%s</xliff:g> ခု</item>
- <item quantity="one">လက်ရှိ အနှစ်သက်ဆုံး <xliff:g id="NUMBER_0">%s</xliff:g> ခု</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">ခလုတ် <xliff:g id="NUMBER_1">%s</xliff:g> ခု ထည့်လိုက်သည်။</item>
+ <item quantity="one">ခလုတ် <xliff:g id="NUMBER_0">%s</xliff:g> ခု ထည့်လိုက်သည်။</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"ထိန်းချုပ်မှုများ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"အမြန်သုံးခွင့်အတွက် ထိန်းချုပ်မှုများကို ရွေးချယ်ပါ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"အကြိုက်ဆုံး"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"အားလုံး"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"ထိန်းချုပ်မှုအားလုံး၏ စာရင်းကို ဖွင့်၍မရပါ။"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"အခြား"</string>
</resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index efccd2b..5743215 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Tillat"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-feilsøking er ikke tillatt"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Brukeren som for øyeblikket er logget på denne enheten, kan ikke slå på USB-feilsøking. For å bruke denne funksjonen, bytt til hovedbrukeren."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vil du tillate trådløs feilsøking på dette nettverket?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nettverksnavn (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-adresse (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Tillat alltid på dette nettverket"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Tillat"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Trådløs feilsøking er ikke tillatt"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Brukeren som for øyeblikket er logget på denne enheten, kan ikke slå på trådløs feilsøking. For å bruke denne funksjonen, bytt til primærbrukeren."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-porten er deaktivert"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"For å beskytte enheten din mot væsker eller rusk er USB-porten deaktivert og kan ikke oppdage tilbehør.\n\nDu blir varslet når det er trygt å bruke USB-porten igjen."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Registrering av ladere og tilbehør er slått på for USB-porten"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Administrer"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Logg"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Lydløse varsler"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Varsler med varsling"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Samtaler"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Fjern alle lydløse varsler"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Varsler er satt på pause av «Ikke forstyrr»"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Hjelper deg med å fokusere uten lyd eller vibrering."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Får oppmerksomheten din med lyd eller vibrering."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Holder deg oppmerksom med en svevende snarvei til dette innholdet."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Ingen nylige bobler"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Nylige bobler og avviste bobler vises her."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Disse varslene kan ikke endres."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Denne varselgruppen kan ikke konfigureres her"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Omdirigert varsel"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Flytt til nederst til venstre"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Flytt til nederst til høyre"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Avvis"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigeringen er oppdatert. For å gjøre endringer, gå til Innstillinger."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Gå til Innstillinger for å oppdatere systemnavigeringen"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ventemodus"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Hurtigkontroller"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Legg til kontroller"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Velg en app du vil legge til kontroller for"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> nåværende favoritter.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> nåværende favoritt.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontroller er lagt til.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontroll er lagt til.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Velg kontroller for rask tilgang"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritter"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Alle"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Listen over alle kontroller kunne ikke lastes inn."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Annet"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index def2320..ef80cdc 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"अनुमति दिनुहोस्"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB डिबग गर्न अनुमति छैन"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"हाल यस यन्त्रमा साइन इन हुनुभएको प्रयोगकर्ताले USB डिबग सक्रिय गर्न सक्नुहुन्न। यो सुविधाको प्रयोग गर्न प्राथमिक प्रयोगकर्तामा बदल्नुहोस्।"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"यस नेटवर्कमा वायरलेस डिबग गर्न दिने हो?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"नेटवर्कको नाम (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi ठेगाना (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"यस नेटवर्कमा सधैँ अनुमति दिनुहोस्"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"अनुमति दिनुहोस्"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"वायरलेस डिबग प्रक्रियाका लागि अनुमति छैन"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"हाल यस यन्त्रमा साइन इन हुनुभएका प्रयोगकर्ता वायरलेस डिबग प्रक्रिया सक्रिय गर्न सक्नुहुन्न। यो सुविधाको प्रयोग गर्न प्राथमिक प्रयोगकर्ताको खातामार्फत साइन इन गर्नुहोस्।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB पोर्ट असक्षम पारियो"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"तपाईंको यन्त्रलाई तरल पदार्थ वा धुलोबाट जोगाउन यसको USB पोर्ट असक्षम पारिएको छ र यसले कुनै पनि सहायक उपकरणहरू पहिचान गर्ने छैन।\n\nउक्त USB पोर्ट फेरि प्रयोग गर्दा हुन्छ भने तपाईंलाई यसबारे सूचित गरिने छ।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"चार्जर तथा सामानहरू पत्ता लगाउन सक्षम पारिएको USB पोर्ट"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"व्यवस्थित गर्नुहोस्"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"इतिहास"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"मौन सूचनाहरू"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"कम्पन वा आवाजसहितका सूचनाहरू"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"वार्तालापहरू"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"सबै मौन सूचनाहरू हटाउनुहोस्"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"बाधा नपुऱ्याउनुहोस् नामक मोडमार्फत पज पारिएका सूचनाहरू"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"तपाईंलाई आवाज वा कम्पनविना ध्यान केन्द्रित गर्न मद्दत गर्छ।"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ध्वनि वा कम्पनमार्फत तपाईंको ध्यान आकर्षित गर्छ।"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"फ्लोटिङ सर्टकटमार्फत यो सामग्रीतर्फ तपाईंको ध्यान आकर्षित गर्दछ।"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"हालसालै खारेज गरिएको कुनै पनि बबल छैन"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"हालैका बबल र खारेज गरिएका बबलहरू यहाँ देखिने छन्।"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"यी सूचनाहरू परिमार्जन गर्न मिल्दैन।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"यहाँबाट सूचनाहरूको यो समूह कन्फिगर गर्न सकिँदैन"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"प्रोक्सीमार्फत आउने सूचना"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"पुछारमा बायाँतिर सार्नुहोस्"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"पुछारमा दायाँतिर सार्नुहोस्"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"हटाउनुहोस्"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"प्रणालीको नेभिगेसन अद्यावधिक गरियो। परिवर्तन गर्न सेटिङमा जानुहोस्।"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"प्रणालीको नेभिगेसन अद्यावधिक गर्न सेटिङमा जानुहोस्"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्ट्यान्डबाई"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"द्रुत नियन्त्रणहरू"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"नियन्त्रणहरू थप्नुहोस्"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"नियन्त्रणहरू जुन अनुप्रयोगबाट थप्ने हो त्यो अनुप्रयोग छनौट गर्नुहोस्"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">हालका मन पर्ने <xliff:g id="NUMBER_1">%s</xliff:g> कुराहरू।</item>
- <item quantity="one">हालको मन पर्ने <xliff:g id="NUMBER_0">%s</xliff:g> कुरा।</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"नियन्त्रणहरू"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"द्रुत पहुँचका लागि नियन्त्रणहरू छनौट गर्नुहोस्"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"मन पर्ने कुराहरू"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"सबै"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"सबै नियन्त्रणहरूको सूची लोड गर्न सकिएन।"</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 35dd6f5..ae9b829 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Toestaan"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-foutopsporing niet toegestaan"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"De gebruiker die momenteel is ingelogd op dit apparaat, kan USB-foutopsporing niet inschakelen. Als je deze functie wilt gebruiken, schakel je naar de primaire gebruiker."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Draadloze foutopsporing toestaan in dit netwerk?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Netwerknaam (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWifi-adres (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Altijd toestaan in dit netwerk"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Toestaan"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Draadloze foutopsporing niet toegestaan"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"De gebruiker die momenteel is ingelogd op dit apparaat, kan draadloze foutopsporing niet inschakelen. Als je deze functie wilt gebruiken, schakel je over naar de primaire gebruiker."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-poort uitgeschakeld"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"De USB-poort is uitgeschakeld en detecteert geen accessoires, zodat je apparaat wordt beschermd tegen vloeistof en vuil.\n\nJe ontvangt een melding wanneer je de USB-poort weer kunt gebruiken."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-poort kan opladers en accessoires detecteren"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Beheren"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Geschiedenis"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Stille meldingen"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Meldingen met waarschuwing"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Gesprekken"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Alle stille meldingen wissen"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Meldingen onderbroken door \'Niet storen\'"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Trekt je aandacht met geluid of trillingen."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Trekt de aandacht met een zwevende snelkoppeling naar deze content."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Geen recente ballonnen"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Onlangs gesloten ballonnen worden hier weergegeven zodat je ze gemakkelijk kunt terughalen."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Recente bubbels en gesloten bubbels worden hier weergegeven."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Deze meldingen kunnen niet worden aangepast."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Deze groep meldingen kan hier niet worden geconfigureerd"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Melding via proxy"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Naar linksonder verplaatsen"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Naar rechtsonder verplaatsen"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Sluiten"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systeemnavigatie geüpdatet. Als je wijzigingen wilt aanbrengen, ga je naar Instellingen."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Ga naar Instellingen om de systeemnavigatie te updaten"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stand-by"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Snelle bedieningselementen"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Bedieningselementen toevoegen"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Kies een app waaruit je bedieningselementen wilt toevoegen"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> huidige favorieten.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> huidige favoriet.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> bedieningselementen toegevoegd.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> bedieningselement toegevoegd.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Bedieningselementen"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Kies bedieningselementen voor snelle toegang"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favorieten"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Alle"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Kan lijst met alle bedieningselementen niet laden."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Overig"</string>
</resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 6a59071..9aad495 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USBରେ ଡିବଗ୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ସମ୍ପ୍ରତି ସାଇନ୍-ଇନ୍ କରିଥିବା ୟୁଜର୍ ଜଣକ ଏହି ଡିଭାଇସରେ USB ଡିବଗିଙ୍ଗ ଅନ୍ କରିପାରିବେ ନାହିଁ। ଏହି ବୈଶିଷ୍ଟ୍ୟ ବ୍ୟବହାର କରିବାକୁ, ପ୍ରାଥମିକ ୟୁଜର୍ରେ ସାଇନ୍-ଇନ୍ କରନ୍ତୁ।"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ଏହି ନେଟୱାର୍କରେ ୱାୟାରଲେସ୍ ଡିବଗିଂ ପାଇଁ ଅନୁମତି ଦେବେ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ନେଟୱାର୍କ ନାମ (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nୱାଇଫାଇ ଠିକଣା (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ସର୍ବଦା ଏହି ନେଟୱାର୍କରେ ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ଅନୁମତି ଦିଅନ୍ତୁ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ୱାୟାରଲେସ୍ ଡିବଗିଂ ପାଇଁ ଅନୁମତି ନାହିଁ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ଉପଯୋଗକର୍ତ୍ତା ବର୍ତ୍ତମାନ ସାଇନ୍-ଇନ୍ କରିଥିବା ଏହି ଡିଭାଇସରେ ୱାୟାରଲେସ୍ ଡିବଗିଂ ଚାଲୁ କରିପାରିବେ ନାହିଁ। ଏହି ଫିଚର୍ ବ୍ୟବହାର କରିବା ପାଇଁ ପ୍ରାଥମିକ ଉପଯୋଗକର୍ତ୍ତାରେ ସ୍ୱିଚ୍ କରନ୍ତୁ।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB ପୋର୍ଟକୁ ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ଆପଣଙ୍କ ଡିଭାଇସ୍କୁ ତରଳ ପଦାର୍ଥ ଏବଂ ଧୂଳିରୁ ସୁରକ୍ଷିତ ରଖିବା ପାଇଁ, USB ପୋର୍ଟକୁ ଅକ୍ଷମ କରାଯାଇଛି ଏବଂ ଏହା କୌଣସି ଉପକରଣ ଚିହ୍ନଟ କରିବ ନାହିଁ। \n\n ଯେତେବେଳେ USB ପୋର୍ଟ ପୁଣିି ବ୍ୟବହାର କରିବାକୁ ସୁରକ୍ଷିତ ହେବ, ସେତେବେଳେ ଆପଣଙ୍କୁ ସୂଚିତ କରାଯିବ।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ଚାର୍ଜର୍ ଏବଂ ଆକ୍ସେସରିଗୁଡ଼ିକୁ ଚିହ୍ନଟ କରିବାକୁ USB ପୋର୍ଟ ସକ୍ଷମ କରାଯାଇଛି"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ପରିଚାଳନା କରନ୍ତୁ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ଇତିହାସ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ନୀରବ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ଆଲର୍ଟ କରିବା ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ବାର୍ତ୍ତାଳାପଗୁଡ଼ିକ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ସମସ୍ତ ନୀରବ ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ଖାଲି କରନ୍ତୁ"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\"ବିରକ୍ତ କରନ୍ତୁ ନାହିଁ\" ବିକଳ୍ପ ଦ୍ୱାରା ବିଜ୍ଞପ୍ତି ପଜ୍ ହୋଇଛି"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ବିନା ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍ରେ ଆପଣଙ୍କୁ ଫୋକସ୍ କରିବାରେ ସାହାଯ୍ୟ କରେ।"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ସାଉଣ୍ଡ କିମ୍ବା ଭାଇବ୍ରେସନ୍ ମାଧ୍ୟମରେ ଆପଣଙ୍କର ଧ୍ୟାନ ଆକର୍ଷିତ କରିଥାଏ।"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ଏହି ବିଷୟବସ୍ତୁ ପାଇଁ ଏକ ଭାସମାନ ସର୍ଟକଟ୍ ସହ ଆପଣଙ୍କର ଧ୍ୟାନ ଦିଅନ୍ତୁ।"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ବର୍ତ୍ତମାନ କୌଣସି ବବଲ୍ ନାହିଁ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ବର୍ତ୍ତମାନର ବୁଦବୁଦଗୁଡ଼ିକ ଏବଂ ଖାରଜ କରାଯାଇଥିବା ବୁଦବୁଦଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯିବ।"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ ପରିବର୍ତ୍ତନ କରିହେବ ନାହିଁ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ଏଠାରେ ଏହି ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକର ଗ୍ରୁପ୍ କନଫ୍ୟୁଗର୍ କରାଯାଇପାରିବ ନାହିଁ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ବିଜ୍ଞପ୍ତି ପ୍ରକ୍ସୀ ହୋଇଛି"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ତଳ ବାମକୁ ନିଅନ୍ତୁ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ତଳ ଡାହାଣକୁ ନିଅନ୍ତୁ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ଖାରଜ କରନ୍ତୁ"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ ହୋଇଛି। ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ, ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ।"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ସିଷ୍ଟମ୍ ନାଭିଗେସନ୍ ଅପ୍ଡେଟ୍ କରିବା ପାଇଁ ସେଟିଂସ୍କୁ ଯାଆନ୍ତୁ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ଷ୍ଟାଣ୍ଡବାଏ"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ଦ୍ରୁତ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଯୋଗ କରନ୍ତୁ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"କେଉଁ ଆପରୁ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ ଯୋଗ କରିବେ ତାହା ଚୟନ କରନ୍ତୁ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g>ଟି ବର୍ତ୍ତମାନର ପସନ୍ଦ।</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g>ଟି ବର୍ତ୍ତମାନର ପସନ୍ଦ।</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ଶୀଘ୍ର ଆକ୍ସେସ୍ ପାଇଁ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକୁ ଚୟନ କରନ୍ତୁ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ପସନ୍ଦଗୁଡ଼ିକ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ସବୁ"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"ସବୁ ନିୟନ୍ତ୍ରଣର ତାଲିକା ଲୋଡ୍ କରିପାରିଲା ନାହିଁ।"</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index 3fe56fd..cbd278e 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ਕਰਨ ਦਿਓ"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ਡਿਬੱਗਿੰਗ ਦੀ ਆਗਿਆ ਨਹੀਂ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"The user currently signed in to this device can\'t turn on USB debugging. To use this feature, switch to the primary user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ਕੀ ਇਸ ਨੈੱਟਵਰਕ \'ਤੇ ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਦੀ ਇਜਾਜ਼ਤ ਦੇਣੀ ਹੈ?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ਨੈੱਟਵਰਕ ਨਾਮ (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nਵਾਈ-ਫਾਈ ਪਤਾ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ਇਸ ਨੈੱਟਵਰਕ \'ਤੇ ਹਮੇਸ਼ਾਂ ਇਜਾਜ਼ਤ ਦਿਓ"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ਆਗਿਆ ਦਿਓ"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਹੈ"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ਵਰਤਮਾਨ ਵਿੱਚ ਇਸ ਡੀਵਾਈਸ \'ਤੇ ਸਾਈਨ-ਇਨ ਕੀਤਾ ਵਰਤੋਂਕਾਰ ਵਾਇਰਲੈੱਸ ਡੀਬੱਗਿੰਗ ਨੂੰ ਚਾਲੂ ਨਹੀਂ ਕਰ ਸਕਦਾ। ਇਸ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਵਰਤਣ ਲਈ, ਮੁੱਖ ਵਰਤੋਂਕਾਰ \'ਤੇ ਬਦਲੋ।"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB ਪੋਰਟ ਬੰਦ ਕੀਤਾ ਗਿਆ"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਨੂੰ ਪਾਣੀ ਅਤੇ ਧੂੜ-ਮਿੱਟੀ ਤੋਂ ਬਚਾਉਣ ਲਈ, USB ਪੋਰਟ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਕੋਈ ਵੀ ਐਕਸੈਸਰੀ ਪਛਾਣੀ ਨਹੀਂ ਜਾਵੇਗੀ।\n\nUSB ਪੋਰਟ ਨੂੰ ਦੁਬਾਰਾ ਵਰਤਣਾ ਠੀਕ ਹੋਣ \'ਤੇ ਤੁਹਾਨੂੰ ਸੂਚਿਤ ਕੀਤਾ ਜਾਵੇਗਾ।"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ਚਾਰਜਰਾਂ ਅਤੇ ਉਪਸਾਧਨਾਂ ਦੀ ਪਛਾਣ ਕਰਨ ਲਈ USB ਪੋਰਟ ਚਾਲੂ ਹੈ"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"ਪ੍ਰਬੰਧਨ ਕਰੋ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ਇਤਿਹਾਸ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ਸ਼ਾਂਤ ਸੂਚਨਾਵਾਂ"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ਸੁਚੇਤ ਕਰਨ ਵਾਲੀਆਂ ਸੂਚਨਾਵਾਂ"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"ਗੱਲਾਂਬਾਤਾਂ"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ਸਾਰੀਆਂ ਖਾਮੋਸ਼ ਸੂਚਨਾਵਾਂ ਕਲੀਅਰ ਕਰੋ"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'ਪਰੇਸ਼ਾਨ ਨਾ ਕਰੋ\' ਵੱਲੋਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ਤੁਹਾਨੂੰ ਬਿਨਾਂ ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਦੇ ਫੋਕਸ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ਧੁਨੀ ਅਤੇ ਥਰਥਰਾਹਟ ਨਾਲ ਤੁਹਾਡਾ ਧਿਆਨ ਖਿੱਚਦੀ ਹੈ।"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ਇਸ ਸਮੱਗਰੀ ਦੇ ਅਸਥਿਰ ਸ਼ਾਰਟਕੱਟ ਨਾਲ ਆਪਣਾ ਧਿਆਨ ਕੇਂਦਰਿਤ ਰੱਖੋ।"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ਕੋਈ ਹਾਲੀਆ ਬੁਲਬੁਲਾ ਨਹੀਂ"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ਹਾਲੀਆ ਬੁਲਬੁਲੇ ਅਤੇ ਖਾਰਜ ਕੀਤੇ ਬੁਲਬੁਲੇ ਇੱਥੇ ਦਿਸਣਗੇ।"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ਇਹਨਾਂ ਸੂਚਨਾਵਾਂ ਨੂੰ ਸੋਧਿਆ ਨਹੀਂ ਜਾ ਸਕਦਾ।"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ਇਹ ਸੂਚਨਾਵਾਂ ਦਾ ਗਰੁੱਪ ਇੱਥੇ ਸੰਰੂਪਿਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ਇੱਕ ਐਪ ਦੀ ਥਾਂ \'ਤੇ ਦੂਜੀ ਐਪ ਰਾਹੀਂ ਦਿੱਤੀ ਗਈ ਸੂਚਨਾ"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ਹੇਠਾਂ ਵੱਲ ਖੱਬੇ ਲਿਜਾਓ"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ਹੇਠਾਂ ਵੱਲ ਸੱਜੇ ਲਿਜਾਓ"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ਖਾਰਜ ਕਰੋ"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਅੱਪਡੇਟ ਹੋ ਗਿਆ। ਤਬਦੀਲੀਆਂ ਕਰਨ ਲਈ, ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ।"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ਸਿਸਟਮ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਅੱਪਡੇਟ ਕਰਨ ਲਈ ਸੈਟਿੰਗਾਂ \'ਤੇ ਜਾਓ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ਸਟੈਂਡਬਾਈ"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"ਤਤਕਾਲ ਕੰਟਰੋਲ"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"ਕੰਟਰੋਲ ਸ਼ਾਮਲ ਕਰੋ"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ਉਹ ਐਪ ਚੁਣੋ ਜਿੱਥੋਂ ਕੰਟਰੋਲ ਸ਼ਾਮਲ ਕਰਨੇ ਹਨ"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> ਮੌਜੂਦਾ ਮਨਪਸੰਦ।</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ਮੌਜੂਦਾ ਮਨਪਸੰਦ।</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"ਕੰਟਰੋਲ"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ਤਤਕਾਲ ਪਹੁੰਚ ਲਈ ਕੰਟਰੋਲ ਚੁਣੋ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ਮਨਪਸੰਦ"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ਸਭ"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"ਸਾਰੇ ਕੰਟਰੋਲਾਂ ਦੀ ਸੂਚੀ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਿਆ।"</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index dd2d31c..ad54bc9 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Zezwalaj"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Debugowanie USB jest niedozwolone"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Użytkownik obecnie zalogowany na tym urządzeniu nie może włączyć debugowania USB. Aby użyć tej funkcji, przełącz się na użytkownika głównego."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Zezwolić na debugowanie bezprzewodowe w tej sieci?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nazwa sieci (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdres Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Zawsze zezwalaj w tej sieci"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Zezwól"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Debugowanie bezprzewodowe jest niedozwolone"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Użytkownik obecnie zalogowany na tym urządzeniu nie może włączyć debugowania bezprzewodowego. Aby użyć tej funkcji, przełącz się na głównego użytkownika."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB wyłączony"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Aby chronić urządzenie przed wilgocią i zanieczyszczeniami, port USB został wyłączony i nie wykryje żadnych akcesoriów.\n\nOtrzymasz powiadomienie, gdy będzie można znów używać portu."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Port USB włączony, by wykrywać ładowarki i akcesoria"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Zarządzaj"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historia"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Ciche powiadomienia"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Alerty"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Rozmowy"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Usuń wszystkie ciche powiadomienia"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Powiadomienia wstrzymane przez tryb Nie przeszkadzać"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomaga Ci się skupić, nie sygnalizując niczego dźwiękiem ani wibracjami."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Przyciąga uwagę dźwiękiem lub wibracjami."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Przyciąga uwagę dzięki pływającym skrótom do treści."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Brak ostatnich dymków"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Tutaj będą pojawiać się ostatnie i odrzucone dymki."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tych powiadomień nie można zmodyfikować."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Tej grupy powiadomień nie można tu skonfigurować"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Powiadomienie w zastępstwie"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Przenieś w lewy dolny róg"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Przenieś w prawy dolny róg"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Zamknij"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Nawigacja w systemie została zaktualizowana. Aby wprowadzić zmiany, otwórz Ustawienia."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Otwórz Ustawienia, by zaktualizować nawigację w systemie"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tryb gotowości"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Szybkie sterowanie"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Dodaj elementy sterujące"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Wybierz, z której chcesz wybrać elementy sterujące"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> aktualnie ulubione.</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> aktualnie ulubionych.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> aktualnie ulubionych.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> aktualnie ulubiony.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="few">Dodano <xliff:g id="NUMBER_1">%s</xliff:g> elementy sterujące</item>
+ <item quantity="many">Dodano <xliff:g id="NUMBER_1">%s</xliff:g> elementów sterujących</item>
+ <item quantity="other">Dodano <xliff:g id="NUMBER_1">%s</xliff:g> elementu sterującego</item>
+ <item quantity="one">Dodano <xliff:g id="NUMBER_0">%s</xliff:g> element sterujący</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Elementy sterujące"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Wybierz elementy sterujące dla szybszego dostępu"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Ulubione"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Wszystko"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Nie udało się wczytać listy elementów sterujących."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Inne"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index 2d5e011..300461d 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Depuração USB não permitida"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Permitir a depuração sem fio nesta rede?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nome da rede (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nEndereço do Wi-Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Sempre permitir nesta rede"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Depuração sem fio não permitida"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"O usuário conectado a este dispositivo não pode ativar a depuração sem fio. Para usar esse recurso, conecte-se como o usuário principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para proteger seu dispositivo de líquidos e detritos, a porta USB está desativada e não detectará nenhum acessório.\n\nVocê receberá uma notificação quando for seguro usar a porta USB novamente."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Porta USB ativada para detectar carregadores e acessórios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gerenciar"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Histórico"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificações silenciosas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificações com alerta"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversas"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Apagar todas as notificações silenciosas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificações pausadas pelo modo \"Não perturbe\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ajuda você a manter o foco sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Chama sua atenção com som ou vibração."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Os balões recentes e dispensados aparecerão aqui."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificação salva no proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mover para canto inferior esquerdo"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mover para canto inferior direito"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dispensar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Acesse as configurações para atualizar a navegação no sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Adicionar controles"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Escolher um app para adicionar controles"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> favorito atual.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos atuais.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> controle adicionado.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controles adicionados.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Escolher controles do acesso rápido"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Todos"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Não foi possível carregar a lista de controles."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Outro"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 855d339..9d7fb35 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Depuração USB não permitida"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"O utilizador com sessão iniciada atualmente neste dispositivo não pode ativar a depuração USB. Para utilizar esta funcionalidade, mude para o utilizador principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Pretende permitir a depuração sem fios nesta rede?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nome da rede (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nEndereço Wi-Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permitir sempre nesta rede"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Depuração sem fios não permitida"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"O utilizador com sessão iniciada atualmente neste dispositivo não pode ativar a depuração sem fios. Para utilizar esta funcionalidade, mude para o utilizador principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para proteger o dispositivo contra líquidos ou resíduos, a porta USB está desativada e não irá detetar quaisquer acessórios.\n\nSerá notificado quando for seguro utilizar a porta USB novamente."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Porta USB ativada para detetar carregadores e acessórios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gerir"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Histórico"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificações silenciosas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificações de alerta"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversas"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Limpar todas as notificações silenciosas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificações colocadas em pausa pelo modo Não incomodar."</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ajuda-o a focar-se sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Chama a sua atenção com som ou vibração."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém a sua atenção com um atalho flutuante para este conteúdo."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Os balões recentes e os balões ignorados vão aparecer aqui."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar estas notificações."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar este grupo de notificações aqui."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificação de aplicação proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mover p/ parte infer. esquerda"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mover parte inferior direita"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ignorar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"A navegação no sistema foi atualizada. Para efetuar alterações, aceda às Definições."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Aceda às Definições para atualizar a navegação no sistema."</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controlos rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Adicione controlos"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Escolha uma app a partir da qual pretende adicionar controlos."</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos atuais.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorito atual.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controlos adicionados.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> controlo adicionado.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controlos"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Escolha os controlos para um acesso rápido."</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tudo"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Não foi possível carregar a lista dos controlos."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Outro"</string>
</resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index 2d5e011..300461d 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permitir"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Depuração USB não permitida"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"O usuário conectado a este dispositivo não pode ativar a depuração USB. Para usar esse recurso, mude para o usuário principal \"NAME\"."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Permitir a depuração sem fio nesta rede?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nome da rede (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nEndereço do Wi-Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Sempre permitir nesta rede"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permitir"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Depuração sem fio não permitida"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"O usuário conectado a este dispositivo não pode ativar a depuração sem fio. Para usar esse recurso, conecte-se como o usuário principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Porta USB desativada"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para proteger seu dispositivo de líquidos e detritos, a porta USB está desativada e não detectará nenhum acessório.\n\nVocê receberá uma notificação quando for seguro usar a porta USB novamente."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Porta USB ativada para detectar carregadores e acessórios"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gerenciar"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Histórico"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificações silenciosas"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificações com alerta"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversas"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Apagar todas as notificações silenciosas"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificações pausadas pelo modo \"Não perturbe\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ajuda você a manter o foco sem som ou vibração."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Chama sua atenção com som ou vibração."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mantém sua atenção com um atalho flutuante para esse conteúdo."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nenhum balão recente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Os balões recentes e dispensados aparecerão aqui."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Não é possível modificar essas notificações."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Não é possível configurar esse grupo de notificações aqui"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificação salva no proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mover para canto inferior esquerdo"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mover para canto inferior direito"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Dispensar"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navegação no sistema atualizada. Se quiser alterá-la, acesse as configurações."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Acesse as configurações para atualizar a navegação no sistema"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Adicionar controles"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Escolher um app para adicionar controles"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> favorito atual.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> favoritos atuais.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> controle adicionado.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> controles adicionados.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Controles"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Escolher controles do acesso rápido"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoritos"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Todos"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Não foi possível carregar a lista de controles."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Outro"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index 9860d93..845714e 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Permiteți"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Remedierea erorilor prin USB nu este permisă"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Utilizatorul conectat momentan pe acest dispozitiv nu poate activa remedierea erorilor prin USB. Pentru a folosi această funcție, comutați la utilizatorul principal."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Permiteți remedierea erorilor prin wireless în această rețea?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Numele rețelei (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Permiteți întotdeauna în această rețea"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Permiteți"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Remedierea erorilor prin wireless nu este permisă"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Utilizatorul conectat momentan pe acest dispozitiv nu poate activa remedierea erorilor prin wireless. Pentru a folosi această funcție, comutați la utilizatorul principal."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Portul USB a fost dezactivat"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Pentru a vă proteja dispozitivul de lichide sau reziduuri, portul USB este dezactivat și nu va detecta niciun accesoriu.\n\nVeți primi o notificare când puteți folosi din nou portul USB."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Portul USB a fost activat pentru a detecta încărcătoarele și accesoriile"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Gestionați"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Istoric"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Notificări silențioase"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Notificări de alertare"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Conversații"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Ștergeți toate notificările silențioase"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Notificări întrerupte prin „Nu deranja”"</string>
@@ -689,10 +696,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Vă ajută să vă concentrați fără sunet sau vibrare."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Vă atrage atenția fără sunet sau vibrare."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Vă atrage atenția printr-o comandă rapidă flotantă la acest conținut."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nu există baloane recente"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Baloanele recente și baloanele respinse vor apărea aici."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Aceste notificări nu pot fi modificate."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Acest grup de notificări nu poate fi configurat aici"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Notificare prin proxy"</string>
@@ -979,6 +984,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Mutați în stânga jos"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Mutați în dreapta jos"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Închideți"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigarea în sistem a fost actualizată. Pentru a face modificări, accesați Setările."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Accesați Setările pentru a actualiza navigarea în sistem"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string>
@@ -988,17 +999,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Comenzi rapide"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Adăugați comenzi"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Alegeți o aplicație din care să adăugați comenzi"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> favorite actuale.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> de favorite actuale.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> favorit actual.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="few">S-au adăugat <xliff:g id="NUMBER_1">%s</xliff:g> comenzi.</item>
+ <item quantity="other">S-au adăugat <xliff:g id="NUMBER_1">%s</xliff:g> de comenzi.</item>
+ <item quantity="one">S-a adăugat <xliff:g id="NUMBER_0">%s</xliff:g> comandă.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Comenzi"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Alegeți comenzile pentru acces rapid"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favorite"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Toate"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Lista cu toate comenzile nu a putut fi încărcată."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Altul"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 38db1fa..c32627d 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Разрешить"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Отладка по USB запрещена"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"В этом аккаунте нельзя включить отладку по USB. Перейдите в аккаунт основного пользователя."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Разрешить отладку по Wi-Fi в этой сети?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Название сети (SSID):\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nMAC-адрес точки доступа (BSSID):\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Всегда разрешать отладку в этой сети"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Разрешить"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Отладка по Wi-Fi запрещена"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"В этом аккаунте нельзя включить отладку по Wi-Fi. Перейдите в аккаунт основного пользователя."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-порт отключен"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Чтобы внутрь устройства не попала вода или грязь, USB-порт был отключен. Сейчас через него нельзя подсоединять другие устройства.\n\nКогда USB-порт снова можно будет использовать, вы получите уведомление."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-порт активен и может распознавать аксессуары и зарядные устройства."</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Настроить"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"История"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Беззвучные уведомления"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Уведомления со звуком или вибрацией"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Чаты"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Отклонить все беззвучные уведомления"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"В режиме \"Не беспокоить\" уведомления заблокированы"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Уведомления приходят без звука и вибрации"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Уведомления приходят со звуком или вибрацией"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Привлекает ваше внимание к контенту с помощью плавающего ярлыка"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Нет недавних подсказок"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Здесь будут появляться недавние и закрытые всплывающие уведомления."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Эти уведомления нельзя изменить."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Эту группу уведомлений нельзя настроить здесь."</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Уведомление отправлено через прокси-сервер."</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Перенести в левый нижний угол"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Перенести в правый нижний угол"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Закрыть"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Параметры навигации в системе обновлены. Чтобы изменить их, перейдите в настройки."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Чтобы обновить параметры навигации в системе, перейдите в настройки."</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Переход в режим ожидания"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Управление умным домом"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Добавление элементов"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Выберите приложение, из которого нужно добавить элементы управления."</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">В избранном <xliff:g id="NUMBER_1">%s</xliff:g> элемент.</item>
- <item quantity="few">В избранном <xliff:g id="NUMBER_1">%s</xliff:g> элемента.</item>
- <item quantity="many">В избранном <xliff:g id="NUMBER_1">%s</xliff:g> элементов.</item>
- <item quantity="other">В избранном <xliff:g id="NUMBER_1">%s</xliff:g> элемента.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Добавлен <xliff:g id="NUMBER_1">%s</xliff:g> элемент управления.</item>
+ <item quantity="few">Добавлено <xliff:g id="NUMBER_1">%s</xliff:g> элемента управления.</item>
+ <item quantity="many">Добавлено <xliff:g id="NUMBER_1">%s</xliff:g> элементов управления.</item>
+ <item quantity="other">Добавлено <xliff:g id="NUMBER_1">%s</xliff:g> элемента управления.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Элементы управления"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Выберите элементы управления для быстрого доступа."</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Избранные"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Все"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Не удалось загрузить список элементов управления."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Другое"</string>
</resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 7c10938..ec78baa 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"ඉඩ දෙන්න"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB නිදොස්කරණය වෙත අවසර නැහැ"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"දැනට මෙම උපාංගයට පුරා ඇති පරිශීලකයාට USB නිදොස්කරණය ක්රියාත්මක කළ නොහැක. මෙම විශේෂාංගය භාවිතා කිරීම සඳහා, මූලික පරිශීලකයා වෙත මාරු වෙන්න."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"මෙම ජාලයේ නොරැහැන් නිදොස්කරණය ඉඩ දෙන්නද?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ජාල නම (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi ලිපිනය (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"මෙම ජාලයේ සැමවිට ඉඩ දෙන්න"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"ඉඩ දෙන්න"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"නොරැහැන් නිදොස්කරණය ඉඩ දී නැත"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"මෙම උපාංගයට දැනට පුරා ඇති පරිශීලකට නොරැහැන් නිදොස්කරණය ක්රියාත්මක කළ නොහැකිය. මෙම විශේෂාංගය භාවිතට, මූලික පරිශීලක වෙත මාරු වෙන්න."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB තොට අබලයි"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"ඔබේ උපාංගය ද්රවවලින් හෝ කුණුවලින් ආරක්ෂා කිරීමට, USB තොට අබල කර තිබෙන අතර, එය කිසිම අමතරාංගයක් අනාවරණ නොකරයි.\n\nනැවතත් USB තොට භාවිත කිරීම හරි නම් ඔබව දැනුම් දෙනු ලැබේ."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ආරෝපක සහ උපකාරක අංග අනාවරණ කිරීමට USB තොට සබල කර ඇත"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"කළමනාකරණය කරන්න"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ඉතිහාසය"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"නිහඬ දැනුම්දීම්"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"ඇඟවීමේ දැනුම් දීම්"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"සංවාද"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"සියලු නිහඬ දැනුම්දීම් හිස් කරන්න"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"බාධා නොකරන්න මගින් විරාම කරන ලද දැනුම්දීම්"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ඔබට ශබ්දය හෝ කම්පනය නොමැතිව අවධානය යොමු කිරීමට උදවු කරයි."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ශබ්දය හෝ කම්පනය සමඟ ඔබේ අවධානය ලබා ගනී."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"පාවෙන කෙටිමගක් සමග ඔබේ අවධානය මෙම අන්තර්ගතය වෙත තබා ගන්න."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"මෑත බුබුලු නැත"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"මෑත බුබුලු සහ ඉවත ලූ බුබුලු මෙහි දිස් වනු ඇත."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"මෙම දැනුම්දීම් වෙනස් කළ නොහැක."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"මෙම දැනුම්දීම් සමූහය මෙහි වින්යාස කළ නොහැක"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ප්රොක්සි කළ දැනුම්දීම"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"පහළ වමට ගෙන යන්න"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"පහළ දකුණට ගෙන යන්න"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ඉවතලන්න"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"පද්ධති සංචලනය යාවත්කාලීන කළා. වෙනස්කම් සිදු කිරීමට, සැකසීම් වෙත යන්න."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"පද්ධති සංචලනය යාවත්කාලීන කිරීමට සැකසීම් වෙත යන්න"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"පොරොත්තු"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"ඉක්මන් පාලන"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"පාලන එක් කරන්න"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"පාලන එක් කිරීමට යෙදුමක් තෝරා ගන්න"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">දැනට ප්රියතම <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="other">දැනට ප්රියතම <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">පාලන <xliff:g id="NUMBER_1">%s</xliff:g>ක් එක් කරන ලදී.</item>
+ <item quantity="other">පාලන <xliff:g id="NUMBER_1">%s</xliff:g>ක් එක් කරන ලදී.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"පාලන"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"ඉක්මන් ප්රවේශය සඳහා පාලන තෝරා ගන්න"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ප්රියතම"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"සියලු"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"සියලු පාලනවල ලැයිස්තුව පූරණය කළ නොහැකි විය."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"වෙනත්"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index b420761..bb6ac46 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Povoliť"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ladenie cez USB nie je povolené"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Používateľ, ktorý je práve prihlásený v tomto zariadení, nemôže zapnúť ladenie USB. Ak chcete použiť túto funkciu, prepnite na hlavného používateľa."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Chcete povoliť bezdrôtové ladenie v tejto sieti?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Názov siete (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Vždy povoliť v tejto sieti"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Povoliť"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Bezdrôtové ladenie nie je povolené"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Používateľ, ktorý je práve prihlásený v tomto zariadení, nemôže zapnúť bezdrôtové ladenie. Ak chcete použiť túto funkciu, prepnite na hlavného používateľa."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Port USB je deaktivovaný"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Port USB je deaktivovaný na zaistenie ochrany zariadenia pred tekutinami alebo nečistotami a nerozpoznáva príslušenstvo.\n\nKeď ho budete môcť znova použiť, upozorníme vás."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Bol povolený port USB na zisťovanie nabíjačiek a príslušenstva"</string>
@@ -86,7 +92,7 @@
<string name="screenrecord_description" msgid="1123231719680353736">"Počas nahrávania zaznamená systém Android všetky citlivé údaje, ktoré sa zobrazia na obrazovke alebo prehrajú v zariadení. Zahrnuje to heslá, platobné údaje, fotky, správy a zvuky."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Nahrávať zvuk"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Zvuk zariadenia"</string>
- <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvuk zo zariadenia, ako napríklad hudba, hovory a tóny zvonenia"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Zvuk zo zariadenia, napríklad hudba, hovory a tóny zvonenia"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"Mikrofón"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"Zvuk a mikrofón zariadenia"</string>
<string name="screenrecord_start" msgid="330991441575775004">"Spustiť"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Spravovať"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"História"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Tiché upozornenia"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Varovné upozornenia"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Konverzácie"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Vymazať všetky tiché upozornenia"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Upozornenia sú pozastavené režimom bez vyrušení"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Pomáha vám sústrediť sa bez zvukov či vibrácií."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Upúta vás zvukom alebo vibráciami."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Upúta vás plávajúcim odkazom na tento obsah."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Žiadne nedávne bubliny"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Tu sa budú zobrazovať nedávne a zavreté bubliny."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Tieto upozornenia sa nedajú upraviť."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Túto skupinu upozornení nejde na tomto mieste konfigurovať"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Približné upozornenie"</string>
@@ -719,7 +724,7 @@
<string name="inline_undo" msgid="9026953267645116526">"Späť"</string>
<string name="demote" msgid="6225813324237153980">"Označiť, že toto upozornenie nie je konverzácia"</string>
<string name="notification_conversation_favorite" msgid="1905240206975921907">"Dôležitá konverzácia"</string>
- <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Nejde o dôležitú konverzáciu"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"Nedôležitá konverzácia"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"Stlmené"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Upozorňujúce"</string>
<string name="notification_conversation_bubble" msgid="2242180995373949022">"Zobraziť bublinu"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Presunúť doľava nadol"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Presunúť doprava nadol"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Zavrieť"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigácia v systéme bola aktualizovaná. Ak chcete vykonať zmeny, prejdite do Nastavení."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Prejdite do Nastavení a aktualizujte navigáciu v systéme"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostný režim"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Rýchle ovládacie prvky"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Pridanie ovládacích prvkov"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Vyberte aplikáciu, z ktorej chcete pridať ovládacie prvky"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> aktuálne obľúbené.</item>
- <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> current favorites.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> aktuálne obľúbených.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> aktuálne obľúbený.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="few">Boli pridané <xliff:g id="NUMBER_1">%s</xliff:g> ovládacie prvky.</item>
+ <item quantity="many"><xliff:g id="NUMBER_1">%s</xliff:g> controls added.</item>
+ <item quantity="other">Bolo pridaných <xliff:g id="NUMBER_1">%s</xliff:g> ovládacích prvkov.</item>
+ <item quantity="one">Bol pridaný <xliff:g id="NUMBER_0">%s</xliff:g> ovládací prvok.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Ovládacie prvky"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Vyberte ovládacie prvky na rýchly prístup"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Obľúbené"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Všetko"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Zoznam všetkých ovl. prvkov sa nepodarilo načítať."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Iné"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index b0201b4..5280f6e 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Dovoli"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Odpravljanje napak s povezavo USB ni dovoljeno"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Uporabnik, trenutno prijavljen v napravo, ne more vklopiti odpravljanja napak s povezavo USB. Če želite uporabljati to funkcijo, preklopite na primarnega uporabnika."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Ali dovolite brezžično odpravljanje napak v tem omrežju?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Ime omrežja (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nNaslov omrežja Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Vedno dovoli v tem omrežju"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Dovoli"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Brezžično odpravljanje napak ni dovoljeno"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Uporabnik, trenutno prijavljen v napravo, ne more vklopiti brezžičnega odpravljanja napak. Če želite uporabljati to funkcijo, preklopite na primarnega uporabnika."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Vrata USB so onemogočena"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Zaradi zaščite naprave pred tekočino ali umazanijo so vrata USB onemogočena in ne bodo zaznala nobene dodatne opreme.\n\nKo bo znova varno uporabljati vrata USB, boste obveščeni."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Vrata USB so omogočena za zaznavanje polnilnikov in dodatne opreme"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Upravljanje"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Zgodovina"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Tiha obvestila"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Obvestila z opozorilom"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Pogovori"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Brisanje vseh tihih obvestil"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Prikazovanje obvestil je začasno zaustavljeno z načinom »ne moti«"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Nemoteč prikaz brez zvoka ali vibriranja"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Pritegne vašo pozornost z zvokom ali vibriranjem"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Zadrži vašo pozornost z lebdečo bližnjico do te vsebine."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Ni nedavnih oblačkov"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Tukaj bodo prikazani tako nedavni kot opuščeni oblački."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Za ta obvestila ni mogoče spremeniti nastavitev."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Te skupine obvestil ni mogoče konfigurirati tukaj"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Posredovano obvestilo"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Premakni spodaj levo"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Premakni spodaj desno"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Opusti"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Krmarjenje po sistemu je posodobljeno. Če želite opraviti spremembe, odprite nastavitve."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Če želite posodobiti krmarjenje po sistemu, odprite nastavitve"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravljenosti"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Hitro upravljanje"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Dodajanje kontrolnikov"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Izberite aplikacijo, katere kontrolnike želite dodati"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> trenutni priljubljen.</item>
- <item quantity="two"><xliff:g id="NUMBER_1">%s</xliff:g> trenutna priljubljena.</item>
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> trenutni priljubljeni.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> trenutnih priljubljenih.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> kontrolnik dodan.</item>
+ <item quantity="two"><xliff:g id="NUMBER_1">%s</xliff:g> kontrolnika dodana.</item>
+ <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> kontrolniki dodani.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontrolnikov dodanih.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrolniki"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Izberite kontrolnike za hiter dostop"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Priljubljene"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Vse"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Seznama vseh kontrolnikov ni bilo mogoče naložiti."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Drugo"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 4f0c4e7..c1a32c5 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Lejo"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Korrigjimi i USB-së nuk lejohet"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Përdoruesi i identifikuar aktualisht në këtë pajisje nuk mund ta aktivizojë korrigjimin e USB-së. Për ta përdorur këtë funksion, kalo te përdoruesi parësor."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Do ta lejosh korrigjimin me lidhjen pa tel në këtë rrjet?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Emri i rrjetit (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAdresa Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Shfaq gjithmonë në këtë rrjet"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Lejo"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Korrigjimi me lidhjen pa tel nuk lejohet"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Përdoruesi i identifikuar aktualisht në këtë pajisje nuk mund ta aktivizojë korrigjimin me lidhjen pa tel. Për ta përdorur këtë veçori, kalo te përdoruesi parësor."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Porta e USB-së është çaktivizuar"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Për të mbrojtur pajisjen tënde nga lëngjet apo papastërtitë, porta e USB-së është çaktivizuar dhe nuk do t\'i dallojë aksesorët.\n\nDo të njoftohesh kur të mos jetë problem përdorimi përsëri i portës USB."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Porta USB është aktivizuar për të zbuluar karikuesit dhe aksesorët"</string>
@@ -367,7 +373,7 @@
<string name="quick_settings_inversion_label" msgid="5078769633069667698">"Shkëmbe ngjyrat"</string>
<string name="quick_settings_color_space_label" msgid="537528291083575559">"Modaliteti i korrigjimit të ngjyrës"</string>
<string name="quick_settings_more_settings" msgid="2878235926753776694">"Cilësime të tjera"</string>
- <string name="quick_settings_done" msgid="2163641301648855793">"U krye!"</string>
+ <string name="quick_settings_done" msgid="2163641301648855793">"U krye"</string>
<string name="quick_settings_connected" msgid="3873605509184830379">"I lidhur"</string>
<string name="quick_settings_connected_battery_level" msgid="1322075669498906959">"E lidhur, bateria <xliff:g id="BATTERY_LEVEL_AS_PERCENTAGE">%1$s</xliff:g>"</string>
<string name="quick_settings_connecting" msgid="2381969772953268809">"Po lidhet..."</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Menaxho"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historiku"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Njoftimet në heshtje"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Njoftimet sinjalizuese"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Bisedat"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Pastro të gjitha njoftimet në heshtje"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Njoftimet janë vendosur në pauzë nga modaliteti \"Mos shqetëso\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Të ndihmon të fokusohesh pa tinguj ose dridhje."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Të tërheq vëmendjen me tinguj ose dridhje."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Mban vëmendjen tënde me një shkurtore pluskuese te kjo përmbajtje."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Nuk ka flluska të fundit"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Flluskat e fundit dhe flluskat e hequra do të shfaqen këtu."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Këto njoftime nuk mund të modifikohen."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ky grup njoftimesh nuk mund të konfigurohet këtu"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Njoftim i dërguar me përfaqësues"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Zhvendos poshtë majtas"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Lëvize poshtë djathtas"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Hiq"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Navigimi i sistemit u përditësua. Për të bërë ndryshime, shko te \"Cilësimet\"."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Shko te \"Cilësimet\" për të përditësuar navigimin e sistemit"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Në gatishmëri"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Kontrollet e shpejta"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Shto kontrollet"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Zgjidh një aplikacion nga i cili do të shtosh kontrollet"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> të preferuara aktuale.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> e preferuar aktuale.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">U shtuan <xliff:g id="NUMBER_1">%s</xliff:g> kontrolle.</item>
+ <item quantity="one">U shtua <xliff:g id="NUMBER_0">%s</xliff:g> kontroll.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontrollet"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Zgjidh kontrollet për qasjen e shpejtë"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Të preferuarit"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Të gjitha"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Lista e të gjitha kontrolleve nuk mund të ngarkohej."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Tjetër"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index fe8c436..87c9d3f 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Дозволи"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Отклањање грешака на USB-у није дозвољено"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Корисник који је тренутно пријављен на овај уређај не може да укључи отклањање грешака на USB-у. Да бисте користили ову функцију, пребаците на примарног корисника."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Желите ли да омогућите бежично отклањање грешака на овој мрежи?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Назив мреже (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi адреса (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Увек дозволи на овој мрежи"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Дозволи"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Бежично отклањање грешака није дозвољено"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Корисник који је тренутно пријављен на овај уређај не може да укључи бежично отклањање грешака. Да бисте користили ову функцију, пређите на примарног корисника."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB порт је онемогућен"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Да би се уређај заштитио од течности или нечистоће, USB порт је онемогућен и неће откривати додатну опрему.\n\nОбавестићемо вас када поново будете могли да користите USB порт."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB порт је омогућен ради откривања пуњача и додатне опреме"</string>
@@ -491,6 +497,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Управљајте"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Историја"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Нечујна обавештења"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Обавештења која привлаче пажњу"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Конверзације"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Обришите сва нечујна обавештења"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Обавештења су паузирана режимом Не узнемиравај"</string>
@@ -689,10 +696,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Помаже вам да се концентришете без звука или вибрације."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Привлачи вам пажњу помоћу звука или вибрације."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Привлачи вам пажњу помоћу плутајуће пречице до овог садржаја."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Нема недавних облачића"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Овде се приказују недавни и одбачени облачићи."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ова обавештења не могу да се мењају."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ова група обавештења не може да се конфигурише овде"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Обавештење преко проксија"</string>
@@ -979,6 +984,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Премести доле лево"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Премести доле десно"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Одбаци"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навигација система је ажурирана. Да бисте унели измене, идите у Подешавања."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Идите у Подешавања да бисте ажурирали навигацију система"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Стање приправности"</string>
@@ -988,17 +999,15 @@
<string name="quick_controls_title" msgid="525285759614231333">"Брзе контроле"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Додајте контроле"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Одаберите апликацију из које ћете додавати контроле"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> актуелни фаворит.</item>
- <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> актуелна фаворита.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> актуелних фаворита.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> контрола је додата.</item>
+ <item quantity="few"><xliff:g id="NUMBER_1">%s</xliff:g> контроле су додате.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> контрола је додато.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Контроле"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Одаберите контроле за брз приступ"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Омиљено"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Све"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Учитавање листе свих контрола није успело."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Друго"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 8f7d12c..c497574 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Tillåt"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB-felsökning är inte tillåtet"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Användaren som är inloggad på enheten för närvarande kan inte aktivera USB-felsökning. Byt till den primära användaren om du vill använda den här funktionen."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vill du tillåta trådlös felsökning i det här nätverket?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Nätverksnamn (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi-adress (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Tillåt alltid i det här nätverket"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Tillåt"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Trådlös felsökning är inte tillåtet"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Användaren som är inloggad på enheten för närvarande kan inte aktivera trådlös felsökning. Byt till den primära användaren om du vill använda den här funktionen."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-porten har inaktiverats"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"USB-porten har inaktiverats för att skydda enheten mot vätska eller smuts. Inga tillbehör kommer att hittas.\n\nDu meddelas när det går att använda USB-porten igen."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB-porten har aktiverats för identifiering av laddare och tillbehör"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Hantera"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historik"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Ljudlösa aviseringar"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Aviseringar med vibration eller ljud"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Konversationer"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Rensa alla ljudlösa aviseringar"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Aviseringar har pausats via Stör ej"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Inga ljud eller vibrationer som stör koncentrationen."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Påkallar uppmärksamhet med ljud eller vibrationer."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Behåller din uppmärksamhet med en flytande genväg till innehållet."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Inga senaste bubblor"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"De senaste bubblorna och ignorerade bubblor visas här."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Det går inte att ändra de här aviseringarna."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Den här aviseringsgruppen kan inte konfigureras här"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Avisering via proxy"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Flytta längst ned till vänster"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Flytta längst ned till höger"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Stäng"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Systemnavigeringen har uppdaterats. Öppna inställningarna om du vill ändra något."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Öppna inställningarna och uppdatera systemnavigeringen"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Viloläge"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Snabbinställningar"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Lägg till kontroller"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Välj den app du vill lägga till kontroller från"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> nuvarande favoriter.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> nuvarande favorit.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontroller har lagts till.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontroll har lagts till.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Välj kontroller för snabb åtkomst"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoriter"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Alla"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Listan med alla kontroller kunde inte läsas in."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Övrigt"</string>
</resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 4fa7d92..8d2b137 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Ruhusu"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Utatuzi wa USB hauruhusiwi"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Mtumiaji aliyeingia katika akaunti kwa kutumia kifaa hiki kwa sasa hawezi kuwasha utatuzi wa USB. Ili utumie kipengele hiki, tumia akaunti ya mtumiaji wa msingi."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Ungependa kuruhusu utatuzi usiotumia waya kwenye mtandao huu?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Jina la Mtandao (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAnwani ya Wi-Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Ruhusu kila wakati kwenye mtandao huu"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Ruhusu"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Utatuzi usiotumia waya hauruhusiwi"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Mtumiaji aliyeingia katika akaunti kwenye kifaa hiki kwa sasa hawezi kuwasha utatuzi usiotumia waya. Ili utumie kipengele hiki, badilisha utumie akaunti ya mtumiaji wa msingi."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Mlango wa USB umezimwa"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Ili ulinde kifaa chako dhidi ya vitu vyenye unyevu au uchafu, mlango wa USB umezimwa na hautatambua vifaa vyovyote.\n\nUtaarifiwa itapokuwa sawa kutumia mlango wa USB tena."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Mlango wa USB umewezeshwa ili utambue chaja na vifuasi"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Dhibiti"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Historia"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Arifa zisizo na sauti"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Arifa za ilani"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Mazungumzo"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Futa arifa zote zisizo na sauti"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Kipengele cha Usinisumbue kimesitisha arifa"</string>
@@ -553,7 +560,7 @@
<string name="keyguard_indication_trust_disabled" msgid="6820793704816727918">"Kifaa kitaendelea kuwa katika hali ya kufungwa hadi utakapokifungua mwenyewe"</string>
<string name="hidden_notifications_title" msgid="1782412844777612795">"Pata arifa kwa haraka"</string>
<string name="hidden_notifications_text" msgid="5899627470450792578">"Zitazame kabla hujafungua"</string>
- <string name="hidden_notifications_cancel" msgid="4805370226181001278">"Hapana, asante"</string>
+ <string name="hidden_notifications_cancel" msgid="4805370226181001278">"Hapana"</string>
<string name="hidden_notifications_setup" msgid="2064795578526982467">"Sanidi"</string>
<string name="zen_mode_and_condition" msgid="5043165189511223718">"<xliff:g id="ZEN_MODE">%1$s</xliff:g>. <xliff:g id="EXIT_CONDITION">%2$s</xliff:g>"</string>
<string name="volume_zen_end_now" msgid="5901885672973736563">"Izime sasa"</string>
@@ -576,7 +583,7 @@
<string name="screen_pinning_toast_recents_invisible" msgid="6343770487795352573">"Ili ubandue skrini hii, gusa na ushikilie vitufe vya Nyuma na Mwanzo"</string>
<string name="screen_pinning_toast_gesture_nav" msgid="2884536903398445645">"Ili ubandue skrini hii, telezesha kidole juu na ushikilie"</string>
<string name="screen_pinning_positive" msgid="3285785989665266984">"Nimeelewa"</string>
- <string name="screen_pinning_negative" msgid="6882816864569211666">"Hapana, asante"</string>
+ <string name="screen_pinning_negative" msgid="6882816864569211666">"Hapana"</string>
<string name="screen_pinning_start" msgid="5695091877402422575">"Skrini imebandikwa"</string>
<string name="screen_pinning_exit" msgid="5114993350662745840">"Skrini imebanduliwa"</string>
<string name="quick_settings_reset_confirmation_title" msgid="463533331480997595">"Ungependa kuficha <xliff:g id="TILE_LABEL">%1$s</xliff:g>?"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Hupata umakinifu wako kwa sauti na mtetemo."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Huweka umakinifu wako kwenye maudhui haya kwa kutumia njia ya mkato ya kuelea."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Hakuna viputo vya hivi majuzi"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Viputo vilivyoondolewa hivi majuzi vitaonekana hapa ili virejeshwe kwa urahisi."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Viputo vya hivi karibuni na viputo vilivyoondolewa vitaonekana hapa."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Arifa hizi haziwezi kubadilishwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Kikundi hiki cha arifa hakiwezi kuwekewa mipangilio hapa"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Arifa wakilishi"</string>
@@ -947,7 +954,7 @@
<string name="slice_permission_deny" msgid="6870256451658176895">"Kataa"</string>
<string name="auto_saver_title" msgid="6873691178754086596">"Gusa ili uratibu wakati wa kuwasha Kiokoa Betri"</string>
<string name="auto_saver_text" msgid="3214960308353838764">"Washa wakati betri inakaribia kuisha"</string>
- <string name="no_auto_saver_action" msgid="7467924389609773835">"Hapana, asante"</string>
+ <string name="no_auto_saver_action" msgid="7467924389609773835">"Hapana"</string>
<string name="auto_saver_enabled_title" msgid="4294726198280286333">"Ratiba ya Kiokoa Betri imewashwa"</string>
<string name="auto_saver_enabled_text" msgid="7889491183116752719">"Kiokoa Betri kitawaka kiotomatiki baada ya chaji ya betri kufika chini ya <xliff:g id="PERCENTAGE">%d</xliff:g>%%."</string>
<string name="open_saver_setting_action" msgid="2111461909782935190">"Mipangilio"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Sogeza chini kushoto"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Sogeza chini kulia"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Ondoa"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Umesasisha usogezaji kwenye mfumo. Ili ubadilishe, nenda kwenye Mipangilio."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Nenda kwenye mipangilio ili usasishe usogezaji kwenye mfumo"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Hali tuli"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Vidhibiti vya Haraka"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Weka Vidhibiti"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Chagua programu utakayotumia kuweka vidhibiti"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Vipendwa <xliff:g id="NUMBER_1">%s</xliff:g> vya sasa.</item>
- <item quantity="one">Kipendwa <xliff:g id="NUMBER_0">%s</xliff:g> cha sasa.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Umeweka vidhibiti <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
+ <item quantity="one">Umeweka kidhibiti <xliff:g id="NUMBER_0">%s</xliff:g>.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Vidhibiti"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Chagua vidhibiti vya kufikia kwa haraka"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Vipendwa"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Vyote"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Imeshindwa kupakia orodha ya vidhibiti vyote."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Nyingine"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 26af750..3f1ddbd 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -63,6 +63,18 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"அனுமதி"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB பிழைதிருத்தம் அனுமதிக்கப்படவில்லை"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"தற்போது இந்தச் சாதனத்தில் உள்நுழைந்துள்ள பயனரால் USB பிழைதிருத்தத்தை இயக்க முடியாது. இந்த அம்சத்தை இயக்க, முதன்மைப் பயனருக்கு மாறவும்."</string>
+ <!-- no translation found for wifi_debugging_title (7300007687492186076) -->
+ <skip />
+ <!-- no translation found for wifi_debugging_message (5461204211731802995) -->
+ <skip />
+ <!-- no translation found for wifi_debugging_always (2968383799517975155) -->
+ <skip />
+ <!-- no translation found for wifi_debugging_allow (4573224609684957886) -->
+ <skip />
+ <!-- no translation found for wifi_debugging_secondary_user_title (2493201475880517725) -->
+ <skip />
+ <!-- no translation found for wifi_debugging_secondary_user_message (4492383073970079751) -->
+ <skip />
<string name="usb_contaminant_title" msgid="894052515034594113">"USB போர்ட் முடக்கப்பட்டது"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"தேவையற்றவையில் இருந்து உங்கள் சாதனத்தைப் பாதுகாக்க USB போர்ட் முடக்கப்பட்டுள்ளது. மேலும் எந்தத் துணைக் கருவிகளையும் அது கண்டறியாது.\n\nUSB போர்ட்டை மீண்டும் எப்போது பயன்படுத்தலாம் என்பதைப் பற்றி உங்களுக்குத் தெரிவிக்கப்படும்."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"சார்ஜர்களையும் துணைக்கருவிகளையும் கண்டறிவதற்காக USB போர்ட் இயக்கப்பட்டுள்ளது"</string>
@@ -80,31 +92,19 @@
<string name="screenshot_failed_to_save_unknown_text" msgid="1506621600548684129">"ஸ்கிரீன் ஷாட்டை மீண்டும் எடுக்க முயலவும்"</string>
<string name="screenshot_failed_to_save_text" msgid="8344173457344027501">"போதுமான சேமிப்பிடம் இல்லாததால் ஸ்கிரீன்ஷாட்டைச் சேமிக்க முடியவில்லை"</string>
<string name="screenshot_failed_to_capture_text" msgid="7818288545874407451">"ஸ்கிரீன் ஷாட்டுகளை எடுப்பதை, ஆப்ஸ் அல்லது உங்கள் நிறுவனம் அனுமதிக்கவில்லை"</string>
- <!-- no translation found for screenrecord_name (2596401223859996572) -->
- <skip />
+ <string name="screenrecord_name" msgid="2596401223859996572">"ஸ்கிரீன் ரெக்கார்டர்"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"திரை ரெக்கார்டிங் அமர்விற்கான தொடர் அறிவிப்பு"</string>
- <!-- no translation found for screenrecord_start_label (1750350278888217473) -->
- <skip />
- <!-- no translation found for screenrecord_description (1123231719680353736) -->
- <skip />
- <!-- no translation found for screenrecord_audio_label (6183558856175159629) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_label (9016927171280567791) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_description (4922694220572186193) -->
- <skip />
- <!-- no translation found for screenrecord_mic_label (2111264835791332350) -->
- <skip />
- <!-- no translation found for screenrecord_device_audio_and_mic_label (1831323771978646841) -->
- <skip />
- <!-- no translation found for screenrecord_start (330991441575775004) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_only (4459670242451527727) -->
- <skip />
- <!-- no translation found for screenrecord_ongoing_screen_and_audio (5351133763125180920) -->
- <skip />
- <!-- no translation found for screenrecord_taps_label (1595690528298857649) -->
- <skip />
+ <string name="screenrecord_start_label" msgid="1750350278888217473">"ரெக்கார்டிங்கைத் தொடங்கவா?"</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"ரெக்கார்டு செய்யும்போது, உங்கள் திரையில் தோன்றக்கூடிய அல்லது சாதனத்தில் பிளே ஆகக்கூடிய ஏதேனும் அதிமுக்கியத் தகவலை Android சிஸ்டம் படமெடுக்க முடியும். கடவுச்சொற்கள், பேமெண்ட் தகவல், படங்கள், மெசேஜ்கள், ஆடியோ ஆகியவை இதில் அடங்கும்."</string>
+ <string name="screenrecord_audio_label" msgid="6183558856175159629">"ஆடியோவை ரெக்கார்டு செய்"</string>
+ <string name="screenrecord_device_audio_label" msgid="9016927171280567791">"சாதன ஆடியோ"</string>
+ <string name="screenrecord_device_audio_description" msgid="4922694220572186193">"இசை, அழைப்புகள், ரிங்டோன்கள் போன்ற உங்கள் சாதனத்திலிருந்து வரும் ஒலி"</string>
+ <string name="screenrecord_mic_label" msgid="2111264835791332350">"மைக்ரோஃபோன்"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"சாதன ஆடியோ மற்றும் மைக்ரோஃபோன்"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"தொடங்கு"</string>
+ <string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"ஸ்கிரீன் ரெக்கார்ட் செய்யப்படுகிறது"</string>
+ <string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"ஸ்கிரீன் மற்றும் ஆடியோ ரெக்கார்ட் செய்யப்படுகிறது"</string>
+ <string name="screenrecord_taps_label" msgid="1595690528298857649">"திரையில் உள்ள தொடுதல்களைக் காட்டு"</string>
<string name="screenrecord_stop_text" msgid="6549288689506057686">"நிறுத்த, தட்டவும்"</string>
<string name="screenrecord_stop_label" msgid="72699670052087989">"நிறுத்து"</string>
<string name="screenrecord_pause_label" msgid="6004054907104549857">"இடைநிறுத்து"</string>
@@ -117,8 +117,7 @@
<string name="screenrecord_delete_description" msgid="1604522770162810570">"திரை ரெக்கார்டிங் நீக்கப்பட்டது"</string>
<string name="screenrecord_delete_error" msgid="2870506119743013588">"திரை ரெக்கார்டிங்கை நீக்குவதில் பிழை"</string>
<string name="screenrecord_permission_error" msgid="7856841237023137686">"அனுமதிகளைப் பெற இயலவில்லை"</string>
- <!-- no translation found for screenrecord_start_error (2200660692479682368) -->
- <skip />
+ <string name="screenrecord_start_error" msgid="2200660692479682368">"ஸ்கிரீன் ரெக்கார்டிங்கைத் தொடங்குவதில் பிழை"</string>
<string name="usb_preference_title" msgid="1439924437558480718">"USB கோப்பு இடமாற்ற விருப்பங்கள்"</string>
<string name="use_mtp_button_title" msgid="5036082897886518086">"(MTP) மீடியா பிளேயராக ஏற்று"</string>
<string name="use_ptp_button_title" msgid="7676427598943446826">"(PTP) கேமராவாக ஏற்று"</string>
@@ -433,7 +432,7 @@
<string name="description_direction_left" msgid="4762708739096907741">"<xliff:g id="TARGET_DESCRIPTION">%s</xliff:g> க்கு இடதுபக்கமாக இழுக்கவும்."</string>
<string name="zen_priority_introduction" msgid="3159291973383796646">"அலாரங்கள், நினைவூட்டல்கள், நிகழ்வுகள் மற்றும் குறிப்பிட்ட அழைப்பாளர்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள், கேம்ஸ் போன்றவை) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்."</string>
<string name="zen_alarms_introduction" msgid="3987266042682300470">"அலாரங்களைத் தவிர்த்து, பிற ஒலிகள் மற்றும் அதிர்வுகளின் தொந்தரவு இருக்காது. எனினும், நீங்கள் எதையேனும் (இசை, வீடியோக்கள், கேம்ஸ் போன்றவை) ஒலிக்கும்படி தேர்ந்தெடுத்திருந்தால், அவை வழக்கம் போல் ஒலிக்கும்."</string>
- <string name="zen_priority_customize_button" msgid="4119213187257195047">"தனிப்பயனாக்கு"</string>
+ <string name="zen_priority_customize_button" msgid="4119213187257195047">"பிரத்தியேகமாக்கு"</string>
<string name="zen_silence_introduction_voice" msgid="853573681302712348">"இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும். எனினும், உங்களால் ஃபோன் அழைப்புகளைச் செய்ய முடியும்."</string>
<string name="zen_silence_introduction" msgid="6117517737057344014">"இது அலாரங்கள், இசை, வீடியோக்கள் மற்றும் கேம்ஸ் உட்பட எல்லா ஒலிகளையும் அதிர்வுகளையும் தடுக்கும்."</string>
<string name="keyguard_more_overflow_text" msgid="5819512373606638727">"+<xliff:g id="NUMBER_OF_NOTIFICATIONS">%d</xliff:g>"</string>
@@ -499,9 +498,10 @@
<string name="media_projection_remember_text" msgid="6896767327140422951">"மீண்டும் காட்டாதே"</string>
<string name="clear_all_notifications_text" msgid="348312370303046130">"எல்லாவற்றையும் அழி"</string>
<string name="manage_notifications_text" msgid="6885645344647733116">"அறிவிப்புகளை நிர்வகி"</string>
- <!-- no translation found for manage_notifications_history_text (57055985396576230) -->
- <skip />
+ <string name="manage_notifications_history_text" msgid="57055985396576230">"வரலாறு"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"ஒலியில்லாத அறிவிப்புகள்"</string>
+ <!-- no translation found for notification_section_header_alerting (3168140660646863240) -->
+ <skip />
<string name="notification_section_header_conversations" msgid="821834744538345661">"உரையாடல்கள்"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ஒலியில்லாத அழைப்புகள் அனைத்தையும் அழிக்கும்"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'தொந்தரவு செய்ய வேண்டாம்\' அம்சத்தின் மூலம் அறிவிப்புகள் இடைநிறுத்தப்பட்டுள்ளன"</string>
@@ -662,7 +662,7 @@
<string name="clock_seconds_desc" msgid="2415312788902144817">"நிலைப் பட்டியில் கடிகார வினாடிகளைக் காட்டும். பேட்டரியின் ஆயுளைக் குறைக்கலாம்."</string>
<string name="qs_rearrange" msgid="484816665478662911">"விரைவு அமைப்புகளை மறுவரிசைப்படுத்து"</string>
<string name="show_brightness" msgid="6700267491672470007">"விரைவு அமைப்புகளில் ஒளிர்வுப் பட்டியைக் காட்டு"</string>
- <string name="experimental" msgid="3549865454812314826">"சோதனை முயற்சி"</string>
+ <string name="experimental" msgid="3549865454812314826">"பரிசோதனை முயற்சி"</string>
<string name="enable_bluetooth_title" msgid="866883307336662596">"புளூடூத்தை இயக்கவா?"</string>
<string name="enable_bluetooth_message" msgid="6740938333772779717">"உங்கள் டேப்லெட்டுடன் விசைப்பலகையை இணைக்க, முதலில் புளூடூத்தை இயக்க வேண்டும்."</string>
<string name="enable_bluetooth_confirmation_ok" msgid="2866408183324184876">"இயக்கு"</string>
@@ -702,7 +702,7 @@
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"இந்த உள்ளடக்கத்திற்கான மிதக்கும் ஷார்ட்கட் மூலம் உங்கள் கவனத்தைப் பெற்றிருக்கும்."</string>
<!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
<skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
+ <!-- no translation found for bubble_overflow_empty_subtitle (198257239740933131) -->
<skip />
<string name="notification_unblockable_desc" msgid="2073030886006190804">"இந்த அறிவிப்புகளை மாற்ற இயலாது."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"இந்த அறிவுப்புக் குழுக்களை இங்கே உள்ளமைக்க இயலாது"</string>
@@ -722,29 +722,22 @@
<string name="notification_channel_controls_closed_accessibility" msgid="1561909368876911701">"<xliff:g id="APP_NAME">%1$s</xliff:g>க்கான அறிவிப்புக் கட்டுப்பாடுகள் மூடப்பட்டன"</string>
<string name="notification_channel_switch_accessibility" msgid="8979885820432540252">"இந்தச் சேனலிலிருந்து அறிவிப்புகளைப் பெறுவதை அனுமதிக்கும்"</string>
<string name="notification_more_settings" msgid="4936228656989201793">"மேலும் அமைப்புகள்"</string>
- <string name="notification_app_settings" msgid="8963648463858039377">"தனிப்பயனாக்கு"</string>
+ <string name="notification_app_settings" msgid="8963648463858039377">"பிரத்தியேகமாக்கு"</string>
<string name="notification_done" msgid="6215117625922713976">"முடிந்தது"</string>
<string name="inline_undo" msgid="9026953267645116526">"செயல்தவிர்"</string>
<string name="demote" msgid="6225813324237153980">"இந்த அறிவிப்பை உரையாடல் அல்லாததாகக் குறிக்கவும்"</string>
- <!-- no translation found for notification_conversation_favorite (1905240206975921907) -->
- <skip />
- <!-- no translation found for notification_conversation_unfavorite (181383708304763807) -->
- <skip />
- <!-- no translation found for notification_conversation_mute (268951550222925548) -->
- <skip />
+ <string name="notification_conversation_favorite" msgid="1905240206975921907">"முக்கியமான உரையாடல்"</string>
+ <string name="notification_conversation_unfavorite" msgid="181383708304763807">"முக்கியமான உரையாடல் அல்ல"</string>
+ <string name="notification_conversation_mute" msgid="268951550222925548">"ஒலியோ அதிர்வோ இருக்காது"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"விழிப்பூட்டுகிறது"</string>
- <!-- no translation found for notification_conversation_bubble (2242180995373949022) -->
- <skip />
- <!-- no translation found for notification_conversation_unbubble (6908427185031099868) -->
- <skip />
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"குமிழைக் காட்டு"</string>
+ <string name="notification_conversation_unbubble" msgid="6908427185031099868">"குமிழ்களை அகற்று"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"முகப்புத் திரையில் சேர்"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
<string name="notification_menu_gear_description" msgid="6429668976593634862">"அறிவிப்புக் கட்டுப்பாடுகள்"</string>
<string name="notification_menu_snooze_description" msgid="4740133348901973244">"அறிவிப்பை உறக்கநிலையாக்கும் விருப்பங்கள்"</string>
- <!-- no translation found for notification_menu_snooze_action (5415729610393475019) -->
- <skip />
- <!-- no translation found for notification_menu_settings_action (7085494017202764285) -->
- <skip />
+ <string name="notification_menu_snooze_action" msgid="5415729610393475019">"எனக்கு நினைவூட்டு"</string>
+ <string name="notification_menu_settings_action" msgid="7085494017202764285">"அமைப்புகள்"</string>
<string name="snooze_undo" msgid="60890935148417175">"செயல்தவிர்"</string>
<string name="snoozed_for_time" msgid="7586689374860469469">"உறக்கநிலையில் வைத்திருந்த நேரம்: <xliff:g id="TIME_AMOUNT">%1$s</xliff:g>"</string>
<plurals name="snoozeHourOptions" formatted="false" msgid="2066838694120718170">
@@ -816,8 +809,7 @@
<string name="accessibility_data_saver_off" msgid="58339669022107171">"டேட்டா சேமிப்பான் முடக்கப்பட்டது"</string>
<string name="switch_bar_on" msgid="1770868129120096114">"ஆன்"</string>
<string name="switch_bar_off" msgid="5669805115416379556">"ஆஃப்"</string>
- <!-- no translation found for tile_unavailable (3095879009136616920) -->
- <skip />
+ <string name="tile_unavailable" msgid="3095879009136616920">"இல்லை"</string>
<string name="nav_bar" msgid="4642708685386136807">"வழிசெலுத்தல் பட்டி"</string>
<string name="nav_bar_layout" msgid="4716392484772899544">"தளவமைப்பு"</string>
<string name="left_nav_bar_button_type" msgid="2634852842345192790">"கூடுதல் இடப்புற பட்டன் வகை"</string>
@@ -840,7 +832,7 @@
<string name="reset" msgid="8715144064608810383">"மீட்டமை"</string>
<string name="adjust_button_width" msgid="8313444823666482197">"பட்டனின் அகலத்தை மாற்று"</string>
<string name="clipboard" msgid="8517342737534284617">"கிளிப்போர்டு"</string>
- <string name="accessibility_key" msgid="3471162841552818281">"தனிப்பயன் வழிசெலுத்தல் பட்டன்"</string>
+ <string name="accessibility_key" msgid="3471162841552818281">"பிரத்தியேக வழிசெலுத்தல் பட்டன்"</string>
<string name="left_keycode" msgid="8211040899126637342">"இடப்புற விசைக்குறியீடு"</string>
<string name="right_keycode" msgid="2480715509844798438">"வலப்புற விசைக்குறியீடு"</string>
<string name="left_icon" msgid="5036278531966897006">"இடப்புற ஐகான்"</string>
@@ -996,6 +988,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"கீழே இடப்புறமாக நகர்த்து"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"கீழே வலதுபுறமாக நகர்த்து"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"மூடுக"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"சிஸ்டம் நேவிகேஷன் மாற்றப்பட்டது. மாற்றங்களைச் செய்ய ‘அமைப்புகளுக்குச்’ செல்லவும்."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"சிஸ்டம் நேவிகேஷனை மாற்ற ’அமைப்புகளுக்குச்’ செல்லவும்"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"இயக்க நேரம்"</string>
@@ -1005,10 +1003,7 @@
<string name="quick_controls_title" msgid="525285759614231333">"விரைவுக் கட்டுப்பாடுகள்"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"கட்டுப்பாடுகளைச் சேர்த்தல்"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"எந்த ஆப்ஸிலிருந்து கட்டுப்பாடுகளைச் சேர்க்க வேண்டும் என்பதைத் தேர்ந்தெடுங்கள்"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">தற்போது பிடித்தவை: <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="one">தற்போது பிடித்தது: <xliff:g id="NUMBER_0">%s</xliff:g>.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"கட்டுப்பாடுகள்"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"விரைவு அணுகலுக்கான கட்டுப்பாடுகளைத் தேர்ந்தெடுங்கள்"</string>
<!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
@@ -1017,4 +1012,6 @@
<skip />
<!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
<skip />
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
+ <skip />
</resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 7c94117..dd8dcdf 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"అనుమతించు"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB డీబగ్గింగ్కి అనుమతి లేదు"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ఈ పరికరానికి ప్రస్తుతం సైన్ ఇన్ చేసిన వినియోగదారు USB డీబగ్గింగ్ ఆన్ చేయలేరు. ఈ ఫీచర్ ఉపయోగించడానికి, ప్రాథమిక వినియోగదారుకి మారాలి."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"ఈ నెట్వర్క్ పై వైర్లెస్ డీబగ్గింగ్ను అనుమతిస్తారా?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"నెట్వర్క్ పేరు (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi చిరునామా (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"ఈ నెట్వర్క్ నుండి ఎల్లప్పుడూ అనుమతించు"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"అనుమతించు"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"వైర్లెస్ డీబగ్గింగ్కి అనుమతి లేదు"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ఈ పరికరానికి ప్రస్తుతం సైన్ ఇన్ చేసిన యూజర్, వైర్లెస్ డీబగ్గింగ్ ఆన్ చేయలేరు. ఈ ఫీచర్ ఉపయోగించడానికి, ప్రాథమిక యూజర్ కి స్విచ్ అవ్వండి."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB పోర్ట్ నిలిపివేయబడింది"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"మీ పరికరంలోకి నీరు లేదా చెత్తాచెదారం చేరిపోకుండా కాపాడటానికి, USB పోర్ట్ నిలిపివేయబడుతుంది, అలాగే యాక్సెసరీలు వేటిని గుర్తించదు.\n\nUSB పోర్ట్ను ఉపయోగించడం సురక్షితమేనని నిర్ధారించుకున్న తర్వాత, మళ్లీ మీకో నోటిఫికేషన్ రూపంలో తెలియజేయబడుతుంది."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"ఛార్జర్లు, యాక్సెసరీలను గుర్తించే విధంగా USB పోర్ట్ ప్రారంభించబడింది"</string>
@@ -88,7 +94,7 @@
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"పరికరం ఆడియో"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"మీ పరికరం నుండి వచ్చే సంగీతం, కాల్లు, రింగ్టోన్ల వంటి ధ్వనులు"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"మైక్రోఫోన్"</string>
- <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"పరికరం ఆడియో, మైక్రో ఫోన్"</string>
+ <string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"పరికరం ఆడియో, మైక్రోఫోన్"</string>
<string name="screenrecord_start" msgid="330991441575775004">"ప్రారంభం"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"స్క్రీన్ రికార్డింగ్ చేయబడుతోంది"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"స్క్రీన్, ఆడియో రికార్డింగ్ చేయబడుతున్నాయి"</string>
@@ -115,7 +121,7 @@
<string name="accessibility_menu" msgid="2701163794470513040">"మెను"</string>
<string name="accessibility_accessibility_button" msgid="4089042473497107709">"యాక్సెస్ సామర్థ్యం"</string>
<string name="accessibility_rotate_button" msgid="1238584767612362586">"స్క్రీన్ను తిప్పండి"</string>
- <string name="accessibility_recent" msgid="901641734769533575">"అవలోకనం"</string>
+ <string name="accessibility_recent" msgid="901641734769533575">"ఓవర్వ్యూ"</string>
<string name="accessibility_search_light" msgid="524741790416076988">"వెతుకు"</string>
<string name="accessibility_camera_button" msgid="2938898391716647247">"కెమెరా"</string>
<string name="accessibility_phone_button" msgid="4256353121703100427">"ఫోన్"</string>
@@ -236,7 +242,7 @@
<string name="accessibility_desc_quick_settings" msgid="4374766941484719179">"శీఘ్ర సెట్టింగ్లు."</string>
<string name="accessibility_desc_lock_screen" msgid="5983125095181194887">"లాక్ స్క్రీన్."</string>
<string name="accessibility_desc_settings" msgid="6728577365389151969">"సెట్టింగ్లు"</string>
- <string name="accessibility_desc_recent_apps" msgid="1748675199348914194">"అవలోకనం."</string>
+ <string name="accessibility_desc_recent_apps" msgid="1748675199348914194">"ఓవర్వ్యూ."</string>
<string name="accessibility_desc_work_lock" msgid="4355620395354680575">"కార్యాలయ లాక్ స్క్రీన్"</string>
<string name="accessibility_desc_close" msgid="8293708213442107755">"మూసివేస్తుంది"</string>
<string name="accessibility_quick_settings_wifi" msgid="167707325133803052">"<xliff:g id="SIGNAL">%1$s</xliff:g>."</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"నిర్వహించండి"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"చరిత్ర"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"నిశ్శబ్ద నోటిఫికేషన్లు"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"అలర్ట్ చేసే నోటిఫికేషన్లు"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"సంభాషణలు"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"అన్ని నిశ్శబ్ద నోటిఫికేషన్లను క్లియర్ చేస్తుంది"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"అంతరాయం కలిగించవద్దు ద్వారా నోటిఫికేషన్లు పాజ్ చేయబడ్డాయి"</string>
@@ -619,7 +626,7 @@
<string name="show_battery_percentage_summary" msgid="9053024758304102915">"ఛార్జింగ్లో లేనప్పుడు స్థితి పట్టీ చిహ్నం లోపల బ్యాటరీ స్థాయి శాతం చూపుతుంది"</string>
<string name="quick_settings" msgid="6211774484997470203">"శీఘ్ర సెట్టింగ్లు"</string>
<string name="status_bar" msgid="4357390266055077437">"స్థితి పట్టీ"</string>
- <string name="overview" msgid="3522318590458536816">"స్థూలదృష్టి"</string>
+ <string name="overview" msgid="3522318590458536816">"ఓవర్వ్యూ"</string>
<string name="demo_mode" msgid="263484519766901593">"సిస్టమ్ UI డెమో మోడ్"</string>
<string name="enable_demo_mode" msgid="3180345364745966431">"డెమో మోడ్ ప్రారంభించండి"</string>
<string name="show_demo_mode" msgid="3677956462273059726">"డెమో మోడ్ చూపు"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"శబ్దం లేదా వైబ్రేషన్ లేకుండా దృష్టి కేంద్రీకరించడానికి మీకు సహాయపడుతుంది."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"శబ్దం లేదా వైబ్రేషన్తో మీరు దృష్టి సారించేలా చేస్తుంది."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ఫ్లోటింగ్ షార్ట్కట్తో మీ దృష్టిని ఈ కంటెంట్పై నిలిపి ఉంచుతుంది."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ఇటీవల బబుల్లు ఏవీ లేవు"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"ఇటీవలి బబుల్లు, తీసివేసిన బబుల్లు ఇక్కడ కనిపిస్తాయి."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ఈ నోటిఫికేషన్లను సవరించడం వీలుపడదు."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"ఈ నోటిఫికేషన్ల సమూహాన్ని ఇక్కడ కాన్ఫిగర్ చేయలేము"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"ప్రాక్సీ చేయబడిన నోటిఫికేషన్"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"దిగువ ఎడమవైపునకు తరలించు"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"దిగవు కుడివైపునకు జరుపు"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"విస్మరించు"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"సిస్టమ్ నావిగేషన్ అప్డేట్ చేయబడింది. మార్పులు చేయడానికి, సెట్టింగ్లకు వెళ్లండి."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"సిస్టమ్ నావిగేషన్ను అప్డేట్ చేయడానికి సెట్టింగ్లకు వెళ్లండి"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"స్టాండ్బై"</string>
@@ -983,16 +994,12 @@
<string name="quick_controls_title" msgid="525285759614231333">"త్వరిత నియంత్రణలు"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"నియంత్రణలను జోడించండి"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"దాని నుండి నియంత్రణలను జోడించేలా ఒక యాప్ను ఎంచుకోండి"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ప్రస్తుత ఇష్టాలు.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> ప్రస్తుత ఇష్టం.</item>
- </plurals>
+ <!-- no translation found for controls_number_of_favorites (1057347832073807380) -->
<string name="controls_favorite_default_title" msgid="967742178688938137">"నియంత్రణలు"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"త్వరిత యాక్సెస్ కోసం నియంత్రణలను ఎంచుకోండి"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"ఇష్టమైనవి"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"అన్ని"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"అన్ని నియంత్రణలు గల జాబితాను లోడ్ చేయలేకపోయాము."</string>
+ <!-- no translation found for controls_favorite_other_zone_header (9089613266575525252) -->
<skip />
</resources>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index fa22de8..d45b7dc 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"อนุญาต"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"ไม่อนุญาตให้แก้ไขข้อบกพร่องผ่าน USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์อยู่ในขณะนี้ไม่สามารถเปิดการแก้ไขข้อบกพร่องผ่าน USB ได้ หากต้องการใช้ฟีเจอร์นี้ ให้เปลี่ยนไปเป็นผู้ใช้หลัก"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"อนุญาตให้แก้ไขข้อบกพร่องผ่าน Wi-Fi ในเครือข่ายนี้ใช่ไหม"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"ชื่อเครือข่าย (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nที่อยู่ Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"อนุญาตเสมอในเครือข่ายนี้"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"อนุญาต"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"ไม่อนุญาตให้แก้ไขข้อบกพร่องผ่าน Wi-Fi"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"ผู้ใช้ที่ลงชื่อเข้าใช้อุปกรณ์อยู่ในขณะนี้เปิดการแก้ไขข้อบกพร่องผ่าน Wi-Fi ไม่ได้ โปรดเปลี่ยนไปเป็นผู้ใช้หลักเพื่อใช้ฟีเจอร์นี้"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"พอร์ต USB ถูกปิดใช้"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"พอร์ต USB ปิดใช้อยู่และจะไม่ตรวจหาอุปกรณ์เสริมใดๆ เพื่อปกป้องอุปกรณ์จากของเหลวและฝุ่นละออง \n\nคุณจะได้รับแจ้งเมื่อใช้พอร์ต USB ได้อีกครั้ง"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"เปิดใช้พอร์ต USB แล้วเพื่อตรวจหาที่ชาร์จและอุปกรณ์เสริม"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"จัดการ"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"ประวัติ"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"การแจ้งเตือนแบบไม่มีเสียง"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"มีการแจ้งเตือน"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"การสนทนา"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"ล้างการแจ้งเตือนแบบไม่มีเสียงทั้งหมด"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"หยุดการแจ้งเตือนชั่วคราวโดย \"ห้ามรบกวน\""</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"ช่วยรักษาสมาธิของคุณด้วยการไม่ส่งเสียงหรือสั่น"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"ดึงความสนใจของคุณด้วยเสียงและการสั่น"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"ดึงดูดความสนใจของคุณไว้เสมอด้วยทางลัดแบบลอยที่มายังเนื้อหานี้"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"ไม่มีบับเบิลเมื่อเร็วๆ นี้"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"บับเบิลที่แสดงและที่ปิดไปเมื่อเร็วๆ นี้จะปรากฏที่นี่"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"แก้ไขการแจ้งเตือนเหล่านี้ไม่ได้"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"การแจ้งเตือนกลุ่มนี้กำหนดค่าที่นี่ไม่ได้"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"การแจ้งเตือนที่ผ่านพร็อกซี"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"ย้ายไปด้านซ้ายล่าง"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"ย้ายไปด้านขาวล่าง"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"ปิด"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"อัปเดตการไปยังส่วนต่างๆ ของระบบแล้ว หากต้องการเปลี่ยนแปลง ให้ไปที่การตั้งค่า"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"ไปที่การตั้งค่าเพื่ออัปเดตการไปยังส่วนต่างๆ ของระบบ"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"สแตนด์บาย"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"การควบคุมอย่างรวดเร็ว"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"เพิ่มการควบคุม"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"เลือกแอปเพื่อเพิ่มการควบคุม"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">รายการโปรดในปัจจุบัน <xliff:g id="NUMBER_1">%s</xliff:g> รายการ</item>
- <item quantity="one">รายการโปรดในปัจจุบัน <xliff:g id="NUMBER_0">%s</xliff:g> รายการ</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">เพิ่มตัวควบคุม <xliff:g id="NUMBER_1">%s</xliff:g> ตัวแล้ว</item>
+ <item quantity="one">เพิ่มตัวควบคุม <xliff:g id="NUMBER_0">%s</xliff:g> ตัวแล้ว</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"การควบคุม"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"เลือกการควบคุมสำหรับการเข้าถึงด่วน"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"รายการโปรด"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"ทั้งหมด"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"โหลดรายการตัวควบคุมทั้งหมดไม่ได้"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"อื่นๆ"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 016c4be..7cecf13 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Payagan"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Hindi pinapayagan ang pagde-debug sa pamamagitan ng USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Hindi mao-on ng user na kasalukuyang naka-sign in sa device na ito ang pag-debug ng USB. Upang magamit ang feature na ito, lumipat sa pangunahing user."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Payagan ang wireless na pag-debug sa network na ito?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Pangalan ng Network (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nAddress ng Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Palaging payagan sa network na ito"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Payagan"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Hindi pinapayagan ang wireless na pag-debug"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Hindi mao-on ng user na kasalukuyang naka-sign in sa device na ito ang wireless na pag-debug. Para magamit ang feature na ito, lumipat sa pangunahing user."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Na-disable ang USB port"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Para protektahan ang iyong device sa likido o dumi, na-disable ang USB port at hindi ito makaka-detect ng anumang accessory.\n\nAabisuhan ka kapag ayos nang gamitin ulit ang USB port."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Na-enable ang USB port para ma-detect ang mga charger at accessory"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Pamahalaan"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"History"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Mga silent na notification"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Mga nag-aalertong notification"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Mga Pag-uusap"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"I-clear ang lahat ng silent na notification"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Mga notification na na-pause ng Huwag Istorbohin"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Nakakatulong sa iyong tumuon nang walang tunog o pag-vibrate."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Kinukuha ang iyong atensyon sa pamamagitan ng tunog o pag-vibrate."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Pinapanatili ang iyong atensyon sa pamamagitan ng lumulutang na shortcut sa content na ito."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Walang kamakailang bubble"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Lalabas dito ang kamakailang bubbles at na-dismiss na bubbles."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Hindi puwedeng baguhin ang mga notification na ito."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Hindi mako-configure dito ang pangkat na ito ng mga notification"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Na-proxy na notification"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Ilipat sa kaliwa sa ibaba"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Ilipat sa kanan sa ibaba"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"I-dismiss"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Na-update na ang pag-navigate ng system. Para gumawa ng mga pagbabago, pumunta sa Mga Setting."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Pumunta sa Mga Setting para i-update ang pag-navigate sa system"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Naka-standby"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Mga Mabilisang Kontrol"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Magdagdag ng Mga Kontrol"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Pumili ng app kung saan magdaragdag ng mga kontrol"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> kasalukuyang paborito.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> na kasalukuyang paborito.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> kontrol ang naidagdag.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> na kontrol ang naidagdag.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Mga Kontrol"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Pumili ng mga kontrol para sa mabilis na pag-access"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Paborito"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Lahat"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Hindi ma-load ang listahan ng lahat ng control."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Iba pa"</string>
</resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index de79fc4..150363e 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"İzin ver"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB hata ayıklama işlevine izin verilmiyor"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Bu cihazda geçerli olarak oturum açmış olan kullanıcı, USB hata ayıklama özelliğini açamaz. Bu özelliği kullanmak için birincil kullanıcıya geçin."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Bu ağda kablosuz hata ayıklamaya izin verilsin mi?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Ağ Adı (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nKablosuz Adresi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Bu ağda her zaman izin ver"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"İzin ver"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Kablosuz hata ayıklamaya izin verilmiyor"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Bu cihazda geçerli olarak oturum açmış olan kullanıcı, kablosuz hata ayıklama özelliğini açamaz. Bu özelliği kullanmak için birincil kullanıcıya geçin."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB bağlantı noktası devre dışı bırakıldı"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Cihazınızı sıvılardan veya tozlardan korumak için USB bağlantı noktası devre dışı bırakıldı ve aksesuarları algılamayacak.\n\nUSB bağlantı noktasını tekrar sorunsuz kullanabileceğiniz zaman bilgilendirileceksiniz."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB bağlantı noktası, şarj cihazlarını ve aksesuarları algılamak üzere etkinleştirildi"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Yönet"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Geçmiş"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Sessiz bildirimler"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Uyaran bildirimler"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Görüşmeler"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Sessiz bildirimlerin tümünü temizle"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Bildirimler, Rahatsız Etmeyin özelliği tarafından duraklatıldı"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ses veya titreşim olmadan odaklanmanıza yardımcı olur."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Ses veya titreşimle dikkatinizi çeker."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Kayan kısayolla dikkatinizi bu içerik üzerinde tutar."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Son kapatılan baloncuk yok"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Son baloncuklar ve kapattığınız baloncuklar burada görünür."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirimler değiştirilemez."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Bu bildirim grubu burada yapılandırılamaz"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Proxy uygulanan bildirim"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Sol alta taşı"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Sağ alta taşı"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Kapat"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Sistemde gezinme yöntemi güncellendi. Değişiklik yapmak için Ayarlar\'a gidin."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Sistemde gezinme yöntemini güncellemek için Ayarlar\'a gidin"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Beklemeye alınıyor"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Hızlı Kontroller"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Kontrol Ekle"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Hangi uygulamadan kontrol ekleneceğini seçin"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> mevcut favori.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> mevcut favori.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> kontrol eklendi.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> kontrol eklendi.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Kontroller"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Hızlı erişim için kontrolleri seçin"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Favoriler"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tümü"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Tüm kontrollerin listesi yüklenemedi."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Diğer"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 0d73da3..347532d 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Дозволити"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ви не можете вмикати налагодження USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Користувач поточного облікового запису не може вмикати налагодження USB. Щоб увімкнути цю функцію, увійдіть в обліковий запис основного користувача."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Дозволити бездротове налагодження в цій мережі?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Ім\'я мережі (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nАдреса Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Завжди дозволяти в цій мережі"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Дозволити"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Бездротове налагодження заборонено"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Користувач поточного облікового запису не може вмикати бездротове налагодження. Щоб активувати цю функцію, увійдіть в обліковий запис основного користувача."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB-порт вимкнено"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Щоб захистити ваш пристрій від рідини та сміття, USB-порт вимкнено. Він не виявлятиме жодних аксесуарів.\n\nКоли USB-порт можна буде використовувати, ви отримаєте сповіщення."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Порт USB виявлятиме зарядні пристрої та аксесуари"</string>
@@ -494,6 +500,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Керувати"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Історія"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Беззвучні сповіщення"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Сповіщення зі звуком чи вібрацією"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Чати"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Очистити всі беззвучні сповіщення"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Режим \"Не турбувати\" призупинив сповіщення"</string>
@@ -692,10 +699,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Не відволікає увагу звуковим сигналом або вібрацією."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Привертає увагу звуковим сигналом або вібрацією."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Привертає увагу до контенту плаваючим ярликом."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Немає нещодавніх спливаючих сповіщень"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Тут з\'являтимуться нещодавні й відхилені спливаючі сповіщення."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Ці сповіщення не можна змінити."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Цю групу сповіщень не можна налаштувати тут"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Проксі-сповіщення"</string>
@@ -984,6 +989,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Перемістити ліворуч униз"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Перемістити праворуч униз"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Закрити"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Навігацію в системі оновлено. Щоб внести зміни, перейдіть у налаштування."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Перейдіть у налаштування, щоб оновити навігацію в системі"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим очікування"</string>
@@ -993,18 +1004,16 @@
<string name="quick_controls_title" msgid="525285759614231333">"Елементи швидкого керування"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Додайте елементи керування"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"З якого додатка потрібно вибрати елементи керування?"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one">Вибрано <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="few">Вибрано <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="many">Вибрано <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
- <item quantity="other">Вибрано <xliff:g id="NUMBER_1">%s</xliff:g>.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one">Додано <xliff:g id="NUMBER_1">%s</xliff:g> елемент керування.</item>
+ <item quantity="few">Додано <xliff:g id="NUMBER_1">%s</xliff:g> елементи керування.</item>
+ <item quantity="many">Додано <xliff:g id="NUMBER_1">%s</xliff:g> елементів керування.</item>
+ <item quantity="other">Додано <xliff:g id="NUMBER_1">%s</xliff:g> елемента керування.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Елементи керування"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Виберіть елементи керування для швидкого доступу"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Вибране"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Усі"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Не вдалося завантажити список усіх елементів керування."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Інше"</string>
</resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 99be4bf..a1523bf 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"اجازت دیں"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB ڈیبگ کرنے کی اجازت نہیں ہے"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"اس آلہ پر فی الحال سائن ان کردہ صارف USB ڈیبگنگ آن نہیں کر سکتا۔ اس خصوصیت کا استعمال کرنے کیلئے، ابتدائی صارف پر سوئچ کریں۔"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"اس نیٹ ورک پر وائرلیس ڈیبگنگ کرنے کی اجازت دیں؟"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"نیٹ ورک کا نام (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\n Wi-Fi کا پتہ (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"اس نیٹ ورک پر ہمیشہ اجازت دیں"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"اجازت دیں"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"وائرلیس ڈیبگنگ کرنے کی اجازت نہیں ہے"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"اس آلہ پر فی الحال سائن ان کردہ صارف وائرلیس ڈیبگنگ آن نہیں کر سکتا۔ اس خصوصیت کا استعمال کرنے کے ليے، ابتدائی صارف پر سوئچ کریں۔"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB پورٹ غیر فعال ہو گیا"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"آپ کے آلے کی سیال یا دھول سے حفاظت کرنے کے لیے، USB پورٹ کو غیر فعال کر دیا گیا ہے اور یہ کسی لوازم کا پتہ نہیں لگا پائے گا۔\n\nUSB پورٹ کا دوبارہ استعمال کرنا ٹھیک ہونے پر آپ کو مطلع کیا جائے گا۔"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"چارجرز اور لوازمات کا پتا لگانے کے لیے USB پورٹ فعال ہے"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"نظم کریں"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"سرگزشت"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"اطلاعات خاموش کریں"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"متنبہ کرنے کی اطلاعات"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"گفتگوئیں"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"سبھی خاموش اطلاعات کو صاف کریں"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"\'ڈسٹرب نہ کریں\' کے ذریعے اطلاعات کو موقوف کیا گیا"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"بغیر آواز یا وائبریشن کے آپ کو فوکس کرنے میں مدد کرتا ہے۔"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"آواز اور وائبریشن کے ذریعے آپ کی توجہ حاصل کرتا ہے۔"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"اس مواد کے فلوٹنگ شارٹ کٹ کے ساتھ آپ کی توجہ دیتی ہے۔"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"کوئی حالیہ بلبلہ نہیں"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"حالیہ بلبلے اور برخاست بلبلے یہاں ظاہر ہوں گے۔"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"ان اطلاعات کی ترمیم نہیں کی جا سکتی۔"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"اطلاعات کے اس گروپ کو یہاں کنفیگر نہیں کیا جا سکتا"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"پراکسی اطلاع"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"نیچے بائیں جانب لے جائیں"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"نیچے دائیں جانب لے جائیں"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"برخاست کریں"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"سسٹم نیویگیشن اپ ڈیٹ کیا گیا۔ تبدیلیاں کرنے کے لیے، ترتیبات پر جائیں۔"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"سسٹم نیویگیشن اپ ڈیٹ کرنے کے لیے ترتیبات پر جائیں"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"اسٹینڈ بائی"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"فوری کنٹرولز"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"کنٹرولز شامل کریں"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"ایک ایسی ایپ کا انتخاب جس سے کنٹرول شامل کرنا چاہتے ہیں"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> موجودہ پسندیدہ ہیں۔</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> موجودہ پسندیدہ ہے۔</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> کنٹرولز شامل کر دیے گئے۔</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> کنٹرول شامل کر دیا گیا۔</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"کنٹرولز"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"فوری رسائی کیلئے کنٹرولز کا انتخاب کریں"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"پسندیدگیاں"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"تمام"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"تمام کنٹرولز کی فہرست لوڈ نہیں کی جا سکی۔"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"دیگر"</string>
</resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index 27a3f08..7192a8e 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Ruxsat berish"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"USB orqali nosozliklarni tuzatishga ruxsat berilmagan"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"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."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Bu tarmoqdagi nosozliklar aniqlanishiga ruxsat berilsinmi?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Tarmoq nomi (SSID):\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi Manzil (BSSID):\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Bu tarmoqda doim ruxsat etilsin"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Ruxsat"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Simsiz tarmoqdagi nosozliklar aniqlanishiga ruxsat berilmagan"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Ayni paytda ushbu qurilmaga oʻz hisobi bilan kirgan foydalanuvchi simsiz tarmoqdagi nosozliklarni aniqlanish funksiyasini yoqa olmaydi. Bu funksiyadan foydalanish uchun asosiy foydalanuvchi profiliga oʻting."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB port faolsizlashtirildi"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"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."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Quvvatlash moslamalari va aksessuarlarni aniqlash uchun USB port yoqildi"</string>
@@ -83,7 +89,7 @@
<string name="screenrecord_name" msgid="2596401223859996572">"Ekranni yozib olish vositasi"</string>
<string name="screenrecord_channel_description" msgid="4147077128486138351">"Ekrandan yozib olish seansi uchun joriy bildirishnoma"</string>
<string name="screenrecord_start_label" msgid="1750350278888217473">"Yozib olish boshlansinmi?"</string>
- <string name="screenrecord_description" msgid="1123231719680353736">"Yozib olishda Android tizimi ekraningizda koʻringan yoki qurilmangizda ijro etilgan maxfiy maʼlumotlari ham yozib olinishi mumkin. Bunga parollar, toʻlovga oid axborot, suratlar, xabarlar va audio kiradi."</string>
+ <string name="screenrecord_description" msgid="1123231719680353736">"Yozib olishda Android tizimi ekraningizda koʻringan yoki qurilmangizda ijro etilgan maxfiy axborotni ham yozib olishi mumkin. Bunga parollar, toʻlovga oid axborot, suratlar, xabarlar va audio kiradi."</string>
<string name="screenrecord_audio_label" msgid="6183558856175159629">"Audio yozib olish"</string>
<string name="screenrecord_device_audio_label" msgid="9016927171280567791">"Qurilmadagi audio"</string>
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"Qurilmangizdagi musiqa, chaqiruvlar va ringtonlar kabi ovozlar"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Boshqarish"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Tarix"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Sokin bildirishnomalar"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Bildirishnomalar bildirilishi"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Suhbatlar"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Barcha sokin bildirishnomalarni tozalash"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Bezovta qilinmasin rejimida bildirishnomalar pauza qilingan"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Bildirishnomalar tovush va tebranish bilan keladi."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Bu kontentni ochuvchi erkin yorliq diqqatingizda boʻladi."</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Avvalgi pufakchalar topilmadi"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"Avval yopilgan pufakchalar shu yerda chiqadi."</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Bu yerda oxirgi va yopilgan qalqib chiquvchi bildirishnomalar chiqadi."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Bu bildirishnomalarni tahrirlash imkonsiz."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Ushbu bildirishnomalar guruhi bu yerda sozlanmaydi"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Ishonchli bildirishnoma"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Quyi chapga surish"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Quyi oʻngga surish"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Yopish"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Tizim navigatsiyasi yangilandi. Buni Sozlamalar orqali oʻzgartirishingiz mumkin."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Tizim navigatsiyasini yangilash uchun Sozlamalarni oching"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Kutib turing"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Tezkor sozlamalar"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Elementlar kiritish"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Boshqaruv elementlariga kiritish uchun ilovani tanlang"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">Saralanganlarda <xliff:g id="NUMBER_1">%s</xliff:g> ta element bor.</item>
- <item quantity="one">Saralanganlarda <xliff:g id="NUMBER_0">%s</xliff:g> ta element bor.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ta nazorat kiritilgan.</item>
+ <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> ta nazorat kiritilgan.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Boshqaruv elementlari"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Tezkor kirish uchun boshqaruv elementlarini tanlang"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Saralanganlar"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"Hammasi"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"Boshqaruv elementlarining barchasi yuklanmadi."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Boshqa"</string>
</resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index 46775ef..a9dd01d 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Cho phép"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Không cho phép chế độ gỡ lỗi qua USB"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"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."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Cho phép gỡ lỗi không dây trên mạng này?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Tên mạng (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nĐịa chỉ Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Luôn cho phép trên mạng này"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Cho phép"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Không cho phép gỡ lỗi không dây"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"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 không dây. Để sử dụng tính năng này, hãy chuyển sang người dùng chính."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Đã tắt cổng USB"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Để 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."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Đã bật cổng USB để phát hiện bộ sạc và phụ kiện"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Quản lý"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Lịch sử"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Thông báo im lặng"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Thông báo bằng chế độ rung hoặc âm thanh"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Cuộc trò chuyện"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Xóa tất cả thông báo im lặng"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Chế độ Không làm phiền đã tạm dừng thông báo"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Giúp bạn tập trung bằng cách tắt tiếng hoặc không rung."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Thu hút sự chú ý của bạn bằng cách bật tiếng hoặc rung."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Luôn chú ý vào nội dung này bằng phím tắt nổi."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Không có bong bóng nào gần đây"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Bong bóng đã tắt và bong bóng gần đây sẽ xuất hiện ở đây."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Không thể sửa đổi các thông báo này."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Không thể định cấu hình nhóm thông báo này tại đây"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Thông báo đã xử lý qua máy chủ proxy"</string>
@@ -716,7 +721,7 @@
<string name="notification_conversation_unfavorite" msgid="181383708304763807">"Không phải là cuộc trò chuyện quan trọng"</string>
<string name="notification_conversation_mute" msgid="268951550222925548">"Bị tắt tiếng"</string>
<string name="notification_conversation_unmute" msgid="2692255619510896710">"Thông báo"</string>
- <string name="notification_conversation_bubble" msgid="2242180995373949022">"Hiển thị dưới dạng bong bóng"</string>
+ <string name="notification_conversation_bubble" msgid="2242180995373949022">"Hiển thị bong bóng"</string>
<string name="notification_conversation_unbubble" msgid="6908427185031099868">"Xóa bong bóng"</string>
<string name="notification_conversation_home_screen" msgid="8347136037958438935">"Thêm vào màn hình chính"</string>
<string name="notification_menu_accessibility" msgid="8984166825879886773">"<xliff:g id="APP_NAME">%1$s</xliff:g> <xliff:g id="MENU_DESCRIPTION">%2$s</xliff:g>"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Chuyển tới dưới cùng bên trái"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Chuyển tới dưới cùng bên phải"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Loại bỏ"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Đã cập nhật chế độ di chuyển trên hệ thống. Để thay đổi, hãy chuyển đến phần Cài đặt."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Chuyển đến phần Cài đặt để cập nhật chế độ di chuyển trên hệ thống"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Chế độ chờ"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Điều khiển nhanh"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Thêm các tùy chọn điều khiển"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Chọn một ứng dụng để thêm các tùy chọn điều khiển"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> tùy chọn điều khiển yêu thích hiện tại.</item>
- <item quantity="one"><xliff:g id="NUMBER_0">%s</xliff:g> tùy chọn điều khiển yêu thích hiện tại.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">Đã thêm <xliff:g id="NUMBER_1">%s</xliff:g> tùy chọn điều khiển.</item>
+ <item quantity="one">Đã thêm <xliff:g id="NUMBER_0">%s</xliff:g> tùy chọn điều khiển.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Các tùy chọn điều khiển"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Chọn các tùy chọn điều khiển để truy cập nhanh"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Tiêu đề yêu thích"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Tất cả"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Không thể tải danh sách tất cả tùy chọn điều khiển."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Khác"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index ff6ecfd..e80a624 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"允许"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"不允许使用 USB 调试功能"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"目前已登录此设备的用户无法开启 USB 调试功能。要使用此功能,请切换为主要用户的帐号。"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"要在此网络上允许无线调试吗?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"网络名称 (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWLAN 地址 (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"在此网络上始终允许"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"允许"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"不允许使用无线调试功能"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"目前已登录此设备的用户无法开启无线调试功能。要使用此功能,请切换为主要用户的帐号。"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB 端口已停用"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"为避免液体或碎屑导致您的设备受损,系统已停用 USB 端口,因此目前无法检测任何配件。\n\n系统会在重新允许使用 USB 端口时通知您。"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB 端口已启用,可检测充电器和配件"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"管理"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"历史记录"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"无声通知"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"提醒通知"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"对话"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"清除所有无声通知"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"勿扰模式暂停的通知"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"不会发出提示音或振动,可帮助您保持专注。"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"通过提示音或振动吸引您的注意。"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"通过可链接到这项内容的浮动快捷方式吸引您的注意。"</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"最近没有气泡"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"此处会显示最近的气泡和已关闭的气泡。"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"无法修改这些通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"您无法在此处配置这组通知"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"代理通知"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"移至左下角"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"移至右下角"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"关闭"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系统导航已更新。要进行更改,请转到“设置”。"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"转到“设置”即可更新系统导航"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待机"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"快速控制"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"添加控件"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"选择要添加的控件来自哪个应用"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">当前有 <xliff:g id="NUMBER_1">%s</xliff:g> 项收藏。</item>
- <item quantity="one">当前有 <xliff:g id="NUMBER_0">%s</xliff:g> 项收藏。</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">已添加 <xliff:g id="NUMBER_1">%s</xliff:g> 个控件。</item>
+ <item quantity="one">已添加 <xliff:g id="NUMBER_0">%s</xliff:g> 个控件。</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"控件"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"选择用于快速访问的控件"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"收藏"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"全部"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"无法加载所有控件的列表。"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"其他"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 3a8c9fd..4787b9b 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"允許"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"不允許 USB 偵錯"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"目前登入此裝置的使用者無法啟用 USB 偵錯功能。如要使用此功能,請切換至主要使用者。"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"要在此網絡上允許無線偵錯功能嗎?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"網絡名稱 (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi 地址 (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"在此網絡上永遠允許"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"允許"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"不允許無線偵錯功能"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"目前登入此裝置的使用者無法啟用無線偵錯功能。如要使用此功能,請切換至主要使用者。"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"已停用 USB 連接埠"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"為了保護您的裝置免受液體或碎片損害,USB 連接埠已停用,因此不會偵測到任何配件。\n\nUSB 連接埠可安全使用時,您會收到通知。"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"已啟用 USB 連接埠以偵測充電器和配件"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"管理"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"記錄"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"靜音通知"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"提醒通知"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"對話"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"清除所有靜音通知"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"「請勿騷擾」模式已將通知暫停"</string>
@@ -686,8 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"助您保持專注,不會發出聲音或震動。"</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"發出聲音或震動來吸引您的注意。"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"為此內容建立浮動捷徑以保持注意力。"</string>
- <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"最近沒有任何泡泡"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"最近關閉的泡泡會顯示在這裡,方便你輕鬆存取。"</string>
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"沒有最近曾使用的小視窗"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"最近曾使用和關閉的小視窗會在這裡顯示。"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在此設定這組通知"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"代理通知"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"移去左下角"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"移去右下角"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"關閉"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系統導覽已更新。如需變更,請前往「設定」。"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"前往「設定」更新系統導覽"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"快速控制介面"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"新增控制項"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"選擇要新增控制項的應用程式"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">目前有 <xliff:g id="NUMBER_1">%s</xliff:g> 個收藏。</item>
- <item quantity="one">目前有 <xliff:g id="NUMBER_0">%s</xliff:g> 個收藏。</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">已新增 <xliff:g id="NUMBER_1">%s</xliff:g> 個控制項。</item>
+ <item quantity="one">已新增 <xliff:g id="NUMBER_0">%s</xliff:g> 個控制項。</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"控制項"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"選擇控制項以快速存取"</string>
- <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"常用控制項"</string>
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"常用"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"全部"</string>
- <string name="controls_favorite_load_error" msgid="2533215155804455348">"無法載入完整的控制項清單。"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"無法載入完整控制項清單。"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"其他"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index 1974b1d..3158a30 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"允許"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"無權使用 USB 偵錯功能"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"目前登入這個裝置的使用者無法啟用 USB 偵錯功能。如要使用這項功能,請切換到主要使用者。"</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"要允許透過這個網路執行無線偵錯嗎?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"網路名稱 (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nWi‑Fi 位址 (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"一律允許透過這個網路執行"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"允許"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"不允許使用無線偵錯功能"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"目前登入這部裝置的使用者無法開啟無線偵錯功能。如要使用這項功能,請切換到主要使用者。"</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"USB 連接埠已停用"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"為了避免液體或灰塵導致你的裝置受損,系統已停用 USB 連接埠,因此目前無法偵測任何配件。\n\n系統會在可繼續使用 USB 連接埠時通知你。"</string>
<string name="usb_port_enabled" msgid="531823867664717018">"USB 通訊埠已啟用,可偵測充電器和配件"</string>
@@ -89,7 +95,7 @@
<string name="screenrecord_device_audio_description" msgid="4922694220572186193">"裝置播放的音效,例如音樂、通話和鈴聲"</string>
<string name="screenrecord_mic_label" msgid="2111264835791332350">"麥克風"</string>
<string name="screenrecord_device_audio_and_mic_label" msgid="1831323771978646841">"裝置音訊和麥克風"</string>
- <string name="screenrecord_start" msgid="330991441575775004">"開始錄製"</string>
+ <string name="screenrecord_start" msgid="330991441575775004">"開始"</string>
<string name="screenrecord_ongoing_screen_only" msgid="4459670242451527727">"正在錄製螢幕畫面"</string>
<string name="screenrecord_ongoing_screen_and_audio" msgid="5351133763125180920">"錄製螢幕畫面和音訊"</string>
<string name="screenrecord_taps_label" msgid="1595690528298857649">"顯示輕觸螢幕的位置"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"管理"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"記錄"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"靜音通知"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"快訊通知"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"對話"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"清除所有靜音通知"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"「零打擾」模式已將通知設為暫停"</string>
@@ -687,7 +694,7 @@
<string name="notification_channel_summary_default" msgid="3539949463907902037">"發出音效或震動吸引你的注意力。"</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"利用浮動式捷徑快速存取這項內容。"</string>
<string name="bubble_overflow_empty_title" msgid="3120029421991510842">"最近沒有任何泡泡"</string>
- <string name="bubble_overflow_empty_subtitle" msgid="3106801169793396894">"最近關閉的泡泡會顯示在這裡,方便你輕鬆存取。"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"最近的泡泡和已關閉的泡泡會顯示在這裡。"</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"無法修改這些通知。"</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"無法在這裡設定這個通知群組"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"經過 Proxy 處理的通知"</string>
@@ -972,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"移至左下方"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"移至右下方"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"關閉"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"系統操作機制已更新。如要進行變更,請前往「設定」。"</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"請前往「設定」更新系統操作機制"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string>
@@ -981,13 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"快速控制項"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"新增控制項"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"選擇要新增控制項的來源應用程式"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="other">目前有 <xliff:g id="NUMBER_1">%s</xliff:g> 個常用控制項。</item>
- <item quantity="one">目前有 <xliff:g id="NUMBER_0">%s</xliff:g> 個常用控制項。</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="other">已新增 <xliff:g id="NUMBER_1">%s</xliff:g> 個控制項。</item>
+ <item quantity="one">已新增 <xliff:g id="NUMBER_0">%s</xliff:g> 個控制項。</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"控制項"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"選擇要快速存取的控制項"</string>
<string name="controls_favorite_header_favorites" msgid="3118600046217493471">"常用控制項"</string>
<string name="controls_favorite_header_all" msgid="7507855973418969992">"全部"</string>
<string name="controls_favorite_load_error" msgid="2533215155804455348">"無法載入完整的控制項清單。"</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"其他"</string>
</resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 9782aa2..e94a8ab 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -63,6 +63,12 @@
<string name="usb_debugging_allow" msgid="1722643858015321328">"Vumela"</string>
<string name="usb_debugging_secondary_user_title" msgid="7843050591380107998">"Ukususa iphutha kwe-USB akuvunyelwe"</string>
<string name="usb_debugging_secondary_user_message" msgid="3740347841470403244">"Umsebenzisi manje ongene ngemvume kule divayisi entsha akakwazi ukuvula ukulungisa amaphutha ku-USB. Ukuze usebenzise lesi sici, shintshela kumsebenzisi oyinhloko."</string>
+ <string name="wifi_debugging_title" msgid="7300007687492186076">"Vumela ukulungisa amaphutha okungenantambo kule nethiwekhi?"</string>
+ <string name="wifi_debugging_message" msgid="5461204211731802995">"Igama Lenethiwekhi (SSID)\n<xliff:g id="SSID_0">%1$s</xliff:g>\n\nIkheli le-Wi‑Fi (BSSID)\n<xliff:g id="BSSID_1">%2$s</xliff:g>"</string>
+ <string name="wifi_debugging_always" msgid="2968383799517975155">"Njalo nje vumela le nethiwekhi"</string>
+ <string name="wifi_debugging_allow" msgid="4573224609684957886">"Vumela"</string>
+ <string name="wifi_debugging_secondary_user_title" msgid="2493201475880517725">"Ukulungisa amaphutha okungenantambo akuvunyelwe"</string>
+ <string name="wifi_debugging_secondary_user_message" msgid="4492383073970079751">"Umsebenzisi manje ongene ngemvume kule divayisi entsha akakwazi ukuvula ukulungisa amaphutha okungenantambo. Ukuze usebenzise lesi sici, shintshela kumsebenzisi oyinhloko."</string>
<string name="usb_contaminant_title" msgid="894052515034594113">"Imbobo ye-USB ikhutshaziwe"</string>
<string name="usb_contaminant_message" msgid="7730476585174719805">"Ukuze kuvikelwe idivayisi yakho kusukela kuketshezi noma ama-debris, imbobo ye-USB iyakhutshazwa futhi ngeke ize ithole noma iziphi izisetshenziswa.\n\nUzokwaziswa uma sekulungile ukusebenzisa imbobo ye-USB futhi."</string>
<string name="usb_port_enabled" msgid="531823867664717018">"Imbobo ye-USB inikwe amandla ukuze ithole amashaja nezisetshenziswa"</string>
@@ -488,6 +494,7 @@
<string name="manage_notifications_text" msgid="6885645344647733116">"Phatha"</string>
<string name="manage_notifications_history_text" msgid="57055985396576230">"Umlando"</string>
<string name="notification_section_header_gentle" msgid="3044910806569985386">"Thulisa izaziso"</string>
+ <string name="notification_section_header_alerting" msgid="3168140660646863240">"Izaziso zokuxwayisa"</string>
<string name="notification_section_header_conversations" msgid="821834744538345661">"Izingxoxo"</string>
<string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Sula zonke izaziso ezithulile"</string>
<string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Izaziso zimiswe okwesikhashana ukungaphazamisi"</string>
@@ -686,10 +693,8 @@
<string name="notification_channel_summary_low" msgid="7300447764759926720">"Ikusiza ukuthi ugxile ngaphandle komsindo noma ukudlidliza."</string>
<string name="notification_channel_summary_default" msgid="3539949463907902037">"Ithola ukunaka kwakho ngomsindo noma ukudlidliza."</string>
<string name="notification_channel_summary_bubble" msgid="7235935211580860537">"Igcina ukunaka kwakho ngesinqamuleli esintantayo kulokhu okuqukethwe."</string>
- <!-- no translation found for bubble_overflow_empty_title (3120029421991510842) -->
- <skip />
- <!-- no translation found for bubble_overflow_empty_subtitle (3106801169793396894) -->
- <skip />
+ <string name="bubble_overflow_empty_title" msgid="3120029421991510842">"Awekho amabhamuza akamuva"</string>
+ <string name="bubble_overflow_empty_subtitle" msgid="198257239740933131">"Amabhamuza akamuva namabhamuza asusiwe azobonakala lapha."</string>
<string name="notification_unblockable_desc" msgid="2073030886006190804">"Lezi zaziso azikwazi ukushintshwa."</string>
<string name="notification_multichannel_desc" msgid="7414593090056236179">"Leli qembu lezaziso alikwazi ukulungiselelwa lapha"</string>
<string name="notification_delegate_header" msgid="1264510071031479920">"Isaziso sommeli"</string>
@@ -974,6 +979,12 @@
<string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Hambisa inkinobho ngakwesokunxele"</string>
<string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Hambisa inkinobho ngakwesokudla"</string>
<string name="bubble_dismiss_text" msgid="7071770411580452911">"Cashisa"</string>
+ <!-- no translation found for bubbles_user_education_title (3385222165904578710) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_description (6663205638091146934) -->
+ <skip />
+ <!-- no translation found for bubbles_user_education_manage (1391639189507036423) -->
+ <skip />
<string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Ukuzulazula kwesistimu kubuyekeziwe. Ukuze wenze ushintsho, hamba kokuthi Izilungiselelo."</string>
<string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Hamba kuzilungiselelo ukuze ubuyekeze ukuzulazula kwesistimu"</string>
<string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ilindile"</string>
@@ -983,16 +994,14 @@
<string name="quick_controls_title" msgid="525285759614231333">"Izilawuli Ezisheshayo"</string>
<string name="controls_providers_title" msgid="8844124515157926071">"Engeza Izilawuli"</string>
<string name="controls_providers_subtitle" msgid="8187768950110836569">"Khetha uhlelo lokusebenza ozongeza kulo izilawuli"</string>
- <plurals name="controls_number_of_favorites" formatted="false" msgid="5867139290551373147">
- <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> izintandokazi zamanje.</item>
- <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> izintandokazi zamanje.</item>
+ <plurals name="controls_number_of_favorites" formatted="false" msgid="1057347832073807380">
+ <item quantity="one"><xliff:g id="NUMBER_1">%s</xliff:g> ukulawulwa okwengeziwe.</item>
+ <item quantity="other"><xliff:g id="NUMBER_1">%s</xliff:g> ukulawulwa okwengeziwe.</item>
</plurals>
<string name="controls_favorite_default_title" msgid="967742178688938137">"Izilawuli"</string>
<string name="controls_favorite_subtitle" msgid="4049644994401173949">"Khetha izilawuli mayelana nokufinyelela okusheshayo"</string>
- <!-- no translation found for controls_favorite_header_favorites (3118600046217493471) -->
- <skip />
- <!-- no translation found for controls_favorite_header_all (7507855973418969992) -->
- <skip />
- <!-- no translation found for controls_favorite_load_error (2533215155804455348) -->
- <skip />
+ <string name="controls_favorite_header_favorites" msgid="3118600046217493471">"Izintandokazi"</string>
+ <string name="controls_favorite_header_all" msgid="7507855973418969992">"Konke"</string>
+ <string name="controls_favorite_load_error" msgid="2533215155804455348">"Uhlu lwazo zonke izilawuli alilayishekanga."</string>
+ <string name="controls_favorite_other_zone_header" msgid="9089613266575525252">"Okunye"</string>
</resources>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index e45cbec..a48861c 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -486,6 +486,7 @@
-->
<dimen name="qs_customize_header_min_height">46dp</dimen>
<dimen name="qs_tile_margin_top">18dp</dimen>
+ <dimen name="qs_tile_icon_background_stroke_width">-1dp</dimen>
<dimen name="qs_tile_background_size">44dp</dimen>
<dimen name="qs_quick_tile_size">48dp</dimen>
<dimen name="qs_quick_tile_padding">12dp</dimen>
@@ -1207,11 +1208,13 @@
<dimen name="qs_seamless_icon_size">20dp</dimen>
<dimen name="qqs_media_spacing">8dp</dimen>
- <dimen name="magnification_border_size">5dp</dimen>
+ <dimen name="magnification_border_drag_size">35dp</dimen>
+ <dimen name="magnification_outer_border_margin">15dp</dimen>
+ <dimen name="magnification_inner_border_margin">17dp</dimen>
+ <dimen name="magnification_mirror_surface_margin">20dp</dimen>
<dimen name="magnification_frame_move_short">5dp</dimen>
<dimen name="magnification_frame_move_long">25dp</dimen>
- <dimen name="magnification_drag_view_width">100dp</dimen>
- <dimen name="magnification_drag_view_height">35dp</dimen>
+ <dimen name="magnification_drag_view_size">38dp</dimen>
<dimen name="magnification_controls_size">90dp</dimen>
<dimen name="magnifier_left_right_controls_width">35dp</dimen>
<dimen name="magnifier_left_right_controls_height">45dp</dimen>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecCompat.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecCompat.java
index ebdc884..a6fdfc4 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecCompat.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/view/AppTransitionAnimationSpecCompat.java
@@ -36,6 +36,6 @@
public AppTransitionAnimationSpec toAppTransitionAnimationSpec() {
return new AppTransitionAnimationSpec(mTaskId,
- mBuffer != null ? mBuffer.createGraphicBufferHandle() : null, mRect);
+ mBuffer != null ? mBuffer.getHardwareBuffer() : null, mRect);
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
index b3ce4a0..8cd7293 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
@@ -16,40 +16,68 @@
package com.android.systemui.accessibility;
+import android.annotation.MainThread;
+import android.annotation.NonNull;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.database.ContentObserver;
+import android.graphics.Rect;
import android.os.Handler;
+import android.os.RemoteException;
import android.provider.Settings;
+import android.util.Log;
+import android.view.Display;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.IWindowMagnificationConnection;
+import android.view.accessibility.IWindowMagnificationConnectionCallback;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.systemui.R;
import com.android.systemui.SystemUI;
import com.android.systemui.dagger.qualifiers.Main;
+import com.android.systemui.statusbar.CommandQueue;
import javax.inject.Inject;
import javax.inject.Singleton;
/**
- * Class to handle changes to setting window_magnification value.
+ * Class to handle the interaction with
+ * {@link com.android.server.accessibility.AccessibilityManagerService}. It invokes
+ * {@link AccessibilityManager#setWindowMagnificationConnection(IWindowMagnificationConnection)}
+ * when {@code IStatusBar#requestWindowMagnificationConnection(boolean)} is called.
*/
@Singleton
-public class WindowMagnification extends SystemUI {
- private WindowMagnificationController mWindowMagnificationController;
- private final Handler mHandler;
+public class WindowMagnification extends SystemUI implements WindowMagnifierCallback,
+ CommandQueue.Callbacks {
+ private static final String TAG = "WindowMagnification";
+ private static final int CONFIG_MASK =
+ ActivityInfo.CONFIG_DENSITY | ActivityInfo.CONFIG_ORIENTATION;
+ @VisibleForTesting
+ protected WindowMagnificationController mWindowMagnificationController;
+ private final Handler mHandler;
+ private final AccessibilityManager mAccessibilityManager;
+ private final CommandQueue mCommandQueue;
+
+ private WindowMagnificationConnectionImpl mWindowMagnificationConnectionImpl;
private Configuration mLastConfiguration;
@Inject
- public WindowMagnification(Context context, @Main Handler mainHandler) {
+ public WindowMagnification(Context context, @Main Handler mainHandler,
+ CommandQueue commandQueue) {
super(context);
mHandler = mainHandler;
mLastConfiguration = new Configuration(context.getResources().getConfiguration());
+ mAccessibilityManager = (AccessibilityManager) mContext.getSystemService(
+ Context.ACCESSIBILITY_SERVICE);
+ mCommandQueue = commandQueue;
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
final int configDiff = newConfig.diff(mLastConfiguration);
- if ((configDiff & ActivityInfo.CONFIG_DENSITY) == 0) {
+ if ((configDiff & CONFIG_MASK) == 0) {
return;
}
mLastConfiguration.setTo(newConfig);
@@ -60,6 +88,7 @@
@Override
public void start() {
+ mCommandQueue.addCallback(this);
mContext.getContentResolver().registerContentObserver(
Settings.Secure.getUriFor(Settings.Secure.WINDOW_MAGNIFICATION),
true, new ContentObserver(mHandler) {
@@ -75,7 +104,8 @@
boolean enable = Settings.Secure.getInt(mContext.getContentResolver(),
Settings.Secure.WINDOW_MAGNIFICATION) != 0;
if (enable) {
- enableMagnification();
+ enableMagnification(
+ mContext.getResources().getInteger(R.integer.magnification_default_scale));
} else {
disableMagnification();
}
@@ -84,17 +114,131 @@
}
}
- private void enableMagnification() {
- if (mWindowMagnificationController == null) {
- mWindowMagnificationController = new WindowMagnificationController(mContext, null);
- }
- mWindowMagnificationController.createWindowMagnification();
+ private void enableMagnification(float scale) {
+ enableWindowMagnification(Display.DEFAULT_DISPLAY, scale, Float.NaN, Float.NaN);
}
private void disableMagnification() {
+ disableWindowMagnification(Display.DEFAULT_DISPLAY);
+ }
+
+ @MainThread
+ void enableWindowMagnification(int displayId, float scale, float centerX, float centerY) {
+ //TODO: b/144080869 support multi-display.
+ if (mWindowMagnificationController == null) {
+ mWindowMagnificationController = new WindowMagnificationController(mContext, null,
+ this);
+ }
+ mWindowMagnificationController.enableWindowMagnification(scale, centerX, centerY);
+ }
+
+ @MainThread
+ void setScale(int displayId, float scale) {
+ //TODO: b/144080869 support multi-display.
+ if (mWindowMagnificationController != null) {
+ mWindowMagnificationController.setScale(scale);
+ }
+ }
+
+ @MainThread
+ void moveWindowMagnifier(int displayId, float offsetX, float offsetY) {
+ //TODO: b/144080869 support multi-display.
+ if (mWindowMagnificationController != null) {
+ mWindowMagnificationController.moveWindowMagnifier(offsetX, offsetY);
+ }
+ }
+
+ @MainThread
+ void disableWindowMagnification(int displayId) {
+ //TODO: b/144080869 support multi-display.
if (mWindowMagnificationController != null) {
mWindowMagnificationController.deleteWindowMagnification();
}
mWindowMagnificationController = null;
}
+
+ @Override
+ public void onWindowMagnifierBoundsChanged(int displayId, Rect frame) {
+ if (mWindowMagnificationConnectionImpl != null) {
+ mWindowMagnificationConnectionImpl.onWindowMagnifierBoundsChanged(displayId, frame);
+ }
+ }
+
+ @Override
+ public void requestWindowMagnificationConnection(boolean connect) {
+ if (connect) {
+ setWindowMagnificationConnection();
+ } else {
+ clearWindowMagnificationConnection();
+ }
+ }
+
+ private void setWindowMagnificationConnection() {
+ if (mWindowMagnificationConnectionImpl == null) {
+ mWindowMagnificationConnectionImpl = new WindowMagnificationConnectionImpl(this,
+ mHandler);
+ }
+ mAccessibilityManager.setWindowMagnificationConnection(
+ mWindowMagnificationConnectionImpl);
+ }
+
+ private void clearWindowMagnificationConnection() {
+ mAccessibilityManager.setWindowMagnificationConnection(null);
+ //TODO: destroy controllers.
+ }
+
+ private static class WindowMagnificationConnectionImpl extends
+ IWindowMagnificationConnection.Stub {
+
+ private static final String TAG = "WindowMagnificationConnectionImpl";
+
+ private IWindowMagnificationConnectionCallback mConnectionCallback;
+ private final WindowMagnification mWindowMagnification;
+ private final Handler mHandler;
+
+ WindowMagnificationConnectionImpl(@NonNull WindowMagnification windowMagnification,
+ @Main Handler mainHandler) {
+ mWindowMagnification = windowMagnification;
+ mHandler = mainHandler;
+ }
+
+ @Override
+ public void enableWindowMagnification(int displayId, float scale, float centerX,
+ float centerY) {
+ mHandler.post(
+ () -> mWindowMagnification.enableWindowMagnification(displayId, scale, centerX,
+ centerY));
+ }
+
+ @Override
+ public void setScale(int displayId, float scale) {
+ mHandler.post(() -> mWindowMagnification.setScale(displayId, scale));
+ }
+
+ @Override
+ public void disableWindowMagnification(int displayId) {
+ mHandler.post(() -> mWindowMagnification.disableWindowMagnification(displayId));
+ }
+
+ @Override
+ public void moveWindowMagnifier(int displayId, float offsetX, float offsetY) {
+ mHandler.post(
+ () -> mWindowMagnification.moveWindowMagnifier(displayId, offsetX, offsetY));
+ }
+
+ @Override
+ public void setConnectionCallback(IWindowMagnificationConnectionCallback callback) {
+ mConnectionCallback = callback;
+ }
+
+ void onWindowMagnifierBoundsChanged(int displayId, Rect frame) {
+ if (mConnectionCallback != null) {
+ try {
+ mConnectionCallback.onWindowMagnifierBoundsChanged(displayId, frame);
+ } catch (RemoteException e) {
+ Log.e(TAG, "Failed to inform bounds changed", e);
+ }
+ }
+ }
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
index 7176490..a4b8efe 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
@@ -18,16 +18,26 @@
import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
+import android.content.pm.ActivityInfo;
import android.content.res.Resources;
+import android.graphics.Matrix;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.PointF;
import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.Region;
+import android.os.AsyncTask;
import android.os.Binder;
+import android.os.RemoteException;
+import android.util.Log;
import android.view.Display;
import android.view.Gravity;
+import android.view.IWindow;
+import android.view.IWindowSession;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.Surface;
@@ -37,6 +47,7 @@
import android.view.View;
import android.view.ViewTreeObserver;
import android.view.WindowManager;
+import android.view.WindowManagerGlobal;
import com.android.systemui.R;
import com.android.systemui.shared.system.WindowManagerWrapper;
@@ -44,13 +55,16 @@
/**
* Class to handle adding and removing a window magnification.
*/
-public class WindowMagnificationController implements View.OnTouchListener, SurfaceHolder.Callback,
+class WindowMagnificationController implements View.OnTouchListener, SurfaceHolder.Callback,
MirrorWindowControl.MirrorWindowDelegate {
- private final int mBorderSize;
+ private static final String TAG = "WindowMagnificationController";
private final Context mContext;
+ private final Resources mResources;
private final Point mDisplaySize = new Point();
private final int mDisplayId;
+ @Surface.Rotation
+ private int mRotation;
private final Rect mMagnificationFrame = new Rect();
private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
@@ -59,6 +73,7 @@
private float mScale;
private final Rect mTmpRect = new Rect();
+ private final Rect mMirrorViewBounds = new Rect();
// The root of the mirrored content
private SurfaceControl mMirrorSurface;
@@ -70,9 +85,13 @@
private View mBottomDrag;
private final PointF mLastDrag = new PointF();
+ @NonNull private final WindowMagnifierCallback mWindowMagnifierCallback;
private View mMirrorView;
private SurfaceView mMirrorSurfaceView;
+ private int mMirrorSurfaceMargin;
+ private int mBorderDragSize;
+ private int mOuterBorderSize;
private View mOverlayView;
// The boundary of magnification frame.
private final Rect mMagnificationFrameBoundary = new Rect();
@@ -80,34 +99,35 @@
@Nullable
private MirrorWindowControl mMirrorWindowControl;
- WindowMagnificationController(Context context, MirrorWindowControl mirrorWindowControl) {
+ WindowMagnificationController(Context context, MirrorWindowControl mirrorWindowControl,
+ @NonNull WindowMagnifierCallback callback) {
mContext = context;
+ mWindowMagnifierCallback = callback;
Display display = mContext.getDisplay();
display.getRealSize(mDisplaySize);
mDisplayId = mContext.getDisplayId();
+ mRotation = display.getRotation();
mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
- Resources r = context.getResources();
- mBorderSize = (int) r.getDimension(R.dimen.magnification_border_size);
+ mResources = mContext.getResources();
+ mScale = mResources.getInteger(R.integer.magnification_default_scale);
+ updateDimensions();
- mScale = r.getInteger(R.integer.magnification_default_scale);
mMirrorWindowControl = mirrorWindowControl;
if (mMirrorWindowControl != null) {
mMirrorWindowControl.setWindowDelegate(this);
}
+ setInitialStartBounds();
}
- /**
- * Creates a magnification window if it doesn't already exist.
- */
- void createWindowMagnification() {
- if (mMirrorView != null) {
- return;
- }
- setInitialStartBounds();
- setMagnificationFrameBoundary();
- createOverlayWindow();
+ private void updateDimensions() {
+ mMirrorSurfaceMargin = mResources.getDimensionPixelSize(
+ R.dimen.magnification_mirror_surface_margin);
+ mBorderDragSize = mResources.getDimensionPixelSize(
+ R.dimen.magnification_border_drag_size);
+ mOuterBorderSize = mResources.getDimensionPixelSize(
+ R.dimen.magnification_outer_border_margin);
}
private void createOverlayWindow() {
@@ -177,20 +197,61 @@
* @param configDiff a bit mask of the differences between the configurations
*/
void onConfigurationChanged(int configDiff) {
- // TODO(b/145780606): update toggle button UI.
- if (mMirrorView != null) {
- mWm.removeView(mMirrorView);
- createMirrorWindow();
+ if ((configDiff & ActivityInfo.CONFIG_DENSITY) != 0) {
+ updateDimensions();
+ // TODO(b/145780606): update toggle button UI.
+ if (mMirrorView != null) {
+ mWm.removeView(mMirrorView);
+ createMirrorWindow();
+ }
+ } else if ((configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0) {
+ onRotate();
}
}
+ /** Handles MirrorWindow position when the device rotation changed. */
+ private void onRotate() {
+ Display display = mContext.getDisplay();
+ display.getRealSize(mDisplaySize);
+ setMagnificationFrameBoundary();
+
+ // Keep MirrorWindow position on the screen unchanged when device rotates 90°
+ // clockwise or anti-clockwise.
+ final int rotationDegree = getDegreeFromRotation(display.getRotation(), mRotation);
+ final Matrix matrix = new Matrix();
+ matrix.setRotate(rotationDegree);
+ mRotation = display.getRotation();
+ if (rotationDegree == 90) {
+ matrix.postTranslate(mDisplaySize.x, 0);
+ } else if (rotationDegree == 270) {
+ matrix.postTranslate(0, mDisplaySize.y);
+ } else {
+ Log.w(TAG, "Invalid rotation change. " + rotationDegree);
+ return;
+ }
+ // The rect of MirrorView is going to be transformed.
+ WindowManager.LayoutParams params =
+ (WindowManager.LayoutParams) mMirrorView.getLayoutParams();
+ mTmpRect.set(params.x, params.y, params.x + params.width, params.y + params.height);
+ final RectF transformedRect = new RectF(mTmpRect);
+ matrix.mapRect(transformedRect);
+ moveWindowMagnifier(transformedRect.left - mTmpRect.left,
+ transformedRect.top - mTmpRect.top);
+ }
+
+ /** Returns the rotation degree change of two {@link Surface.Rotation} */
+ private int getDegreeFromRotation(@Surface.Rotation int newRotation,
+ @Surface.Rotation int oldRotation) {
+ final int rotationDiff = oldRotation - newRotation;
+ final int degree = (rotationDiff + 4) % 4 * 90;
+ return degree;
+ }
+
private void createMirrorWindow() {
// The window should be the size the mirrored surface will be but also add room for the
// border and the drag handle.
- int dragViewHeight = (int) mContext.getResources().getDimension(
- R.dimen.magnification_drag_view_height);
- int windowWidth = mMagnificationFrame.width() + 2 * mBorderSize;
- int windowHeight = mMagnificationFrame.height() + dragViewHeight + 2 * mBorderSize;
+ int windowWidth = mMagnificationFrame.width() + 2 * mMirrorSurfaceMargin;
+ int windowHeight = mMagnificationFrame.height() + 2 * mMirrorSurfaceMargin;
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
windowWidth, windowHeight,
@@ -207,9 +268,14 @@
mMirrorView = LayoutInflater.from(mContext).inflate(R.layout.window_magnifier_view, null);
mMirrorSurfaceView = mMirrorView.findViewById(R.id.surface_view);
- // This places the SurfaceView's SurfaceControl above the ViewRootImpl's SurfaceControl to
- // ensure the mirrored area can get touch instead of going to the window
- mMirrorSurfaceView.setZOrderOnTop(true);
+
+ // Allow taps to go through to the mirror SurfaceView below.
+ mMirrorSurfaceView.addOnLayoutChangeListener(
+ (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
+ int oldRight, int oldBottom)
+ -> {
+ applyTapExcludeRegion();
+ });
mMirrorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
@@ -217,6 +283,14 @@
| View.SYSTEM_UI_FLAG_FULLSCREEN
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
+ mMirrorView.addOnLayoutChangeListener(
+ (View v, int left, int top, int right, int bottom, int oldLeft, int oldTop,
+ int oldRight, int oldBottom)
+ -> AsyncTask.execute(() -> {
+ mMirrorView.getBoundsOnScreen(mMirrorViewBounds);
+ mWindowMagnifierCallback.onWindowMagnifierBoundsChanged(mDisplayId,
+ mMirrorViewBounds);
+ }));
mWm.addView(mMirrorView, params);
SurfaceHolder holder = mMirrorSurfaceView.getHolder();
@@ -226,6 +300,23 @@
addDragTouchListeners();
}
+ private void applyTapExcludeRegion() {
+ final Region tapExcludeRegion = calculateTapExclude();
+ final IWindow window = IWindow.Stub.asInterface(mMirrorView.getWindowToken());
+ try {
+ IWindowSession session = WindowManagerGlobal.getWindowSession();
+ session.updateTapExcludeRegion(window, tapExcludeRegion);
+ } catch (RemoteException e) {
+ }
+ }
+
+ private Region calculateTapExclude() {
+ Region regionInsideDragBorder = new Region(mBorderDragSize, mBorderDragSize,
+ mMirrorView.getWidth() - mBorderDragSize,
+ mMirrorView.getHeight() - mBorderDragSize);
+ return regionInsideDragBorder;
+ }
+
private void createControls() {
if (mMirrorWindowControl != null) {
mMirrorWindowControl.showControl(mOverlayView.getWindowToken());
@@ -234,9 +325,10 @@
private void setInitialStartBounds() {
// Sets the initial frame area for the mirror and places it in the center of the display.
- int initSize = Math.min(mDisplaySize.x, mDisplaySize.y) / 2;
- int initX = mDisplaySize.x / 2 - initSize / 2;
- int initY = mDisplaySize.y / 2 - initSize / 2;
+ final int initSize = Math.min(mDisplaySize.x, mDisplaySize.y) / 2
+ + 2 * mMirrorSurfaceMargin;
+ final int initX = mDisplaySize.x / 2 - initSize / 2;
+ final int initY = mDisplaySize.y / 2 - initSize / 2;
mMagnificationFrame.set(initX, initY, initX + initSize, initY + initSize);
}
@@ -271,7 +363,7 @@
}
/**
- * Modifies the placement of the mirrored content.
+ * Modifies the placement of the mirrored content when the position of mMirrorView is updated.
*/
private void modifyWindowMagnification(SurfaceControl.Transaction t) {
Rect sourceBounds = getSourceBounds(mMagnificationFrame, mScale);
@@ -279,15 +371,46 @@
// ViewRootImpl's position will change
mTmpRect.set(0, 0, mMagnificationFrame.width(), mMagnificationFrame.height());
- WindowManager.LayoutParams params =
- (WindowManager.LayoutParams) mMirrorView.getLayoutParams();
- params.x = mMagnificationFrame.left;
- params.y = mMagnificationFrame.top;
- mWm.updateViewLayout(mMirrorView, params);
+ updateMirrorViewLayout();
t.setGeometry(mMirrorSurface, sourceBounds, mTmpRect, Surface.ROTATION_0);
}
+ /**
+ * Updates the layout params of MirrorView and translates MirrorView position when the view is
+ * moved close to the screen edges.
+ */
+ private void updateMirrorViewLayout() {
+ WindowManager.LayoutParams params =
+ (WindowManager.LayoutParams) mMirrorView.getLayoutParams();
+ params.x = mMagnificationFrame.left - mMirrorSurfaceMargin;
+ params.y = mMagnificationFrame.top - mMirrorSurfaceMargin;
+
+ // Translates MirrorView position to make MirrorSurfaceView that is inside MirrorView
+ // able to move close to the screen edges.
+ final int maxMirrorViewX = mDisplaySize.x - mMirrorView.getWidth();
+ final int maxMirrorViewY = mDisplaySize.y - mMirrorView.getHeight();
+ final float translationX;
+ final float translationY;
+ if (params.x < 0) {
+ translationX = Math.max(params.x, -mOuterBorderSize);
+ } else if (params.x > maxMirrorViewX) {
+ translationX = Math.min(params.x - maxMirrorViewX, mOuterBorderSize);
+ } else {
+ translationX = 0;
+ }
+ if (params.y < 0) {
+ translationY = Math.max(params.y, -mOuterBorderSize);
+ } else if (params.y > maxMirrorViewY) {
+ translationY = Math.min(params.y - maxMirrorViewY, mOuterBorderSize);
+ } else {
+ translationY = 0;
+ }
+ mMirrorView.setTranslationX(translationX);
+ mMirrorView.setTranslationY(translationY);
+ mWm.updateViewLayout(mMirrorView, params);
+ }
+
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v == mDragView || v == mLeftDrag || v == mTopDrag || v == mRightDrag
@@ -303,22 +426,13 @@
mLastDrag.set(event.getRawX(), event.getRawY());
return true;
case MotionEvent.ACTION_MOVE:
- int xDiff = (int) (event.getRawX() - mLastDrag.x);
- int yDiff = (int) (event.getRawY() - mLastDrag.y);
- moveMirrorWindow(xDiff, yDiff);
+ moveWindowMagnifier(event.getRawX() - mLastDrag.x, event.getRawY() - mLastDrag.y);
mLastDrag.set(event.getRawX(), event.getRawY());
return true;
}
return false;
}
- private void moveMirrorWindow(int xOffset, int yOffset) {
- if (updateMagnificationFramePosition(xOffset, yOffset)) {
- modifyWindowMagnification(mTransaction);
- mTransaction.apply();
- }
- }
-
/**
* Calculates the desired source bounds. This will be the area under from the center of the
* displayFrame, factoring in scale.
@@ -395,11 +509,61 @@
@Override
public void move(int xOffset, int yOffset) {
+ moveWindowMagnifier(xOffset, yOffset);
+ }
+
+ /**
+ * Enables window magnification with specified parameters.
+ *
+ * @param scale the target scale
+ * @param centerX the screen-relative X coordinate around which to center,
+ * or {@link Float#NaN} to leave unchanged.
+ * @param centerY the screen-relative Y coordinate around which to center,
+ * or {@link Float#NaN} to leave unchanged.
+ */
+ void enableWindowMagnification(float scale, float centerX, float centerY) {
+ final float offsetX = Float.isNaN(centerX) ? 0
+ : centerX - mMagnificationFrame.exactCenterX();
+ final float offsetY = Float.isNaN(centerY) ? 0
+ : centerY - mMagnificationFrame.exactCenterY();
+ mScale = scale;
+ setMagnificationFrameBoundary();
+ updateMagnificationFramePosition((int) offsetX, (int) offsetY);
+ if (mMirrorView == null) {
+ createOverlayWindow();
+ } else {
+ modifyWindowMagnification(mTransaction);
+ mTransaction.apply();
+ }
+ }
+
+ /**
+ * Sets the scale of the magnified region if it's visible.
+ *
+ * @param scale the target scale
+ */
+ void setScale(float scale) {
+ if (mMirrorView == null || mScale == scale) {
+ return;
+ }
+ enableWindowMagnification(scale, Float.NaN, Float.NaN);
+ }
+
+ /**
+ * Moves the window magnifier with specified offset in pixels unit.
+ *
+ * @param offsetX the amount in pixels to offset the window magnifier in the X direction, in
+ * current screen pixels.
+ * @param offsetY the amount in pixels to offset the window magnifier in the Y direction, in
+ * current screen pixels.
+ */
+ void moveWindowMagnifier(float offsetX, float offsetY) {
if (mMirrorSurfaceView == null) {
return;
}
- mMagnificationFrame.offset(xOffset, yOffset);
- modifyWindowMagnification(mTransaction);
- mTransaction.apply();
+ if (updateMagnificationFramePosition((int) offsetX, (int) offsetY)) {
+ modifyWindowMagnification(mTransaction);
+ mTransaction.apply();
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java
new file mode 100644
index 0000000..2adb3eb
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnifierCallback.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2020 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.accessibility;
+
+import android.graphics.Rect;
+
+/**
+ * A callback to inform {@link com.android.server.accessibility.AccessibilityManagerService} about
+ * the UI state change or the user interaction.
+ */
+interface WindowMagnifierCallback {
+ /**
+ * Called when the bounds of window magnifier is changed.
+ * @param displayId The logical display id.
+ * @param bounds The bounds of window magnifier on the screen.
+ */
+ void onWindowMagnifierBoundsChanged(int displayId, Rect bounds);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index e666fb5..4b94168 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -1067,6 +1067,14 @@
}
/**
+ * Sets the action to run to dismiss the currently dragging object (either the stack or an
+ * individual bubble).
+ */
+ public void setReleasedInDismissTargetAction(Runnable action) {
+ mReleasedInDismissTargetAction = action;
+ }
+
+ /**
* If necessary, shows the user education view for the bubble stack. This appears the first
* time a user taps on a bubble.
*
@@ -1169,14 +1177,6 @@
}
}
- /*
- * Sets the action to run to dismiss the currently dragging object (either the stack or an
- * individual bubble).
- */
- public void setReleasedInDismissTargetAction(Runnable action) {
- mReleasedInDismissTargetAction = action;
- }
-
/**
* Dismiss the stack of bubbles.
*
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
index 8feee10..e2e1c62 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
@@ -13,6 +13,8 @@
*/
package com.android.systemui.qs.tileimpl;
+import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_STATE_DESCRIPTION;
+
import static com.android.systemui.qs.tileimpl.QSIconViewImpl.QS_ANIM_LENGTH;
import android.animation.ValueAnimator;
@@ -20,6 +22,7 @@
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.graphics.Color;
+import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.drawable.AdaptiveIconDrawable;
import android.graphics.drawable.Drawable;
@@ -73,6 +76,10 @@
private int mCircleColor;
private int mBgSize;
+ private static final int INVALID = -1;
+ private CharSequence mStateDescriptionDeltas = null;
+ private CharSequence mLastStateDescription;
+ private int mLastState = INVALID;
public QSTileBaseView(Context context, QSIconView icon) {
this(context, icon, false);
@@ -92,6 +99,12 @@
PathShape p = new PathShape(path, pathSize, pathSize);
ShapeDrawable d = new ShapeDrawable(p);
d.setTintList(ColorStateList.valueOf(Color.TRANSPARENT));
+ float backgroundStrokeWidth = context.getResources()
+ .getDimension(R.dimen.qs_tile_icon_background_stroke_width);
+ if (backgroundStrokeWidth > 0) {
+ d.getPaint().setStyle(Paint.Style.STROKE);
+ d.getPaint().setStrokeWidth(backgroundStrokeWidth);
+ }
int bgSize = context.getResources().getDimensionPixelSize(R.dimen.qs_tile_background_size);
d.setIntrinsicHeight(bgSize);
d.setIntrinsicWidth(bgSize);
@@ -250,8 +263,14 @@
if (!TextUtils.isEmpty(state.stateDescription)) {
stateDescription.append(", ");
stateDescription.append(state.stateDescription);
+ if (mLastState != INVALID && state.state == mLastState
+ && !state.stateDescription.equals(mLastStateDescription)) {
+ mStateDescriptionDeltas = state.stateDescription;
+ }
}
setStateDescription(stateDescription.toString());
+ mLastState = state.state;
+ mLastStateDescription = state.stateDescription;
mAccessibilityClass =
state.state == Tile.STATE_UNAVAILABLE ? null : state.expandedAccessibilityClassName;
@@ -314,6 +333,11 @@
if (!TextUtils.isEmpty(mAccessibilityClass)) {
event.setClassName(mAccessibilityClass);
}
+ if (event.getContentChangeTypes() == CONTENT_CHANGE_TYPE_STATE_DESCRIPTION
+ && mStateDescriptionDeltas != null) {
+ event.getText().add(mStateDescriptionDeltas);
+ mStateDescriptionDeltas = null;
+ }
}
@Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 888c7ab..c67ece0 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -130,7 +130,8 @@
state.label = mContext.getString(R.string.quick_settings_bluetooth_label);
state.secondaryLabel = TextUtils.emptyIfNull(
getSecondaryLabel(enabled, connecting, connected, state.isTransient));
- state.contentDescription = state.label;
+ state.contentDescription = mContext.getString(
+ R.string.accessibility_quick_settings_bluetooth);
state.stateDescription = "";
if (enabled) {
if (connected) {
@@ -148,15 +149,11 @@
} else {
state.icon =
ResourceIcon.get(com.android.internal.R.drawable.ic_qs_bluetooth);
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_bluetooth);
state.stateDescription = mContext.getString(R.string.accessibility_not_connected);
}
state.state = Tile.STATE_ACTIVE;
} else {
state.icon = ResourceIcon.get(com.android.internal.R.drawable.ic_qs_bluetooth);
- state.contentDescription = mContext.getString(
- R.string.accessibility_quick_settings_bluetooth);
state.state = Tile.STATE_INACTIVE;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
index 94afde78..1114972 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/CommandQueue.java
@@ -126,6 +126,7 @@
private static final int MSG_HIDE_TOAST = 54 << MSG_SHIFT;
private static final int MSG_TRACING_STATE_CHANGED = 55 << MSG_SHIFT;
private static final int MSG_SUPPRESS_AMBIENT_DISPLAY = 56 << MSG_SHIFT;
+ private static final int MSG_REQUEST_WINDOW_MAGNIFICATION_CONNECTION = 57 << MSG_SHIFT;
public static final int FLAG_EXCLUDE_NONE = 0;
public static final int FLAG_EXCLUDE_SEARCH_PANEL = 1 << 0;
@@ -338,6 +339,15 @@
* @param enabled
*/
default void onTracingStateChanged(boolean enabled) { }
+
+ /**
+ * Requests {@link com.android.systemui.accessibility.WindowMagnification} to invoke
+ * {@code android.view.accessibility.AccessibilityManager#
+ * setWindowMagnificationConnection(IWindowMagnificationConnection)}
+ *
+ * @param connect {@code true} if needs connection, otherwise set the connection to null.
+ */
+ default void requestWindowMagnificationConnection(boolean connect) { }
}
public CommandQueue(Context context) {
@@ -885,6 +895,14 @@
}
}
+ @Override
+ public void requestWindowMagnificationConnection(boolean connect) {
+ synchronized (mLock) {
+ mHandler.obtainMessage(MSG_REQUEST_WINDOW_MAGNIFICATION_CONNECTION, connect)
+ .sendToTarget();
+ }
+ }
+
private void handleShowImeButton(int displayId, IBinder token, int vis, int backDisposition,
boolean showImeSwitcher, boolean isMultiClientImeEnabled) {
if (displayId == INVALID_DISPLAY) return;
@@ -1302,6 +1320,11 @@
callbacks.suppressAmbientDisplay((boolean) msg.obj);
}
break;
+ case MSG_REQUEST_WINDOW_MAGNIFICATION_CONNECTION:
+ for (int i = 0; i < mCallbacks.size(); i++) {
+ mCallbacks.get(i).requestWindowMagnificationConnection((Boolean) msg.obj);
+ }
+ break;
}
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java
index 72d9d0e..2f3ebe2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationListener.java
@@ -207,6 +207,7 @@
false,
false,
null,
+ 0,
false
);
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
index b90cfa8..c9cc670 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
@@ -249,6 +249,7 @@
stats.notificationVisibility);
} catch (RemoteException e) {
// system process is dead if we're here.
+ mLogger.logRemoteExceptionOnNotificationClear(entry.getKey(), e);
}
}
}
@@ -277,6 +278,7 @@
mStatusBarService.onClearAllNotifications(userId);
} catch (RemoteException e) {
// system process is dead if we're here.
+ mLogger.logRemoteExceptionOnClearAllNotifications(e);
}
final List<NotificationEntry> entries = new ArrayList<>(getAllNotifs());
@@ -743,6 +745,6 @@
@Retention(RetentionPolicy.SOURCE)
public @interface CancellationReason {}
- public static final int REASON_NOT_CANCELED = -1;
+ static final int REASON_NOT_CANCELED = -1;
public static final int REASON_UNKNOWN = 0;
}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
index 8675cca..ef302f6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
@@ -16,11 +16,13 @@
package com.android.systemui.statusbar.notification.collection.notifcollection
+import android.os.RemoteException
import android.service.notification.NotificationListenerService.RankingMap
import com.android.systemui.log.LogBuffer
import com.android.systemui.log.LogLevel.DEBUG
import com.android.systemui.log.LogLevel.INFO
import com.android.systemui.log.LogLevel.WARNING
+import com.android.systemui.log.LogLevel.WTF
import com.android.systemui.log.dagger.NotificationLog
import javax.inject.Inject
@@ -92,6 +94,23 @@
buffer.log(TAG, DEBUG, { str1 = entry }, { " $str1" })
}
}
+
+ fun logRemoteExceptionOnNotificationClear(key: String, e: RemoteException) {
+ buffer.log(TAG, WTF, {
+ str1 = key
+ str2 = e.toString()
+ }, {
+ "RemoteException while attempting to clear $str1:\n$str2"
+ })
+ }
+
+ fun logRemoteExceptionOnClearAllNotifications(e: RemoteException) {
+ buffer.log(TAG, WTF, {
+ str1 = e.toString()
+ }, {
+ "RemoteException while attempting to clear all notifications:\n$str1"
+ })
+ }
}
-private const val TAG = "NotifCollection"
\ No newline at end of file
+private const val TAG = "NotifCollection"
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java
index 0147e7f..edbd794 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/RotationButtonController.java
@@ -36,8 +36,9 @@
import android.view.WindowManagerGlobal;
import android.view.accessibility.AccessibilityManager;
-import com.android.internal.logging.MetricsLogger;
-import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.logging.UiEvent;
+import com.android.internal.logging.UiEventLogger;
+import com.android.internal.logging.UiEventLoggerImpl;
import com.android.systemui.Dependency;
import com.android.systemui.Interpolators;
import com.android.systemui.R;
@@ -58,7 +59,7 @@
private static final int NUM_ACCEPTED_ROTATION_SUGGESTIONS_FOR_INTRODUCTION = 3;
- private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
+ private final UiEventLogger mUiEventLogger = new UiEventLoggerImpl();
private final ViewRippler mViewRippler = new ViewRippler();
private @StyleRes int mStyleRes;
@@ -318,7 +319,7 @@
}
private void onRotateSuggestionClick(View v) {
- mMetricsLogger.action(MetricsEvent.ACTION_ROTATION_SUGGESTION_ACCEPTED);
+ mUiEventLogger.log(RotationButtonEvent.ROTATION_SUGGESTION_ACCEPTED);
incrementNumAcceptedRotationSuggestionsIfNeeded();
setRotationLockedAtAngle(mLastRotationSuggestion);
}
@@ -340,7 +341,7 @@
private void showAndLogRotationSuggestion() {
setRotateSuggestionButtonState(true /* visible */);
rescheduleRotationTimeout(false /* reasonHover */);
- mMetricsLogger.visible(MetricsEvent.ROTATION_SUGGESTION_SHOWN);
+ mUiEventLogger.log(RotationButtonEvent.ROTATION_SUGGESTION_SHOWN);
}
private boolean shouldOverrideUserLockPrefs(final int rotation) {
@@ -469,4 +470,19 @@
}
};
}
+
+ enum RotationButtonEvent implements UiEventLogger.UiEventEnum {
+ @UiEvent(doc = "The rotation button was shown")
+ ROTATION_SUGGESTION_SHOWN(206),
+ @UiEvent(doc = "The rotation button was clicked")
+ ROTATION_SUGGESTION_ACCEPTED(207);
+
+ private final int mId;
+ RotationButtonEvent(int id) {
+ mId = id;
+ }
+ @Override public int getId() {
+ return mId;
+ }
+ }
}
diff --git a/packages/SystemUI/tests/AndroidManifest.xml b/packages/SystemUI/tests/AndroidManifest.xml
index 12c7048..10981b7 100644
--- a/packages/SystemUI/tests/AndroidManifest.xml
+++ b/packages/SystemUI/tests/AndroidManifest.xml
@@ -56,7 +56,8 @@
<application android:debuggable="true" android:largeHeap="true">
<uses-library android:name="android.test.runner" />
- <receiver android:name="com.android.systemui.SliceBroadcastRelayHandlerTest$Receiver">
+ <receiver android:name="com.android.systemui.SliceBroadcastRelayHandlerTest$Receiver"
+ android:exported="true">
<intent-filter>
<action android:name="com.android.systemui.action.TEST_ACTION" />
</intent-filter>
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/IWindowMagnificationConnectionTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/IWindowMagnificationConnectionTest.java
new file mode 100644
index 0000000..492c610
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/IWindowMagnificationConnectionTest.java
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2020 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.accessibility;
+
+import static org.junit.Assert.assertNotNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.os.RemoteException;
+import android.testing.AndroidTestingRunner;
+import android.view.Display;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.IWindowMagnificationConnection;
+import android.view.accessibility.IWindowMagnificationConnectionCallback;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.CommandQueue;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for {@link android.view.accessibility.IWindowMagnificationConnection} retrieved from
+ * {@link WindowMagnification}
+ */
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class IWindowMagnificationConnectionTest extends SysuiTestCase {
+
+ private static final int TEST_DISPLAY = Display.DEFAULT_DISPLAY;
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+ @Mock
+ private CommandQueue mCommandQueue;
+ @Mock
+ private IWindowMagnificationConnectionCallback mConnectionCallback;
+ @Mock
+ private WindowMagnificationController mWindowMagnificationController;
+ private IWindowMagnificationConnection mIWindowMagnificationConnection;
+ private WindowMagnification mWindowMagnification;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ getContext().addMockSystemService(Context.ACCESSIBILITY_SERVICE, mAccessibilityManager);
+ doAnswer(invocation -> {
+ mIWindowMagnificationConnection = invocation.getArgument(0);
+ return null;
+ }).when(mAccessibilityManager).setWindowMagnificationConnection(
+ any(IWindowMagnificationConnection.class));
+ mWindowMagnification = new WindowMagnification(getContext(),
+ getContext().getMainThreadHandler(), mCommandQueue);
+ mWindowMagnification.mWindowMagnificationController = mWindowMagnificationController;
+ mWindowMagnification.requestWindowMagnificationConnection(true);
+ assertNotNull(mIWindowMagnificationConnection);
+ mIWindowMagnificationConnection.setConnectionCallback(mConnectionCallback);
+ }
+
+ @Test
+ public void enableWindowMagnification() throws RemoteException {
+ mIWindowMagnificationConnection.enableWindowMagnification(TEST_DISPLAY, 3.0f, Float.NaN,
+ Float.NaN);
+ waitForIdleSync();
+
+ verify(mWindowMagnificationController).enableWindowMagnification(3.0f, Float.NaN,
+ Float.NaN);
+ }
+
+ @Test
+ public void disableWindowMagnification_deleteWindowMagnification() throws RemoteException {
+ mIWindowMagnificationConnection.enableWindowMagnification(TEST_DISPLAY, 3.0f, Float.NaN,
+ Float.NaN);
+ waitForIdleSync();
+
+ mIWindowMagnificationConnection.disableWindowMagnification(TEST_DISPLAY);
+ waitForIdleSync();
+
+ verify(mWindowMagnificationController).deleteWindowMagnification();
+ }
+
+ @Test
+ public void setScale() throws RemoteException {
+ mIWindowMagnificationConnection.setScale(TEST_DISPLAY, 3.0f);
+ waitForIdleSync();
+
+ verify(mWindowMagnificationController).setScale(3.0f);
+ }
+
+ @Test
+ public void moveWindowMagnifier() throws RemoteException {
+ mIWindowMagnificationConnection.moveWindowMagnifier(TEST_DISPLAY, 100f, 200f);
+ waitForIdleSync();
+
+ verify(mWindowMagnificationController).moveWindowMagnifier(100f, 200f);
+ }
+}
+
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
index 08a6172..68a9b92 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -42,6 +42,8 @@
@Mock
MirrorWindowControl mMirrorWindowControl;
+ @Mock
+ WindowMagnifierCallback mWindowMagnifierCallback;
private WindowMagnificationController mWindowMagnificationController;
private Instrumentation mInstrumentation;
@@ -50,7 +52,7 @@
MockitoAnnotations.initMocks(this);
mInstrumentation = InstrumentationRegistry.getInstrumentation();
mWindowMagnificationController = new WindowMagnificationController(getContext(),
- mMirrorWindowControl);
+ mMirrorWindowControl, mWindowMagnifierCallback);
verify(mMirrorWindowControl).setWindowDelegate(
any(MirrorWindowControl.MirrorWindowDelegate.class));
}
@@ -66,7 +68,8 @@
@Test
public void createWindowMagnification_showControl() {
mInstrumentation.runOnMainSync(() -> {
- mWindowMagnificationController.createWindowMagnification();
+ mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
+ Float.NaN);
});
mInstrumentation.waitForIdleSync();
verify(mMirrorWindowControl).showControl(any(IBinder.class));
@@ -75,7 +78,8 @@
@Test
public void deleteWindowMagnification_destroyControl() {
mInstrumentation.runOnMainSync(() -> {
- mWindowMagnificationController.createWindowMagnification();
+ mWindowMagnificationController.enableWindowMagnification(Float.NaN, Float.NaN,
+ Float.NaN);
});
mInstrumentation.waitForIdleSync();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java
new file mode 100644
index 0000000..cc76601
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationTest.java
@@ -0,0 +1,97 @@
+/*
+ * Copyright (C) 2020 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.accessibility;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.Rect;
+import android.os.RemoteException;
+import android.testing.AndroidTestingRunner;
+import android.view.Display;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.IWindowMagnificationConnection;
+import android.view.accessibility.IWindowMagnificationConnectionCallback;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.CommandQueue;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class WindowMagnificationTest extends SysuiTestCase {
+
+ @Mock
+ private AccessibilityManager mAccessibilityManager;
+ private CommandQueue mCommandQueue;
+ private WindowMagnification mWindowMagnification;
+
+ @Before
+ public void setUp() throws Exception {
+ MockitoAnnotations.initMocks(this);
+ getContext().addMockSystemService(Context.ACCESSIBILITY_SERVICE, mAccessibilityManager);
+
+ mCommandQueue = new CommandQueue(getContext());
+ mWindowMagnification = new WindowMagnification(getContext(),
+ getContext().getMainThreadHandler(), mCommandQueue);
+ mWindowMagnification.start();
+ }
+
+ @Test
+ public void requestWindowMagnificationConnection_setWindowMagnificationConnection() {
+ mCommandQueue.requestWindowMagnificationConnection(true);
+ waitForIdleSync();
+
+ verify(mAccessibilityManager).setWindowMagnificationConnection(any(
+ IWindowMagnificationConnection.class));
+
+ mCommandQueue.requestWindowMagnificationConnection(false);
+ waitForIdleSync();
+
+ verify(mAccessibilityManager).setWindowMagnificationConnection(null);
+ }
+
+ @Test
+ public void onWindowMagnifierBoundsChanged() throws RemoteException {
+ final IWindowMagnificationConnectionCallback connectionCallback = Mockito.mock(
+ IWindowMagnificationConnectionCallback.class);
+ final Rect testBounds = new Rect(0, 0, 500, 600);
+ doAnswer(invocation -> {
+ IWindowMagnificationConnection connection = invocation.getArgument(0);
+ connection.setConnectionCallback(connectionCallback);
+ return null;
+ }).when(mAccessibilityManager).setWindowMagnificationConnection(
+ any(IWindowMagnificationConnection.class));
+ mCommandQueue.requestWindowMagnificationConnection(true);
+ waitForIdleSync();
+
+ mWindowMagnification.onWindowMagnifierBoundsChanged(Display.DEFAULT_DISPLAY, testBounds);
+
+ verify(connectionCallback).onWindowMagnifierBoundsChanged(Display.DEFAULT_DISPLAY,
+ testBounds);
+ }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java
index cffcabb..66562f5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/CommandQueueTest.java
@@ -455,4 +455,11 @@
waitForIdleSync();
verify(mCallbacks).suppressAmbientDisplay(true);
}
+
+ @Test
+ public void testRequestWindowMagnificationConnection() {
+ mCommandQueue.requestWindowMagnificationConnection(true);
+ waitForIdleSync();
+ verify(mCallbacks).requestWindowMagnificationConnection(true);
+ }
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/RankingBuilder.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/RankingBuilder.java
index a58000d..aeb625c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/RankingBuilder.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/RankingBuilder.java
@@ -55,6 +55,7 @@
private boolean mIsVisuallyInterruptive = false;
private boolean mIsConversation = false;
private ShortcutInfo mShortcutInfo = null;
+ private int mRankingAdjustment = 0;
private boolean mIsBubble = false;
public RankingBuilder() {
@@ -83,6 +84,7 @@
mIsVisuallyInterruptive = ranking.visuallyInterruptive();
mIsConversation = ranking.isConversation();
mShortcutInfo = ranking.getShortcutInfo();
+ mRankingAdjustment = ranking.getRankingAdjustment();
mIsBubble = ranking.isBubble();
}
@@ -111,6 +113,7 @@
mIsVisuallyInterruptive,
mIsConversation,
mShortcutInfo,
+ mRankingAdjustment,
mIsBubble);
return ranking;
}
@@ -201,6 +204,11 @@
return this;
}
+ public RankingBuilder setRankingAdjustment(int rankingAdjustment) {
+ mRankingAdjustment = rankingAdjustment;
+ return this;
+ }
+
public RankingBuilder setImportance(@Importance int importance) {
mImportance = importance;
return this;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
index 972357e..6a8ae57 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
@@ -143,7 +143,7 @@
IMPORTANCE_DEFAULT,
null, null,
null, null, null, true, sentiment, false, -1, false, null, null, false, false,
- false, null, false);
+ false, null, 0, false);
return true;
}).when(mRankingMap).getRanking(eq(key), any(Ranking.class));
}
@@ -162,7 +162,7 @@
null, null,
null, null, null, true,
Ranking.USER_SENTIMENT_NEUTRAL, false, -1,
- false, smartActions, null, false, false, false, null, false);
+ false, smartActions, null, false, false, false, null, 0, false);
return true;
}).when(mRankingMap).getRanking(eq(key), any(Ranking.class));
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
index 2e787ce..0b04b0f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationEntryManagerInflationTest.java
@@ -287,7 +287,9 @@
false,
false,
null,
- false);
+ 0,
+ false
+ );
mRankingMap = new NotificationListenerService.RankingMap(new Ranking[] {ranking});
TestableLooper.get(this).processAllMessages();
diff --git a/packages/Tethering/AndroidManifest.xml b/packages/Tethering/AndroidManifest.xml
index 9328611..ab25747 100644
--- a/packages/Tethering/AndroidManifest.xml
+++ b/packages/Tethering/AndroidManifest.xml
@@ -44,7 +44,8 @@
android:extractNativeLibs="false"
android:persistent="true">
<service android:name="com.android.server.connectivity.tethering.TetheringService"
- android:permission="android.permission.MAINLINE_NETWORK_STACK">
+ android:permission="android.permission.MAINLINE_NETWORK_STACK"
+ android:exported="true">
<intent-filter>
<action android:name="android.net.ITetheringConnector"/>
</intent-filter>
diff --git a/packages/Tethering/AndroidManifest_InProcess.xml b/packages/Tethering/AndroidManifest_InProcess.xml
index 02ea551..bf1f001 100644
--- a/packages/Tethering/AndroidManifest_InProcess.xml
+++ b/packages/Tethering/AndroidManifest_InProcess.xml
@@ -24,7 +24,8 @@
<application>
<service android:name="com.android.server.connectivity.tethering.TetheringService"
android:process="system"
- android:permission="android.permission.MAINLINE_NETWORK_STACK">
+ android:permission="android.permission.MAINLINE_NETWORK_STACK"
+ android:exported="true">
<intent-filter>
<action android:name="android.net.ITetheringConnector.InProcess"/>
</intent-filter>
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index 693ca52..374bd28 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -27,7 +27,8 @@
android:allowBackup="false">
<activity android:name=".ConfirmDialog"
- android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight">
+ android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.DEFAULT"/>
diff --git a/packages/VpnDialogs/res/values-ky/strings.xml b/packages/VpnDialogs/res/values-ky/strings.xml
index 4e2f698..23c9be8 100644
--- a/packages/VpnDialogs/res/values-ky/strings.xml
+++ b/packages/VpnDialogs/res/values-ky/strings.xml
@@ -26,7 +26,7 @@
<string name="data_value_format" msgid="2192466557826897580">"<xliff:g id="NUMBER_0">%1$s</xliff:g> байт / <xliff:g id="NUMBER_1">%2$s</xliff:g> пакет"</string>
<string name="always_on_disconnected_title" msgid="1906740176262776166">"Ар дайым күйүк VPN\'ге туташа албай жатат"</string>
<string name="always_on_disconnected_message" msgid="555634519845992917">"<xliff:g id="VPN_APP_0">%1$s</xliff:g> тармагына ар дайым туташып турсун деп жөндөлгөн, бирок учурда телефонуңуз ага туташа албай жатат. <xliff:g id="VPN_APP_1">%1$s</xliff:g> тармагына кайра туташканга чейин телефонуңуз жалпыга ачык тармакты пайдаланып турат."</string>
- <string name="always_on_disconnected_message_lockdown" msgid="4232225539869452120">"<xliff:g id="VPN_APP">%1$s</xliff:g> тармагына ар дайым туташып турсун деп жөндөлгөн, бирок учурда телефонуңуз ага туташа албай жатат. VPN тармагына кайра туташмайынча, Интернет байланышыңыз жок болот."</string>
+ <string name="always_on_disconnected_message_lockdown" msgid="4232225539869452120">"<xliff:g id="VPN_APP">%1$s</xliff:g> тармагына ар дайым туташып турсун деп жөндөлгөн, бирок учурда телефонуңуз ага туташа албай жатат. VPN тармагына кайра туташмайынча, Интернет жок болот."</string>
<string name="always_on_disconnected_message_separator" msgid="3310614409322581371">" "</string>
<string name="always_on_disconnected_message_settings_link" msgid="6172280302829992412">"VPN жөндөөлөрүн өзгөртүү"</string>
<string name="configure" msgid="4905518375574791375">"Конфигурациялоо"</string>
diff --git a/packages/WAPPushManager/tests/AndroidManifest.xml b/packages/WAPPushManager/tests/AndroidManifest.xml
index da7634f..69660d3 100644
--- a/packages/WAPPushManager/tests/AndroidManifest.xml
+++ b/packages/WAPPushManager/tests/AndroidManifest.xml
@@ -27,14 +27,16 @@
<application android:icon="@drawable/icon" android:label="wappush test">
<uses-library android:name="android.test.runner" />
<activity android:name=".ClientTest"
- android:label="wappush test">
+ android:label="wappush test"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
- <receiver android:name=".DrmReceiver" android:enabled="true">
+ <receiver android:name=".DrmReceiver" android:enabled="true"
+ android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />
<data android:mimeType="application/vnd.oma.drm.rights+xml" />
diff --git a/packages/WallpaperCropper/AndroidManifest.xml b/packages/WallpaperCropper/AndroidManifest.xml
index e558d7e..44592e7 100644
--- a/packages/WallpaperCropper/AndroidManifest.xml
+++ b/packages/WallpaperCropper/AndroidManifest.xml
@@ -29,7 +29,8 @@
android:name="WallpaperCropActivity"
android:theme="@style/Theme.WallpaperCropper"
android:label="@string/crop_wallpaper"
- android:finishOnCloseSystemDialogs="true">
+ android:finishOnCloseSystemDialogs="true"
+ android:exported="true">
<intent-filter>
<action android:name="android.service.wallpaper.CROP_AND_SET_WALLPAPER" />
<data android:mimeType="image/*" />
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-ta/strings.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-ta/strings.xml
new file mode 100644
index 0000000..c896ee3
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-ta/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="7305489596221077240">"பஞ்ச் ஹோல் கட்அவுட்"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ar/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ar/strings.xml
new file mode 100644
index 0000000..307bf70
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ar/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"حواف منحنية"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bn/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bn/strings.xml
new file mode 100644
index 0000000..565f75e
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bn/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"ওয়াটারফল কাট-আউট"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bs/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bs/strings.xml
index c9cff08..594999f 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bs/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-bs/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Urez vodopada"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Izrezani vodopad"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml
new file mode 100644
index 0000000..93ef2c8
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-eu/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Ur-jauzi moduko mozketa"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-fr-rCA/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-fr-rCA/strings.xml
new file mode 100644
index 0000000..7232c33
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-fr-rCA/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Encoche en cascade"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml
new file mode 100644
index 0000000..03672fe
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-gu/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"વૉટરફૉલ કટઆઉટ"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-hi/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-hi/strings.xml
new file mode 100644
index 0000000..319d81a
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-hi/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"वॉटरफ़ॉल कटआउट"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-it/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-it/strings.xml
index dde9914..3ea14c5 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-it/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-it/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Ritaglio a cascata"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Curvatura Waterfall"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-iw/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-iw/strings.xml
index f71a879..5dbce7e 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-iw/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-iw/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"מגרעת מפל"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"שוליים מעוגלים"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ja/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ja/strings.xml
index 354ce59..4db0149 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ja/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ja/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"ウォーターフォールのカットアウト"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"エッジ スクリーン"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml
new file mode 100644
index 0000000..bb0dfe9
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-kk/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Сарқырама ойығы"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-km/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-km/strings.xml
index 8d2f887..b73ccbb 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-km/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-km/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"អេក្រង់គ្មានគែម"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"គែមកោង"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ky/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ky/strings.xml
new file mode 100644
index 0000000..18e2083
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ky/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Шаркыратманы кесүү"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-mk/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-mk/strings.xml
index f39584b..a330a35 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-mk/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-mk/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Исечок во вид на водопад"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Прекин за Waterfall"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ml/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ml/strings.xml
new file mode 100644
index 0000000..112562d
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ml/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"വെള്ളച്ചാട്ട കട്ടൗട്ട്"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt-rBR/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt-rBR/strings.xml
index f80fcad..3ead3c2 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt-rBR/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt-rBR/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Recorte de cascata"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Design cachoeira"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt/strings.xml
index f80fcad..3ead3c2 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-pt/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Recorte de cascata"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Design cachoeira"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ta/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ta/strings.xml
new file mode 100644
index 0000000..85d32c3
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-ta/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Copyright (C) 2020 The Android Open Source Project
+ ~
+ ~ Licensed under the Apache License, Version 2.0 (the "License");
+ ~ you may not use this file except in compliance with the License.
+ ~ You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"வாட்டர்ஃபால் கட்அவுட்"</string>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-th/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-th/strings.xml
index 6c39a7f..e9b5e1f 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-th/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-th/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"คัตเอาท์ Waterfall"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"ขอบจอโค้ง"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-vi/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-vi/strings.xml
index 2fff027..a063e8f 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-vi/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-vi/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Vết cắt trên thác nước"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"Vết cắt thác nước"</string>
</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-zh-rTW/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-zh-rTW/strings.xml
index 109b61c..56144e5 100644
--- a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-zh-rTW/strings.xml
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-zh-rTW/strings.xml
@@ -17,5 +17,5 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"瀑布裁剪圖片"</string>
+ <string name="display_cutout_emulation_overlay" msgid="3523556473422419323">"瀑布螢幕凹口"</string>
</resources>
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/GestureMatcher.java b/services/accessibility/java/com/android/server/accessibility/gestures/GestureMatcher.java
index 0b30ff57..6e2fc69 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/GestureMatcher.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/GestureMatcher.java
@@ -19,6 +19,7 @@
import static com.android.server.accessibility.gestures.TouchExplorer.DEBUG;
import android.annotation.IntDef;
+import android.annotation.NonNull;
import android.os.Handler;
import android.util.Slog;
import android.view.MotionEvent;
@@ -31,21 +32,22 @@
* onUp, etc methods as necessary. If you don't override a method your matcher will do nothing in
* response to that type of event. Finally, be sure to give your gesture a name by overriding
* getGestureName().
+ * @hide
*/
-abstract class GestureMatcher {
+public abstract class GestureMatcher {
// Potential states for this individual gesture matcher.
// In STATE_CLEAR, this matcher is accepting new motion events but has not formally signaled
// that there is enough data to judge that a gesture has started.
- static final int STATE_CLEAR = 0;
+ public static final int STATE_CLEAR = 0;
// In STATE_GESTURE_STARTED, this matcher continues to accept motion events and it has signaled
// to the gesture manifold that what looks like the specified gesture has started.
- static final int STATE_GESTURE_STARTED = 1;
+ public static final int STATE_GESTURE_STARTED = 1;
// In STATE_GESTURE_COMPLETED, this matcher has successfully matched the specified gesture. and
// will not accept motion events until it is cleared.
- static final int STATE_GESTURE_COMPLETED = 2;
+ public static final int STATE_GESTURE_COMPLETED = 2;
// In STATE_GESTURE_CANCELED, this matcher will not accept new motion events because it is
// impossible that this set of motion events will match the specified gesture.
- static final int STATE_GESTURE_CANCELED = 3;
+ public static final int STATE_GESTURE_CANCELED = 3;
@IntDef({STATE_CLEAR, STATE_GESTURE_STARTED, STATE_GESTURE_COMPLETED, STATE_GESTURE_CANCELED})
public @interface State {}
@@ -56,14 +58,14 @@
// handler for asynchronous operations like timeouts
private final Handler mHandler;
- private final StateChangeListener mListener;
+ private StateChangeListener mListener;
// Use this to transition to new states after a delay.
// e.g. cancel or complete after some timeout.
// Convenience functions for tapTimeout and doubleTapTimeout are already defined here.
protected final DelayedTransition mDelayedTransition;
- GestureMatcher(int gestureId, Handler handler, StateChangeListener listener) {
+ protected GestureMatcher(int gestureId, Handler handler, StateChangeListener listener) {
mGestureId = gestureId;
mHandler = handler;
mDelayedTransition = new DelayedTransition();
@@ -75,12 +77,12 @@
* information should override this method to reset their own state information and call
* super.clear().
*/
- protected void clear() {
+ public void clear() {
mState = STATE_CLEAR;
cancelPendingTransitions();
}
- public int getState() {
+ public final int getState() {
return mState;
}
@@ -92,7 +94,9 @@
@State int state, MotionEvent event, MotionEvent rawEvent, int policyFlags) {
mState = state;
cancelPendingTransitions();
- mListener.onStateChanged(mGestureId, mState, event, rawEvent, policyFlags);
+ if (mListener != null) {
+ mListener.onStateChanged(mGestureId, mState, event, rawEvent, policyFlags);
+ }
}
/** Indicates that there is evidence to suggest that this gesture has started. */
@@ -110,6 +114,10 @@
setState(STATE_GESTURE_COMPLETED, event, rawEvent, policyFlags);
}
+ public final void setListener(@NonNull StateChangeListener listener) {
+ mListener = listener;
+ }
+
public int getGestureId() {
return mGestureId;
}
@@ -272,7 +280,7 @@
completeAfter(ViewConfiguration.getDoubleTapTimeout(), event, rawEvent, policyFlags);
}
- public static String getStateSymbolicName(@State int state) {
+ static String getStateSymbolicName(@State int state) {
switch (state) {
case STATE_CLEAR:
return "STATE_CLEAR";
@@ -291,7 +299,7 @@
* Returns a readable name for this matcher that can be displayed to the user and in system
* logs.
*/
- abstract String getGestureName();
+ protected abstract String getGestureName();
/**
* Returns a String representation of this matcher. Each matcher can override this method to add
@@ -363,7 +371,7 @@
}
/** Interface to allow a class to listen for state changes in a specific gesture matcher */
- interface StateChangeListener {
+ public interface StateChangeListener {
void onStateChanged(
int gestureId, int state, MotionEvent event, MotionEvent rawEvent, int policyFlags);
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java
index e5340f1..87a1520 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerMultiTap.java
@@ -79,7 +79,7 @@
}
@Override
- protected void clear() {
+ public void clear() {
mCompletedTapCount = 0;
mIsTargetFingerCountReached = false;
for (int i = 0; i < mBases.length; i++) {
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
index a14584a..b198f01 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
@@ -106,7 +106,7 @@
}
@Override
- protected void clear() {
+ public void clear() {
mTargetFingerCountReached = false;
mCurrentFingerCount = 0;
for (int i = 0; i < mTargetFingerCount; ++i) {
@@ -489,7 +489,7 @@
}
@Override
- String getGestureName() {
+ protected String getGestureName() {
StringBuilder builder = new StringBuilder();
builder.append(mTargetFingerCount).append("-finger ");
builder.append("Swipe ").append(directionToString(mDirection));
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiTap.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiTap.java
index 386cb06..1ef6b95 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/MultiTap.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiTap.java
@@ -51,7 +51,7 @@
}
@Override
- protected void clear() {
+ public void clear() {
mCurrentTaps = 0;
mBaseX = Float.NaN;
mBaseY = Float.NaN;
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java b/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
index ada251f..954412d 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
@@ -53,7 +53,7 @@
}
@Override
- protected void clear() {
+ public void clear() {
mCurrentTaps = 0;
mBaseX = Float.NaN;
mBaseY = Float.NaN;
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
index 9108c69..0bb4e1b 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
@@ -131,7 +131,7 @@
}
@Override
- protected void clear() {
+ public void clear() {
mBaseX = Float.NaN;
mBaseY = Float.NaN;
mStrokeBuffer.clear();
@@ -404,7 +404,7 @@
}
@Override
- String getGestureName() {
+ protected String getGestureName() {
StringBuilder builder = new StringBuilder();
builder.append("Swipe ").append(directionToString(mDirections[0]));
for (int i = 1; i < mDirections.length; ++i) {
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
index 61c6ef5..a039f7d 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/TouchExplorer.java
@@ -16,7 +16,23 @@
package com.android.server.accessibility.gestures;
+import static android.view.MotionEvent.ACTION_CANCEL;
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_HOVER_ENTER;
+import static android.view.MotionEvent.ACTION_HOVER_EXIT;
+import static android.view.MotionEvent.ACTION_HOVER_MOVE;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_POINTER_UP;
+import static android.view.MotionEvent.ACTION_UP;
import static android.view.MotionEvent.INVALID_POINTER_ID;
+import static android.view.accessibility.AccessibilityEvent.TYPE_GESTURE_DETECTION_END;
+import static android.view.accessibility.AccessibilityEvent.TYPE_GESTURE_DETECTION_START;
+import static android.view.accessibility.AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END;
+import static android.view.accessibility.AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START;
+import static android.view.accessibility.AccessibilityEvent.TYPE_TOUCH_INTERACTION_END;
+import static android.view.accessibility.AccessibilityEvent.TYPE_TOUCH_INTERACTION_START;
+import static android.view.accessibility.AccessibilityEvent.TYPE_VIEW_HOVER_EXIT;
import static com.android.server.accessibility.gestures.TouchState.ALL_POINTER_ID_BITS;
@@ -140,12 +156,12 @@
*
* @param context A context handle for accessing resources.
* @param service The service to notify touch interaction and gesture completed and to perform
- * action.
+ * action.
* @param detector The gesture detector to handle accessibility touch event. If null the default
- * one created in place, or for testing purpose.
+ * one created in place, or for testing purpose.
*/
- public TouchExplorer(Context context, AccessibilityManagerService service,
- GestureManifold detector) {
+ public TouchExplorer(
+ Context context, AccessibilityManagerService service, GestureManifold detector) {
mContext = context;
mAms = service;
mState = new TouchState();
@@ -157,12 +173,12 @@
mExitGestureDetectionModeDelayed = new ExitGestureDetectionModeDelayed();
mSendHoverEnterAndMoveDelayed = new SendHoverEnterAndMoveDelayed();
mSendHoverExitDelayed = new SendHoverExitDelayed();
- mSendTouchExplorationEndDelayed = new SendAccessibilityEventDelayed(
- AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END,
- mDetermineUserIntentTimeout);
- mSendTouchInteractionEndDelayed = new SendAccessibilityEventDelayed(
- AccessibilityEvent.TYPE_TOUCH_INTERACTION_END,
- mDetermineUserIntentTimeout);
+ mSendTouchExplorationEndDelayed =
+ new SendAccessibilityEventDelayed(
+ TYPE_TOUCH_EXPLORATION_GESTURE_END, mDetermineUserIntentTimeout);
+ mSendTouchInteractionEndDelayed =
+ new SendAccessibilityEventDelayed(
+ TYPE_TOUCH_INTERACTION_END, mDetermineUserIntentTimeout);
if (detector == null) {
mGestureDetector = new GestureManifold(context, this, mState);
} else {
@@ -242,7 +258,7 @@
}
}
- if (event.getActionMasked() == MotionEvent.ACTION_CANCEL) {
+ if (event.getActionMasked() == ACTION_CANCEL) {
clear(event, policyFlags);
return;
}
@@ -276,19 +292,16 @@
// The event for gesture end should be strictly after the
// last hover exit event.
- if (mSendTouchExplorationEndDelayed.isPending()
- && eventType == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) {
- mSendTouchExplorationEndDelayed.cancel();
- mDispatcher.sendAccessibilityEvent(
- AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_END);
+ if (mSendTouchExplorationEndDelayed.isPending() && eventType == TYPE_VIEW_HOVER_EXIT) {
+ mSendTouchExplorationEndDelayed.cancel();
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_EXPLORATION_GESTURE_END);
}
// The event for touch interaction end should be strictly after the
// last hover exit and the touch exploration gesture end events.
- if (mSendTouchInteractionEndDelayed.isPending()
- && eventType == AccessibilityEvent.TYPE_VIEW_HOVER_EXIT) {
+ if (mSendTouchInteractionEndDelayed.isPending() && eventType == TYPE_VIEW_HOVER_EXIT) {
mSendTouchInteractionEndDelayed.cancel();
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_END);
}
super.onAccessibilityEvent(event);
}
@@ -314,7 +327,7 @@
}
// Announce the end of a new touch interaction.
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_END);
mSendTouchInteractionEndDelayed.cancel();
// Try to use the standard accessibility API to click
if (!mAms.performActionOnAccessibilityFocusedItem(
@@ -334,7 +347,7 @@
mExitGestureDetectionModeDelayed.post();
// Send accessibility event to announce the start
// of gesture recognition.
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_START);
+ mDispatcher.sendAccessibilityEvent(TYPE_GESTURE_DETECTION_START);
return false;
}
@@ -350,11 +363,11 @@
@Override
public boolean onGestureCancelled(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
if (mState.isGestureDetecting()) {
- endGestureDetection(event.getActionMasked() == MotionEvent.ACTION_UP);
+ endGestureDetection(event.getActionMasked() == ACTION_UP);
return true;
} else if (mState.isTouchExploring()) {
// If the finger is still moving, pass the event on.
- if (event.getActionMasked() == MotionEvent.ACTION_MOVE) {
+ if (event.getActionMasked() == ACTION_MOVE) {
final int pointerId = mReceivedPointerTracker.getPrimaryPointerId();
final int pointerIdBits = (1 << pointerId);
@@ -365,7 +378,7 @@
mSendHoverExitDelayed.cancel();
mDispatcher.sendMotionEvent(
event,
- MotionEvent.ACTION_HOVER_MOVE,
+ ACTION_HOVER_MOVE,
mState.getLastReceivedEvent(),
pointerIdBits,
policyFlags);
@@ -382,7 +395,7 @@
MotionEvent event, MotionEvent rawEvent, int policyFlags) {
switch (event.getActionMasked()) {
// The only way to leave the clear state is for a pointer to go down.
- case MotionEvent.ACTION_DOWN:
+ case ACTION_DOWN:
handleActionDown(event, rawEvent, policyFlags);
break;
default:
@@ -423,7 +436,7 @@
}
mSendTouchExplorationEndDelayed.forceSendAndRemove();
mSendTouchInteractionEndDelayed.forceSendAndRemove();
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_START);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_START);
if (mTouchExplorationPassthroughRegion.contains(
(int) event.getX(), (int) event.getY())) {
// The touch exploration passthrough overrides the gesture detection passthrough in
@@ -455,18 +468,18 @@
private void handleMotionEventStateTouchInteracting(
MotionEvent event, MotionEvent rawEvent, int policyFlags) {
switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN:
+ case ACTION_DOWN:
// Continue the previous interaction.
mSendTouchInteractionEndDelayed.cancel();
handleActionDown(event, rawEvent, policyFlags);
break;
- case MotionEvent.ACTION_POINTER_DOWN:
+ case ACTION_POINTER_DOWN:
handleActionPointerDown(event, rawEvent, policyFlags);
break;
- case MotionEvent.ACTION_MOVE:
+ case ACTION_MOVE:
handleActionMoveStateTouchInteracting(event, rawEvent, policyFlags);
break;
- case MotionEvent.ACTION_UP:
+ case ACTION_UP:
handleActionUp(event, rawEvent, policyFlags);
break;
}
@@ -482,16 +495,16 @@
private void handleMotionEventStateTouchExploring(
MotionEvent event, MotionEvent rawEvent, int policyFlags) {
switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN:
+ case ACTION_DOWN:
// We should have already received ACTION_DOWN. Ignore.
break;
- case MotionEvent.ACTION_POINTER_DOWN:
+ case ACTION_POINTER_DOWN:
handleActionPointerDown(event, rawEvent, policyFlags);
break;
- case MotionEvent.ACTION_MOVE:
+ case ACTION_MOVE:
handleActionMoveStateTouchExploring(event, rawEvent, policyFlags);
break;
- case MotionEvent.ACTION_UP:
+ case ACTION_UP:
handleActionUp(event, rawEvent, policyFlags);
break;
default:
@@ -553,7 +566,7 @@
mDraggingPointerId = pointerId;
event.setEdgeFlags(mReceivedPointerTracker.getLastReceivedDownEdgeFlags());
mDispatcher.sendMotionEvent(
- event, MotionEvent.ACTION_DOWN, rawEvent, pointerIdBits, policyFlags);
+ event, ACTION_DOWN, rawEvent, pointerIdBits, policyFlags);
} else {
// Two pointers moving arbitrary are delegated to the view hierarchy.
mState.startDelegating();
@@ -606,7 +619,7 @@
// Touch exploration.
sendTouchExplorationGestureStartAndHoverEnterIfNeeded(policyFlags);
mDispatcher.sendMotionEvent(
- event, MotionEvent.ACTION_HOVER_MOVE, rawEvent, pointerIdBits, policyFlags);
+ event, ACTION_HOVER_MOVE, rawEvent, pointerIdBits, policyFlags);
break;
case 2:
if (mGestureDetector.isMultiFingerGesturesEnabled()) {
@@ -671,48 +684,48 @@
int pointerIdBits = 0;
// Clear the dragging pointer id if it's no longer valid.
if (event.findPointerIndex(mDraggingPointerId) == -1) {
- Slog.e(LOG_TAG, "mDraggingPointerId doesn't match any pointers on current event. " +
- "mDraggingPointerId: " + Integer.toString(mDraggingPointerId) +
- ", Event: " + event);
+ Slog.e(
+ LOG_TAG,
+ "mDraggingPointerId doesn't match any pointers on current event. "
+ + "mDraggingPointerId: "
+ + Integer.toString(mDraggingPointerId)
+ + ", Event: "
+ + event);
mDraggingPointerId = INVALID_POINTER_ID;
} else {
pointerIdBits = (1 << mDraggingPointerId);
}
switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN: {
- Slog.e(LOG_TAG, "Dragging state can be reached only if two "
- + "pointers are already down");
+ case ACTION_DOWN:
+ Slog.e(
+ LOG_TAG,
+ "Dragging state can be reached only if two " + "pointers are already down");
clear(event, policyFlags);
return;
- }
- case MotionEvent.ACTION_POINTER_DOWN: {
+ case ACTION_POINTER_DOWN:
// We are in dragging state so we have two pointers and another one
// goes down => delegate the three pointers to the view hierarchy
mState.startDelegating();
if (mDraggingPointerId != INVALID_POINTER_ID) {
mDispatcher.sendMotionEvent(
- event, MotionEvent.ACTION_UP, rawEvent, pointerIdBits, policyFlags);
+ event, ACTION_UP, rawEvent, pointerIdBits, policyFlags);
}
mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
- } break;
- case MotionEvent.ACTION_MOVE: {
+ break;
+ case ACTION_MOVE:
if (mDraggingPointerId == INVALID_POINTER_ID) {
break;
}
switch (event.getPointerCount()) {
- case 1: {
+ case 1:
// do nothing
- } break;
- case 2: {
+ break;
+ case 2:
if (isDraggingGesture(event)) {
// If still dragging send a drag event.
adjustEventLocationForDrag(event);
mDispatcher.sendMotionEvent(
- event,
- MotionEvent.ACTION_MOVE,
- rawEvent,
- pointerIdBits,
- policyFlags);
+ event, ACTION_MOVE, rawEvent, pointerIdBits, policyFlags);
} else {
// The two pointers are moving either in different directions or
// no close enough => delegate the gesture to the view hierarchy.
@@ -721,52 +734,40 @@
event = MotionEvent.obtainNoHistory(event);
// Send an event to the end of the drag gesture.
mDispatcher.sendMotionEvent(
- event,
- MotionEvent.ACTION_UP,
- rawEvent,
- pointerIdBits,
- policyFlags);
+ event, ACTION_UP, rawEvent, pointerIdBits, policyFlags);
// Deliver all pointers to the view hierarchy.
mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
}
- } break;
- default: {
+ break;
+ default:
mState.startDelegating();
event = MotionEvent.obtainNoHistory(event);
// Send an event to the end of the drag gesture.
mDispatcher.sendMotionEvent(
- event,
- MotionEvent.ACTION_UP,
- rawEvent,
- pointerIdBits,
- policyFlags);
+ event, ACTION_UP, rawEvent, pointerIdBits, policyFlags);
// Deliver all pointers to the view hierarchy.
mDispatcher.sendDownForAllNotInjectedPointers(event, policyFlags);
- }
}
- } break;
- case MotionEvent.ACTION_POINTER_UP: {
- final int pointerId = event.getPointerId(event.getActionIndex());
- if (pointerId == mDraggingPointerId) {
- mDraggingPointerId = INVALID_POINTER_ID;
- // Send an event to the end of the drag gesture.
- mDispatcher.sendMotionEvent(
- event, MotionEvent.ACTION_UP, rawEvent, pointerIdBits, policyFlags);
- }
- } break;
- case MotionEvent.ACTION_UP: {
- mAms.onTouchInteractionEnd();
- // Announce the end of a new touch interaction.
- mDispatcher.sendAccessibilityEvent(
- AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
- final int pointerId = event.getPointerId(event.getActionIndex());
- if (pointerId == mDraggingPointerId) {
+ break;
+ case ACTION_POINTER_UP:
+ if (event.getPointerId(GestureUtils.getActionIndex(event)) == mDraggingPointerId) {
mDraggingPointerId = INVALID_POINTER_ID;
// Send an event to the end of the drag gesture.
mDispatcher.sendMotionEvent(
- event, MotionEvent.ACTION_UP, rawEvent, pointerIdBits, policyFlags);
+ event, ACTION_UP, rawEvent, pointerIdBits, policyFlags);
}
- } break;
+ break;
+ case ACTION_UP:
+ mAms.onTouchInteractionEnd();
+ // Announce the end of a new touch interaction.
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_END);
+ if (event.getPointerId(GestureUtils.getActionIndex(event)) == mDraggingPointerId) {
+ mDraggingPointerId = INVALID_POINTER_ID;
+ // Send an event to the end of the drag gesture.
+ mDispatcher.sendMotionEvent(
+ event, ACTION_UP, rawEvent, pointerIdBits, policyFlags);
+ }
+ break;
}
}
@@ -783,20 +784,20 @@
return;
}
switch (event.getActionMasked()) {
- case MotionEvent.ACTION_DOWN: {
+ case ACTION_DOWN: {
Slog.e(LOG_TAG, "Delegating state can only be reached if "
+ "there is at least one pointer down!");
clear(event, policyFlags);
return;
}
- case MotionEvent.ACTION_UP: {
+ case ACTION_UP: {
// Deliver the event.
mDispatcher.sendMotionEvent(
event, event.getAction(), rawEvent, ALL_POINTER_ID_BITS, policyFlags);
// Announce the end of a the touch interaction.
mAms.onTouchInteractionEnd();
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_END);
} break;
default: {
@@ -811,10 +812,10 @@
mAms.onTouchInteractionEnd();
// Announce the end of the gesture recognition.
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_GESTURE_DETECTION_END);
// Don't announce the end of a the touch interaction if users didn't lift their fingers.
if (interactionEnd) {
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_TOUCH_INTERACTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_INTERACTION_END);
}
mExitGestureDetectionModeDelayed.cancel();
@@ -829,14 +830,14 @@
*/
private void sendHoverExitAndTouchExplorationGestureEndIfNeeded(int policyFlags) {
MotionEvent event = mDispatcher.getLastInjectedHoverEvent();
- if (event != null && event.getActionMasked() != MotionEvent.ACTION_HOVER_EXIT) {
+ if (event != null && event.getActionMasked() != ACTION_HOVER_EXIT) {
final int pointerIdBits = event.getPointerIdBits();
if (!mSendTouchExplorationEndDelayed.isPending()) {
mSendTouchExplorationEndDelayed.post();
}
mDispatcher.sendMotionEvent(
event,
- MotionEvent.ACTION_HOVER_EXIT,
+ ACTION_HOVER_EXIT,
mState.getLastReceivedEvent(),
pointerIdBits,
policyFlags);
@@ -851,11 +852,11 @@
*/
private void sendTouchExplorationGestureStartAndHoverEnterIfNeeded(int policyFlags) {
MotionEvent event = mDispatcher.getLastInjectedHoverEvent();
- if (event != null && event.getActionMasked() == MotionEvent.ACTION_HOVER_EXIT) {
+ if (event != null && event.getActionMasked() == ACTION_HOVER_EXIT) {
final int pointerIdBits = event.getPointerIdBits();
mDispatcher.sendMotionEvent(
event,
- MotionEvent.ACTION_HOVER_ENTER,
+ ACTION_HOVER_ENTER,
mState.getLastReceivedEvent(),
pointerIdBits,
policyFlags);
@@ -942,7 +943,7 @@
if (mState.isDelegating()) {
return false;
}
- if (event.getActionMasked() == MotionEvent.ACTION_DOWN) {
+ if (event.getActionMasked() == ACTION_DOWN) {
final int x = (int) event.getX();
final int y = (int) event.getY();
if (mTouchExplorationPassthroughRegion.contains(x, y)
@@ -969,7 +970,7 @@
@Override
public void run() {
// Announce the end of gesture recognition.
- mDispatcher.sendAccessibilityEvent(AccessibilityEvent.TYPE_GESTURE_DETECTION_END);
+ mDispatcher.sendAccessibilityEvent(TYPE_GESTURE_DETECTION_END);
clear();
}
}
@@ -1033,12 +1034,11 @@
public void run() {
// Send an accessibility event to announce the touch exploration start.
- mDispatcher.sendAccessibilityEvent(
- AccessibilityEvent.TYPE_TOUCH_EXPLORATION_GESTURE_START);
+ mDispatcher.sendAccessibilityEvent(TYPE_TOUCH_EXPLORATION_GESTURE_START);
if (!mEvents.isEmpty() && !mRawEvents.isEmpty()) {
// Deliver a down event.
- mDispatcher.sendMotionEvent(mEvents.get(0), MotionEvent.ACTION_HOVER_ENTER,
+ mDispatcher.sendMotionEvent(mEvents.get(0), ACTION_HOVER_ENTER,
mRawEvents.get(0), mPointerIdBits, mPolicyFlags);
if (DEBUG) {
Slog.d(LOG_TAG_SEND_HOVER_DELAYED,
@@ -1048,7 +1048,7 @@
// Deliver move events.
final int eventCount = mEvents.size();
for (int i = 1; i < eventCount; i++) {
- mDispatcher.sendMotionEvent(mEvents.get(i), MotionEvent.ACTION_HOVER_MOVE,
+ mDispatcher.sendMotionEvent(mEvents.get(i), ACTION_HOVER_MOVE,
mRawEvents.get(i), mPointerIdBits, mPolicyFlags);
if (DEBUG) {
Slog.d(LOG_TAG_SEND_HOVER_DELAYED,
@@ -1119,7 +1119,7 @@
}
mDispatcher.sendMotionEvent(
mPrototype,
- MotionEvent.ACTION_HOVER_EXIT,
+ ACTION_HOVER_EXIT,
mRawEvent,
mPointerIdBits,
mPolicyFlags);
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/GesturesObserver.java b/services/accessibility/java/com/android/server/accessibility/magnification/GesturesObserver.java
new file mode 100644
index 0000000..feed18d
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/GesturesObserver.java
@@ -0,0 +1,143 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+
+import android.annotation.MainThread;
+import android.view.MotionEvent;
+
+import com.android.server.accessibility.gestures.GestureMatcher;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A class to coordinates a series of individual {@link GestureMatcher} injecting in the constructor
+ * to triggers the appropriate callbacks on the {@link Listener} supplied. The event stream should
+ * start with {@link MotionEvent#ACTION_DOWN}, otherwise
+ * {@link Listener#onGestureCancelled(MotionEvent, MotionEvent, int)} will be triggered.
+ *
+ * @hide
+ */
+public final class GesturesObserver implements GestureMatcher.StateChangeListener {
+
+ /**
+ * Listeners to receive the result of gestures matching.
+ */
+ public interface Listener {
+ /**
+ * Called when an event stream is recognized as a gesture.
+ *
+ * @param gestureId the gesture id of {@link GestureMatcher}.
+ * @param event The last event to determine the gesture. For the holding gestures,
+ * it's the last event before timeout.
+ * @param rawEvent The event without any transformations.
+ * @param policyFlags The policy flags of the most recent event.
+ */
+ void onGestureCompleted(int gestureId, MotionEvent event, MotionEvent rawEvent,
+ int policyFlags);
+
+ /**
+ * Called when the system has decided an event stream doesn't match any known gesture or
+ * the first event is not {@link MotionEvent#ACTION_DOWN}.
+ *
+ * @param event The last event to determine the cancellation before timeout.
+ * @param rawEvent The event without any transformations.
+ * @param policyFlags The policy flags of the most recent event.
+ */
+ void onGestureCancelled(MotionEvent event, MotionEvent rawEvent, int policyFlags);
+ }
+
+ private final List<GestureMatcher> mGestureMatchers = new ArrayList<>();
+ private final Listener mListener;
+
+ private boolean mObserveStarted = false;
+ private boolean mProcessMotionEvent = false;
+ private int mCancelledMatcherSize = 0;
+ public GesturesObserver(Listener listener, GestureMatcher... matchers) {
+ mListener = listener;
+ for (int i = 0; i < matchers.length; i++) {
+ matchers[i].setListener(this);
+ mGestureMatchers.add(matchers[i]);
+ }
+ }
+
+ /**
+ * Processes a motion event and attempts to match it to one of the gestures.
+ *
+ * @param event the event as passed in from the event stream.
+ * @param rawEvent the original un-modified event. Useful for calculating movements in physical
+ * space.
+ * @param policyFlags the policy flags as passed in from the event stream.
+ * @return {@code true} if one of the gesture is matched.
+ */
+ @MainThread
+ public boolean onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ if (!mObserveStarted) {
+ if (event.getActionMasked() != MotionEvent.ACTION_DOWN) {
+ mListener.onGestureCancelled(event, rawEvent, policyFlags);
+ clear();
+ return false;
+ } else {
+ mObserveStarted = true;
+ }
+ }
+ mProcessMotionEvent = true;
+ for (int i = 0; i < mGestureMatchers.size(); i++) {
+ final GestureMatcher matcher =
+ mGestureMatchers.get(i);
+ matcher.onMotionEvent(event, rawEvent, policyFlags);
+ if (matcher.getState() == GestureMatcher.STATE_GESTURE_COMPLETED) {
+ clear();
+ mProcessMotionEvent = false;
+ return true;
+ }
+ }
+ mProcessMotionEvent = false;
+ return false;
+ }
+
+ /**
+ * Clears all states to default.
+ */
+ @MainThread
+ public void clear() {
+ for (GestureMatcher matcher : mGestureMatchers) {
+ matcher.clear();
+ }
+ mCancelledMatcherSize = 0;
+ mObserveStarted = false;
+ }
+
+ @Override
+ public void onStateChanged(int gestureId, int state, MotionEvent event,
+ MotionEvent rawEvent, int policyFlags) {
+ if (state == GestureMatcher.STATE_GESTURE_COMPLETED) {
+ mListener.onGestureCompleted(gestureId, event, rawEvent, policyFlags);
+ //Clear the states in onMotionEvent().
+ if (!mProcessMotionEvent) {
+ clear();
+ }
+ } else if (state == GestureMatcher.STATE_GESTURE_CANCELED) {
+ mCancelledMatcherSize++;
+ if (mCancelledMatcherSize == mGestureMatchers.size()) {
+ mListener.onGestureCancelled(event, rawEvent, policyFlags);
+ clear();
+ }
+ }
+ }
+}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureMatcher.java b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureMatcher.java
new file mode 100644
index 0000000..2fff8a2
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/MagnificationGestureMatcher.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+import android.annotation.IntDef;
+import android.content.Context;
+import android.view.ViewConfiguration;
+
+import com.android.internal.R;
+import com.android.server.accessibility.gestures.GestureMatcher;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * A class to define gesture id of {@link GestureMatcher} for magnification.
+ *
+ */
+class MagnificationGestureMatcher {
+
+ private static final int GESTURE_BASE = 100;
+ public static final int GESTURE_TWO_FINGER_DOWN = GESTURE_BASE + 1;
+ public static final int GESTURE_SWIPE = GESTURE_BASE + 2;
+
+ @IntDef(prefix = {"GESTURE_MAGNIFICATION_"}, value = {
+ GESTURE_TWO_FINGER_DOWN,
+ GESTURE_SWIPE
+ })
+ @Retention(RetentionPolicy.SOURCE)
+ @interface GestureId {
+ }
+
+ /**
+ * Returns the string representation of a gesture id.
+ * @param gestureId the gesture Id.
+ * @return "none" if the id is not listed in {@link GestureId}.
+ */
+ static String gestureIdToString(@GestureId int gestureId) {
+ switch (gestureId) {
+ case GESTURE_SWIPE:
+ return "GESTURE_SWIPE";
+ case GESTURE_TWO_FINGER_DOWN:
+ return "GESTURE_TWO_FINGER_DOWN";
+ }
+ return "none";
+ }
+
+ static int getMagnificationMultiTapTimeout(Context context) {
+ return ViewConfiguration.getDoubleTapTimeout() + context.getResources().getInteger(
+ R.integer.config_screen_magnification_multi_tap_adjustment);
+ }
+}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/SimpleSwipe.java b/services/accessibility/java/com/android/server/accessibility/magnification/SimpleSwipe.java
new file mode 100644
index 0000000..cd5061f
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/SimpleSwipe.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+import static com.android.server.accessibility.gestures.GestureUtils.distance;
+
+import android.content.Context;
+import android.os.Handler;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+
+import com.android.server.accessibility.gestures.GestureMatcher;
+
+/**
+ * This class is responsible for matching one-finger swipe gestures with any direction.
+ */
+class SimpleSwipe extends GestureMatcher {
+
+ private final int mSwipeMinDistance;
+ private MotionEvent mLastDown;
+ private final int mDetectionDurationMillis;
+
+ SimpleSwipe(Context context) {
+ super(MagnificationGestureMatcher.GESTURE_SWIPE,
+ new Handler(context.getMainLooper()), null);
+ mSwipeMinDistance = ViewConfiguration.get(context).getScaledTouchSlop();
+ mDetectionDurationMillis = MagnificationGestureMatcher.getMagnificationMultiTapTimeout(
+ context);
+ }
+
+ @Override
+ protected void onDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ mLastDown = MotionEvent.obtain(event);
+ cancelAfter(mDetectionDurationMillis, event, rawEvent, policyFlags);
+ }
+
+ @Override
+ protected void onMove(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ if (gestureMatched(event, rawEvent, policyFlags)) {
+ completeGesture(event, rawEvent, policyFlags);
+ }
+ }
+
+ @Override
+ protected void onUp(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ if (gestureMatched(event, rawEvent, policyFlags)) {
+ completeGesture(event, rawEvent, policyFlags);
+ } else {
+ cancelGesture(event, rawEvent, policyFlags);
+ }
+ }
+
+ private boolean gestureMatched(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ return mLastDown != null && (distance(mLastDown, event) >= mSwipeMinDistance);
+ }
+
+ @Override
+ public void clear() {
+ if (mLastDown != null) {
+ mLastDown.recycle();
+ }
+ mLastDown = null;
+ super.clear();
+ }
+
+ @Override
+ protected String getGestureName() {
+ return this.getClass().getSimpleName();
+ }
+}
diff --git a/services/accessibility/java/com/android/server/accessibility/magnification/TwoFingersDown.java b/services/accessibility/java/com/android/server/accessibility/magnification/TwoFingersDown.java
new file mode 100644
index 0000000..173a5b8
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/magnification/TwoFingersDown.java
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+import android.content.Context;
+import android.os.Handler;
+import android.view.MotionEvent;
+
+import com.android.server.accessibility.gestures.GestureMatcher;
+
+/**
+ *
+ * This class is responsible for matching two fingers down gestures. The gesture matching
+ * result is determined in a duration.
+ */
+final class TwoFingersDown extends GestureMatcher {
+
+ private MotionEvent mLastDown;
+ private final int mDetectionDurationMillis;
+
+ TwoFingersDown(Context context) {
+ super(MagnificationGestureMatcher.GESTURE_TWO_FINGER_DOWN,
+ new Handler(context.getMainLooper()), null);
+ mDetectionDurationMillis = MagnificationGestureMatcher.getMagnificationMultiTapTimeout(
+ context);
+ }
+
+ @Override
+ protected void onDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ mLastDown = MotionEvent.obtain(event);
+ cancelAfter(mDetectionDurationMillis, event, rawEvent, policyFlags);
+ }
+
+ @Override
+ protected void onPointerDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ if (mLastDown == null) {
+ cancelGesture(event, rawEvent, policyFlags);
+ }
+ completeGesture(event, rawEvent, policyFlags);
+ }
+
+ @Override
+ protected void onUp(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ cancelGesture(event, rawEvent, policyFlags);
+ }
+
+ @Override
+ public void clear() {
+ if (mLastDown != null) {
+ mLastDown.recycle();
+ mLastDown = null;
+ }
+ super.clear();
+ }
+
+ @Override
+ protected String getGestureName() {
+ return this.getClass().getSimpleName();
+ }
+}
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index 6247a63..1dd88e6 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -157,7 +157,6 @@
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
-import java.util.Map;
import java.util.Objects;
import java.util.Queue;
import java.util.Random;
@@ -316,7 +315,7 @@
private final IBackupManager mBackupManagerBinder;
- private boolean mEnabled; // access to this is synchronized on 'this'
+ private boolean mEnabled; // writes to this are synchronized on 'this'
private boolean mSetupComplete;
private boolean mAutoRestore;
@@ -508,6 +507,36 @@
!= 0;
}
+ @VisibleForTesting
+ UserBackupManagerService(Context context) {
+ mContext = context;
+
+ mUserId = 0;
+ mRegisterTransportsRequestedTime = 0;
+
+ mBaseStateDir = null;
+ mDataDir = null;
+ mJournalDir = null;
+ mFullBackupScheduleFile = null;
+ mSetupObserver = null;
+ mRunInitReceiver = null;
+ mRunInitIntent = null;
+ mAgentTimeoutParameters = null;
+ mTransportManager = null;
+ mPackageManager = null;
+ mActivityManagerInternal = null;
+ mAlarmManager = null;
+ mConstants = null;
+ mWakelock = null;
+ mBackupHandler = null;
+ mBackupPreferences = null;
+ mBackupPasswordManager = null;
+ mPackageManagerBinder = null;
+ mActivityManager = null;
+ mStorageManager = null;
+ mBackupManagerBinder = null;
+ }
+
private UserBackupManagerService(
@UserIdInt int userId,
Context context,
@@ -627,9 +656,11 @@
initPackageTracking();
}
+ @VisibleForTesting
void initializeBackupEnableState() {
- boolean isEnabled = UserBackupManagerFilePersistedSettings.readBackupEnableState(mUserId);
- setBackupEnabled(isEnabled);
+ boolean isEnabled = readEnabledState();
+ // Don't persist value to disk since we just read it from there.
+ setBackupEnabled(isEnabled, /* persistToDisk */ false);
}
/** Cleans up state when the user of this service is stopped. */
@@ -2855,6 +2886,10 @@
/** User-configurable enabling/disabling of backups. */
public void setBackupEnabled(boolean enable) {
+ setBackupEnabled(enable, /* persistToDisk */ true);
+ }
+
+ private void setBackupEnabled(boolean enable, boolean persistToDisk) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
"setBackupEnabled");
@@ -2864,62 +2899,79 @@
try {
boolean wasEnabled = mEnabled;
synchronized (this) {
- UserBackupManagerFilePersistedSettings.writeBackupEnableState(mUserId, enable);
+ if (persistToDisk) {
+ writeEnabledState(enable);
+ }
mEnabled = enable;
}
- synchronized (mQueueLock) {
- if (enable && !wasEnabled && mSetupComplete) {
- // if we've just been enabled, start scheduling backup passes
- KeyValueBackupJob.schedule(mUserId, mContext, mConstants);
- scheduleNextFullBackupJob(0);
- } else if (!enable) {
- // No longer enabled, so stop running backups
- if (MORE_DEBUG) Slog.i(TAG, "Opting out of backup");
-
- KeyValueBackupJob.cancel(mUserId, mContext);
-
- // This also constitutes an opt-out, so we wipe any data for
- // this device from the backend. We start that process with
- // an alarm in order to guarantee wakelock states.
- if (wasEnabled && mSetupComplete) {
- // NOTE: we currently flush every registered transport, not just
- // the currently-active one.
- List<String> transportNames = new ArrayList<>();
- List<String> transportDirNames = new ArrayList<>();
- mTransportManager.forEachRegisteredTransport(
- name -> {
- final String dirName;
- try {
- dirName =
- mTransportManager
- .getTransportDirName(name);
- } catch (TransportNotRegisteredException e) {
- // Should never happen
- Slog.e(TAG, "Unexpected unregistered transport", e);
- return;
- }
- transportNames.add(name);
- transportDirNames.add(dirName);
- });
-
- // build the set of transports for which we are posting an init
- for (int i = 0; i < transportNames.size(); i++) {
- recordInitPending(
- true,
- transportNames.get(i),
- transportDirNames.get(i));
- }
- mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
- mRunInitIntent);
- }
- }
- }
+ updateStateOnBackupEnabled(wasEnabled, enable);
} finally {
Binder.restoreCallingIdentity(oldId);
}
}
+ @VisibleForTesting
+ void updateStateOnBackupEnabled(boolean wasEnabled, boolean enable) {
+ synchronized (mQueueLock) {
+ if (enable && !wasEnabled && mSetupComplete) {
+ // if we've just been enabled, start scheduling backup passes
+ KeyValueBackupJob.schedule(mUserId, mContext, mConstants);
+ scheduleNextFullBackupJob(0);
+ } else if (!enable) {
+ // No longer enabled, so stop running backups
+ if (MORE_DEBUG) Slog.i(TAG, "Opting out of backup");
+
+ KeyValueBackupJob.cancel(mUserId, mContext);
+
+ // This also constitutes an opt-out, so we wipe any data for
+ // this device from the backend. We start that process with
+ // an alarm in order to guarantee wakelock states.
+ if (wasEnabled && mSetupComplete) {
+ // NOTE: we currently flush every registered transport, not just
+ // the currently-active one.
+ List<String> transportNames = new ArrayList<>();
+ List<String> transportDirNames = new ArrayList<>();
+ mTransportManager.forEachRegisteredTransport(
+ name -> {
+ final String dirName;
+ try {
+ dirName =
+ mTransportManager
+ .getTransportDirName(name);
+ } catch (TransportNotRegisteredException e) {
+ // Should never happen
+ Slog.e(TAG, "Unexpected unregistered transport", e);
+ return;
+ }
+ transportNames.add(name);
+ transportDirNames.add(dirName);
+ });
+
+ // build the set of transports for which we are posting an init
+ for (int i = 0; i < transportNames.size(); i++) {
+ recordInitPending(
+ true,
+ transportNames.get(i),
+ transportDirNames.get(i));
+ }
+ mAlarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(),
+ mRunInitIntent);
+ }
+ }
+ }
+ }
+
+ @VisibleForTesting
+ void writeEnabledState(boolean enable) {
+ UserBackupManagerFilePersistedSettings.writeBackupEnableState(mUserId, enable);
+ }
+
+ @VisibleForTesting
+ boolean readEnabledState() {
+ return UserBackupManagerFilePersistedSettings.readBackupEnableState(mUserId);
+ }
+
/** Enable/disable automatic restore of app data at install time. */
public void setAutoRestore(boolean doAutoRestore) {
mContext.enforceCallingOrSelfPermission(android.Manifest.permission.BACKUP,
diff --git a/services/core/java/com/android/server/LocationManagerServiceUtils.java b/services/core/java/com/android/server/LocationManagerServiceUtils.java
deleted file mode 100644
index ba1c81c..0000000
--- a/services/core/java/com/android/server/LocationManagerServiceUtils.java
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.util.Log;
-
-import com.android.server.location.CallerIdentity;
-
-import java.util.NoSuchElementException;
-import java.util.function.Consumer;
-
-/**
- * Shared utilities for LocationManagerService and GnssManager.
- */
-public class LocationManagerServiceUtils {
-
- private static final String TAG = "LocManagerServiceUtils";
- private static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
-
- /**
- * Listener that can be linked to a binder.
- * @param <TListener> listener type
- * @param <TRequest> request type
- */
- public static class LinkedListener<TRequest, TListener> extends
- LinkedListenerBase {
- @Nullable protected final TRequest mRequest;
- private final TListener mListener;
- private final Consumer<TListener> mBinderDeathCallback;
-
- public LinkedListener(
- @Nullable TRequest request,
- @NonNull TListener listener,
- String listenerName,
- @NonNull CallerIdentity callerIdentity,
- @NonNull Consumer<TListener> binderDeathCallback) {
- super(callerIdentity, listenerName);
- mListener = listener;
- mRequest = request;
- mBinderDeathCallback = binderDeathCallback;
- }
-
- @Nullable
- public TRequest getRequest() {
- return mRequest;
- }
-
- @Override
- public void binderDied() {
- if (D) Log.d(TAG, "Remote " + mListenerName + " died.");
- mBinderDeathCallback.accept(mListener);
- }
- }
-
- /**
- * Skeleton class of listener that can be linked to a binder.
- */
- public abstract static class LinkedListenerBase implements IBinder.DeathRecipient {
- protected final CallerIdentity mCallerIdentity;
- protected final String mListenerName;
-
- LinkedListenerBase(
- @NonNull CallerIdentity callerIdentity, @NonNull String listenerName) {
- mCallerIdentity = callerIdentity;
- mListenerName = listenerName;
- }
-
- @Override
- public String toString() {
- return mListenerName + "[" + mCallerIdentity.mPackageName + "(" + mCallerIdentity.mPid
- + ")]";
- }
-
- public CallerIdentity getCallerIdentity() {
- return mCallerIdentity;
- }
-
- public String getListenerName() {
- return mListenerName;
- }
-
- /**
- * Link listener (i.e. callback) to a binder, so that it will be called upon binder's death.
- */
- public boolean linkToListenerDeathNotificationLocked(IBinder binder) {
- try {
- binder.linkToDeath(this, 0 /* flags */);
- return true;
- } catch (RemoteException e) {
- // if the remote process registering the listener is already dead, just swallow the
- // exception and return
- Log.w(TAG, "Could not link " + mListenerName + " death callback.", e);
- return false;
- }
- }
-
- /**
- * Unlink death listener (i.e. callback) from binder.
- */
- public void unlinkFromListenerDeathNotificationLocked(IBinder binder) {
- try {
- binder.unlinkToDeath(this, 0 /* flags */);
- } catch (NoSuchElementException e) {
- Log.w(TAG, "Could not unlink " + mListenerName + " death callback.", e);
- }
- }
- }
-}
diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java
index cea3251..3148a62 100644
--- a/services/core/java/com/android/server/PinnerService.java
+++ b/services/core/java/com/android/server/PinnerService.java
@@ -103,7 +103,7 @@
private static boolean PROP_PIN_CAMERA =
DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_RUNTIME_NATIVE_BOOT,
"pin_camera",
- SystemProperties.getBoolean("pinner.pin_camera", true));
+ SystemProperties.getBoolean("pinner.pin_camera", false));
// Pin using pinlist.meta when pinning apps.
private static boolean PROP_PIN_PINLIST = SystemProperties.getBoolean(
"pinner.use_pinlist", true);
diff --git a/services/core/java/com/android/server/ServiceWatcher.java b/services/core/java/com/android/server/ServiceWatcher.java
index cfb79aa..16623b0 100644
--- a/services/core/java/com/android/server/ServiceWatcher.java
+++ b/services/core/java/com/android/server/ServiceWatcher.java
@@ -53,11 +53,6 @@
import java.io.PrintWriter;
import java.util.List;
import java.util.Objects;
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.FutureTask;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
/**
* Maintains a binding to the best service that matches the given intent information. Bind and
@@ -71,21 +66,12 @@
private static final String EXTRA_SERVICE_VERSION = "serviceVersion";
private static final String EXTRA_SERVICE_IS_MULTIUSER = "serviceIsMultiuser";
- private static final long BLOCKING_BINDER_TIMEOUT_MS = 30 * 1000;
-
/** Function to run on binder interface. */
public interface BinderRunner {
/** Called to run client code with the binder. */
void run(IBinder binder) throws RemoteException;
- }
-
- /**
- * Function to run on binder interface.
- * @param <T> Type to return.
- */
- public interface BlockingBinderRunner<T> {
- /** Called to run client code with the binder. */
- T run(IBinder binder) throws RemoteException;
+ /** Called if an error occurred and the function could not be run. */
+ default void onError() {}
}
/**
@@ -412,6 +398,7 @@
public final void runOnBinder(BinderRunner runner) {
mHandler.post(() -> {
if (mBinder == null) {
+ runner.onError();
return;
}
@@ -421,70 +408,11 @@
// binders may propagate some specific non-RemoteExceptions from the other side
// through the binder as well - we cannot allow those to crash the system server
Log.e(TAG, getLogPrefix() + " exception running on " + mServiceInfo, e);
+ runner.onError();
}
});
}
- /**
- * Runs the given function synchronously if currently connected, and returns the default value
- * if not currently connected or if any exception is thrown. Do not obtain any locks within the
- * BlockingBinderRunner, or risk deadlock. The default value will be returned if there is no
- * service connection when this is run, if a RemoteException occurs, or if the operation times
- * out.
- *
- * @deprecated Using this function is an indication that your AIDL API is broken. Calls from
- * system server to outside MUST be one-way, and so cannot return any result, and this
- * method should not be needed or used. Use a separate callback interface to allow outside
- * components to return results back to the system server.
- */
- @Deprecated
- public final <T> T runOnBinderBlocking(BlockingBinderRunner<T> runner, T defaultValue) {
- try {
- return runOnHandlerBlocking(() -> {
- if (mBinder == null) {
- return defaultValue;
- }
-
- try {
- return runner.run(mBinder);
- } catch (RuntimeException | RemoteException e) {
- // binders may propagate some specific non-RemoteExceptions from the other side
- // through the binder as well - we cannot allow those to crash the system server
- Log.e(TAG, getLogPrefix() + " exception running on " + mServiceInfo, e);
- return defaultValue;
- }
- });
- } catch (InterruptedException | TimeoutException e) {
- return defaultValue;
- }
- }
-
- private <T> T runOnHandlerBlocking(Callable<T> c)
- throws InterruptedException, TimeoutException {
- if (Looper.myLooper() == mHandler.getLooper()) {
- try {
- return c.call();
- } catch (Exception e) {
- // Function cannot throw exception, this should never happen
- throw new IllegalStateException(e);
- }
- } else {
- FutureTask<T> task = new FutureTask<>(c);
- mHandler.post(task);
- try {
- // timeout will unblock callers, in particular if the caller is a binder thread to
- // help reduce binder contention. this will still result in blocking the handler
- // thread which may result in ANRs, but should make problems slightly more rare.
- // the underlying solution is simply not to use this API at all, but that would
- // require large refactors to very legacy code.
- return task.get(BLOCKING_BINDER_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- } catch (ExecutionException e) {
- // Function cannot throw exception, this should never happen
- throw new IllegalStateException(e);
- }
- }
- }
-
private String getLogPrefix() {
return "[" + mIntent.getAction() + "]";
}
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 7dedad7..bc70dbd 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -85,6 +85,7 @@
import com.android.internal.telephony.IPhoneStateListener;
import com.android.internal.telephony.ITelephonyRegistry;
import com.android.internal.telephony.TelephonyPermissions;
+import com.android.internal.telephony.util.TelephonyUtils;
import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.FrameworkStatsLog;
@@ -1654,7 +1655,7 @@
&& (mDataConnectionState[phoneId] != state
|| mDataConnectionNetworkType[phoneId] != networkType)) {
String str = "onDataConnectionStateChanged("
- + dataStateToString(state)
+ + TelephonyUtils.dataStateToString(state)
+ ", " + getNetworkTypeName(networkType)
+ ") subId=" + subId + ", phoneId=" + phoneId;
log(str);
@@ -2515,7 +2516,7 @@
// status bar takes care of that after taking into account all of the
// required info.
Intent intent = new Intent(ACTION_ANY_DATA_CONNECTION_STATE_CHANGED);
- intent.putExtra(PHONE_CONSTANTS_STATE_KEY, dataStateToString(state));
+ intent.putExtra(PHONE_CONSTANTS_STATE_KEY, TelephonyUtils.dataStateToString(state));
intent.putExtra(PHONE_CONSTANTS_DATA_APN_KEY, apn);
intent.putExtra(PHONE_CONSTANTS_DATA_APN_TYPE_KEY,
ApnSetting.getApnTypesStringFromBitmask(apnType));
@@ -2855,21 +2856,6 @@
}
/**
- * Convert TelephonyManager.DATA_* to string.
- *
- * @return The data state in string format.
- */
- private static String dataStateToString(int state) {
- switch (state) {
- case TelephonyManager.DATA_DISCONNECTED: return "DISCONNECTED";
- case TelephonyManager.DATA_CONNECTING: return "CONNECTING";
- case TelephonyManager.DATA_CONNECTED: return "CONNECTED";
- case TelephonyManager.DATA_SUSPENDED: return "SUSPENDED";
- }
- return "UNKNOWN(" + state + ")";
- }
-
- /**
* Returns a string representation of the radio technology (network type)
* currently in use on the device.
* @param subId for which network type is returned
diff --git a/services/core/java/com/android/server/accounts/AccountManagerService.java b/services/core/java/com/android/server/accounts/AccountManagerService.java
index debc2a1..8166c83 100644
--- a/services/core/java/com/android/server/accounts/AccountManagerService.java
+++ b/services/core/java/com/android/server/accounts/AccountManagerService.java
@@ -584,6 +584,7 @@
Log.d(TAG, "Visibility was not initialized");
accountVisibility = new HashMap<>();
accounts.visibilityCache.put(account, accountVisibility);
+ AccountManager.invalidateLocalAccountsDataCaches();
}
return accountVisibility;
}
@@ -871,6 +872,7 @@
Map<String, Integer> accountVisibility =
getPackagesAndVisibilityForAccountLocked(account, accounts);
accountVisibility.put(packageName, newVisibility);
+ AccountManager.invalidateLocalAccountsDataCaches();
return true;
}
@@ -1241,6 +1243,7 @@
accounts.accountCache.put(accountType, accountsForType);
}
accounts.visibilityCache.putAll(accountsDb.findAllVisibilityValues());
+ AccountManager.invalidateLocalAccountsDataCaches();
} finally {
if (accountDeleted) {
sendAccountsChangedBroadcast(accounts.userId);
@@ -1325,6 +1328,7 @@
accounts = new UserAccounts(mContext, userId, preNDbFile, deDbFile);
mUsers.append(userId, accounts);
purgeOldGrants(accounts);
+ AccountManager.invalidateLocalAccountsDataCaches();
validateAccounts = true;
}
// open CE database if necessary
@@ -1406,6 +1410,7 @@
getPackagesAndVisibilityForAccountLocked(account, accounts);
accountVisibility.remove(packageName);
}
+ AccountManager.invalidateLocalAccountsDataCaches();
}
}
}
@@ -1419,6 +1424,7 @@
accounts = mUsers.get(userId);
mUsers.remove(userId);
mLocalUnlockedUsers.delete(userId);
+ AccountManager.invalidateLocalAccountsDataCaches();
}
if (accounts != null) {
synchronized (accounts.dbLock) {
@@ -1839,6 +1845,8 @@
+ account.toSafeString()
+ ", skipping since insertExtra failed for key " + key);
return false;
+ } else {
+ AccountManager.invalidateLocalAccountUserDataCaches();
}
}
}
@@ -2118,6 +2126,9 @@
for (String packageName : accountRemovedReceivers) {
sendAccountRemovedBroadcast(accountToRename, packageName, accounts.userId);
}
+
+ AccountManager.invalidateLocalAccountsDataCaches();
+ AccountManager.invalidateLocalAccountUserDataCaches();
}
}
return resultAccount;
@@ -2385,6 +2396,8 @@
}
}
+ AccountManager.invalidateLocalAccountUserDataCaches();
+
return isChanged;
}
@@ -2720,6 +2733,7 @@
}
synchronized (accounts.cacheLock) {
writeUserDataIntoCacheLocked(accounts, account, key, value);
+ AccountManager.invalidateLocalAccountUserDataCaches();
}
}
}
@@ -5831,6 +5845,8 @@
accounts.authTokenCache.remove(account);
accounts.previousNameCache.remove(account);
accounts.visibilityCache.remove(account);
+
+ AccountManager.invalidateLocalAccountsDataCaches();
}
/**
@@ -5850,6 +5866,7 @@
: UUID.randomUUID().toString();
newAccountsForType[oldLength] = new Account(account, token);
accounts.accountCache.put(account.type, newAccountsForType);
+ AccountManager.invalidateLocalAccountsDataCaches();
return newAccountsForType[oldLength];
}
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index a7125b4..28f6add 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -518,14 +518,16 @@
}
mInjector.installEncryptionUnawareProviders(userId);
- // Dispatch unlocked to external apps
- final Intent unlockedIntent = new Intent(Intent.ACTION_USER_UNLOCKED);
- unlockedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
- unlockedIntent.addFlags(
- Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
- mInjector.broadcastIntent(unlockedIntent, null, null, 0, null,
- null, null, AppOpsManager.OP_NONE, null, false, false, MY_PID, SYSTEM_UID,
- Binder.getCallingUid(), Binder.getCallingPid(), userId);
+ if (!mInjector.getUserManager().isPreCreated(userId)) {
+ // Dispatch unlocked to external apps
+ final Intent unlockedIntent = new Intent(Intent.ACTION_USER_UNLOCKED);
+ unlockedIntent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
+ unlockedIntent.addFlags(
+ Intent.FLAG_RECEIVER_REGISTERED_ONLY | Intent.FLAG_RECEIVER_FOREGROUND);
+ mInjector.broadcastIntent(unlockedIntent, null, null, 0, null,
+ null, null, AppOpsManager.OP_NONE, null, false, false, MY_PID, SYSTEM_UID,
+ Binder.getCallingUid(), Binder.getCallingPid(), userId);
+ }
if (getUserInfo(userId).isManagedProfile()) {
UserInfo parent = mInjector.getUserManager().getProfileParent(userId);
@@ -582,9 +584,12 @@
// Remember that we logged in
mInjector.getUserManager().onUserLoggedIn(userId);
+ Runnable initializeUser = () -> mInjector.getUserManager().makeInitialized(userInfo.id);
if (!userInfo.isInitialized()) {
- if (userId != UserHandle.USER_SYSTEM) {
- Slog.d(TAG, "Initializing user #" + userId);
+ Slog.d(TAG, "Initializing user #" + userId);
+ if (userInfo.preCreated) {
+ initializeUser.run();
+ } else if (userId != UserHandle.USER_SYSTEM) {
Intent intent = new Intent(Intent.ACTION_USER_INITIALIZE);
intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND
| Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
@@ -595,7 +600,7 @@
String data, Bundle extras, boolean ordered,
boolean sticky, int sendingUser) {
// Note: performReceive is called with mService lock held
- mInjector.getUserManager().makeInitialized(userInfo.id);
+ initializeUser.run();
}
}, 0, null, null, null, AppOpsManager.OP_NONE,
null, true, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(),
@@ -796,7 +801,15 @@
mInjector.getUserManagerInternal().setUserState(userId, uss.state);
updateStartedUserArrayLU();
- final boolean allowDelayyLockingCopied = allowDelayedLocking;
+ final boolean allowDelayedLockingCopied = allowDelayedLocking;
+ Runnable finishUserStoppingAsync = () ->
+ mHandler.post(() -> finishUserStopping(userId, uss, allowDelayedLockingCopied));
+
+ if (mInjector.getUserManager().isPreCreated(userId)) {
+ finishUserStoppingAsync.run();
+ return;
+ }
+
// Post to handler to obtain amLock
mHandler.post(() -> {
// We are going to broadcast ACTION_USER_STOPPING and then
@@ -811,8 +824,7 @@
@Override
public void performReceive(Intent intent, int resultCode, String data,
Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
- mHandler.post(() -> finishUserStopping(userId, uss,
- allowDelayyLockingCopied));
+ finishUserStoppingAsync.run();
}
};
@@ -831,22 +843,6 @@
void finishUserStopping(final int userId, final UserState uss,
final boolean allowDelayedLocking) {
Slog.d(TAG, "UserController event: finishUserStopping(" + userId + ")");
- // On to the next.
- final Intent shutdownIntent = new Intent(Intent.ACTION_SHUTDOWN);
- // This is the result receiver for the final shutdown broadcast.
- final IIntentReceiver shutdownReceiver = new IIntentReceiver.Stub() {
- @Override
- public void performReceive(Intent intent, int resultCode, String data,
- Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
- mHandler.post(new Runnable() {
- @Override
- public void run() {
- finishUserStopped(uss, allowDelayedLocking);
- }
- });
- }
- };
-
synchronized (mLock) {
if (uss.state != UserState.STATE_STOPPING) {
// Whoops, we are being started back up. Abort, abort!
@@ -861,6 +857,23 @@
Integer.toString(userId), userId);
mInjector.getSystemServiceManager().stopUser(userId);
+ Runnable finishUserStoppedAsync = () ->
+ mHandler.post(() -> finishUserStopped(uss, allowDelayedLocking));
+ if (mInjector.getUserManager().isPreCreated(userId)) {
+ finishUserStoppedAsync.run();
+ return;
+ }
+
+ // Fire the shutdown intent.
+ final Intent shutdownIntent = new Intent(Intent.ACTION_SHUTDOWN);
+ // This is the result receiver for the final shutdown broadcast.
+ final IIntentReceiver shutdownReceiver = new IIntentReceiver.Stub() {
+ @Override
+ public void performReceive(Intent intent, int resultCode, String data,
+ Bundle extras, boolean ordered, boolean sticky, int sendingUser) {
+ finishUserStoppedAsync.run();
+ }
+ };
mInjector.broadcastIntent(shutdownIntent,
null, shutdownReceiver, 0, null, null, null,
AppOpsManager.OP_NONE,
@@ -1020,6 +1033,10 @@
private void forceStopUser(@UserIdInt int userId, String reason) {
mInjector.activityManagerForceStopPackage(userId, reason);
+ if (mInjector.getUserManager().isPreCreated(userId)) {
+ // Don't fire intent for precreated.
+ return;
+ }
Intent intent = new Intent(Intent.ACTION_USER_STOPPED);
intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
| Intent.FLAG_RECEIVER_FOREGROUND);
diff --git a/services/core/java/com/android/server/attention/AttentionManagerService.java b/services/core/java/com/android/server/attention/AttentionManagerService.java
index 42fbfec..d6367ef 100644
--- a/services/core/java/com/android/server/attention/AttentionManagerService.java
+++ b/services/core/java/com/android/server/attention/AttentionManagerService.java
@@ -23,7 +23,6 @@
import android.Manifest;
import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.annotation.UserIdInt;
import android.attention.AttentionManagerInternal;
import android.attention.AttentionManagerInternal.AttentionCallbackInternal;
import android.content.BroadcastReceiver;
@@ -55,7 +54,6 @@
import android.service.attention.IAttentionService;
import android.text.TextUtils;
import android.util.Slog;
-import android.util.SparseArray;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.annotations.VisibleForTesting;
@@ -90,26 +88,37 @@
* DeviceConfig flag name, describes how much time we consider a result fresh; if the check
* attention called within that period - cached value will be returned.
*/
- @VisibleForTesting static final String KEY_STALE_AFTER_MILLIS = "stale_after_millis";
+ @VisibleForTesting
+ static final String KEY_STALE_AFTER_MILLIS = "stale_after_millis";
/** Default value in absence of {@link DeviceConfig} override. */
- @VisibleForTesting static final long DEFAULT_STALE_AFTER_MILLIS = 1_000;
+ @VisibleForTesting
+ static final long DEFAULT_STALE_AFTER_MILLIS = 1_000;
/** The size of the buffer that stores recent attention check results. */
@VisibleForTesting
protected static final int ATTENTION_CACHE_BUFFER_SIZE = 5;
+ private final AttentionServiceConnection mConnection = new AttentionServiceConnection();
private static String sTestAttentionServicePackage;
private final Context mContext;
private final PowerManager mPowerManager;
private final Object mLock;
@GuardedBy("mLock")
- private final SparseArray<UserState> mUserStates = new SparseArray<>();
+ private IAttentionService mService;
+ @GuardedBy("mLock")
+ private AttentionCheckCacheBuffer mAttentionCheckCacheBuffer;
+ @GuardedBy("mLock")
+ private boolean mBinding;
private AttentionHandler mAttentionHandler;
@VisibleForTesting
ComponentName mComponentName;
+ @VisibleForTesting
+ @GuardedBy("mLock")
+ AttentionCheck mCurrentAttentionCheck;
+
public AttentionManagerService(Context context) {
this(context, (PowerManager) context.getSystemService(Context.POWER_SERVICE),
new Object(), null);
@@ -140,11 +149,6 @@
publishLocalService(AttentionManagerInternal.class, new LocalService());
}
- @Override
- public void onSwitchUser(int userId) {
- cancelAndUnbindLocked(peekUserStateLocked(userId));
- }
-
/** Returns {@code true} if attention service is configured on this device. */
public static boolean isServiceConfigured(Context context) {
return !TextUtils.isEmpty(getServiceConfigPackage(context));
@@ -217,35 +221,33 @@
// schedule shutting down the connection if no one resets this timer
freeIfInactiveLocked();
- final UserState userState = getOrCreateCurrentUserStateLocked();
// lazily start the service, which should be very lightweight to start
- userState.bindLocked();
+ bindLocked();
// throttle frequent requests
- final AttentionCheckCache cache = userState.mAttentionCheckCacheBuffer == null ? null
- : userState.mAttentionCheckCacheBuffer.getLast();
+ final AttentionCheckCache cache = mAttentionCheckCacheBuffer == null ? null
+ : mAttentionCheckCacheBuffer.getLast();
if (cache != null && now < cache.mLastComputed + getStaleAfterMillis()) {
callbackInternal.onSuccess(cache.mResult, cache.mTimestamp);
return true;
}
// prevent spamming with multiple requests, only one at a time is allowed
- if (userState.mCurrentAttentionCheck != null) {
- if (!userState.mCurrentAttentionCheck.mIsDispatched
- || !userState.mCurrentAttentionCheck.mIsFulfilled) {
+ if (mCurrentAttentionCheck != null) {
+ if (!mCurrentAttentionCheck.mIsDispatched
+ || !mCurrentAttentionCheck.mIsFulfilled) {
return false;
}
}
- userState.mCurrentAttentionCheck = createAttentionCheck(callbackInternal, userState);
+ mCurrentAttentionCheck = new AttentionCheck(callbackInternal, this);
- if (userState.mService != null) {
+ if (mService != null) {
try {
// schedule request cancellation if not returned by that point yet
cancelAfterTimeoutLocked(timeout);
- userState.mService.checkAttention(
- userState.mCurrentAttentionCheck.mIAttentionCallback);
- userState.mCurrentAttentionCheck.mIsDispatched = true;
+ mService.checkAttention(mCurrentAttentionCheck.mIAttentionCallback);
+ mCurrentAttentionCheck.mIsDispatched = true;
} catch (RemoteException e) {
Slog.e(LOG_TAG, "Cannot call into the AttentionService");
return false;
@@ -255,59 +257,15 @@
}
}
- private AttentionCheck createAttentionCheck(AttentionCallbackInternal callbackInternal,
- UserState userState) {
- final IAttentionCallback iAttentionCallback = new IAttentionCallback.Stub() {
- @Override
- public void onSuccess(@AttentionSuccessCodes int result, long timestamp) {
- if (userState.mCurrentAttentionCheck.mIsFulfilled) {
- return;
- }
- userState.mCurrentAttentionCheck.mIsFulfilled = true;
- callbackInternal.onSuccess(result, timestamp);
- logStats(result);
- synchronized (mLock) {
- if (userState.mAttentionCheckCacheBuffer == null) {
- userState.mAttentionCheckCacheBuffer = new AttentionCheckCacheBuffer();
- }
- userState.mAttentionCheckCacheBuffer.add(
- new AttentionCheckCache(SystemClock.uptimeMillis(), result, timestamp));
- }
- }
-
- @Override
- public void onFailure(@AttentionFailureCodes int error) {
- if (userState.mCurrentAttentionCheck.mIsFulfilled) {
- return;
- }
- userState.mCurrentAttentionCheck.mIsFulfilled = true;
- callbackInternal.onFailure(error);
- logStats(error);
- }
-
- private void logStats(int result) {
- FrameworkStatsLog.write(
- FrameworkStatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
- result);
- }
- };
-
- return new AttentionCheck(callbackInternal, iAttentionCallback);
- }
-
/** Cancels the specified attention check. */
@VisibleForTesting
void cancelAttentionCheck(AttentionCallbackInternal callbackInternal) {
synchronized (mLock) {
- final UserState userState = peekCurrentUserStateLocked();
- if (userState == null) {
- return;
- }
- if (!userState.mCurrentAttentionCheck.mCallbackInternal.equals(callbackInternal)) {
+ if (!mCurrentAttentionCheck.mCallbackInternal.equals(callbackInternal)) {
Slog.w(LOG_TAG, "Cannot cancel a non-current request");
return;
}
- cancel(userState);
+ cancel();
}
}
@@ -328,39 +286,6 @@
timeout);
}
-
- @GuardedBy("mLock")
- @VisibleForTesting
- protected UserState getOrCreateCurrentUserStateLocked() {
- // Doesn't need to cache the states of different users.
- return getOrCreateUserStateLocked(0);
- }
-
- @GuardedBy("mLock")
- @VisibleForTesting
- protected UserState getOrCreateUserStateLocked(int userId) {
- UserState result = mUserStates.get(userId);
- if (result == null) {
- result = new UserState(userId, mContext, mLock, mAttentionHandler, mComponentName);
- mUserStates.put(userId, result);
- }
- return result;
- }
-
- @GuardedBy("mLock")
- @Nullable
- @VisibleForTesting
- protected UserState peekCurrentUserStateLocked() {
- // Doesn't need to cache the states of different users.
- return peekUserStateLocked(0);
- }
-
- @GuardedBy("mLock")
- @Nullable
- private UserState peekUserStateLocked(int userId) {
- return mUserStates.get(userId);
- }
-
private static String getServiceConfigPackage(Context context) {
return context.getPackageManager().getAttentionServicePackageName();
}
@@ -418,21 +343,14 @@
ipw.println("Class=" + mComponentName.getClassName());
ipw.decreaseIndent();
}
-
+ ipw.println("binding=" + mBinding);
+ ipw.println("current attention check:");
synchronized (mLock) {
- int size = mUserStates.size();
- ipw.print("Number user states: ");
- ipw.println(size);
- if (size > 0) {
- ipw.increaseIndent();
- for (int i = 0; i < size; i++) {
- UserState userState = mUserStates.valueAt(i);
- ipw.print(i);
- ipw.print(":");
- userState.dump(ipw);
- ipw.println();
- }
- ipw.decreaseIndent();
+ if (mCurrentAttentionCheck != null) {
+ mCurrentAttentionCheck.dump(ipw);
+ }
+ if (mAttentionCheckCacheBuffer != null) {
+ mAttentionCheckCacheBuffer.dump(ipw);
}
}
}
@@ -485,6 +403,20 @@
return offset >= mSize ? null
: mQueue[(mStartIndex + offset) % ATTENTION_CACHE_BUFFER_SIZE];
}
+
+ private void dump(IndentingPrintWriter ipw) {
+ ipw.println("attention check cache:");
+ AttentionCheckCache cache;
+ for (int i = 0; i < mSize; i++) {
+ cache = get(i);
+ if (cache != null) {
+ ipw.increaseIndent();
+ ipw.println("timestamp=" + cache.mTimestamp);
+ ipw.println("result=" + cache.mResult);
+ ipw.decreaseIndent();
+ }
+ }
+ }
}
@VisibleForTesting
@@ -505,143 +437,114 @@
static final class AttentionCheck {
private final AttentionCallbackInternal mCallbackInternal;
private final IAttentionCallback mIAttentionCallback;
+
private boolean mIsDispatched;
private boolean mIsFulfilled;
AttentionCheck(AttentionCallbackInternal callbackInternal,
- IAttentionCallback iAttentionCallback) {
+ AttentionManagerService service) {
mCallbackInternal = callbackInternal;
- mIAttentionCallback = iAttentionCallback;
+ mIAttentionCallback = new IAttentionCallback.Stub() {
+ @Override
+ public void onSuccess(@AttentionSuccessCodes int result, long timestamp) {
+ if (mIsFulfilled) {
+ return;
+ }
+ mIsFulfilled = true;
+ callbackInternal.onSuccess(result, timestamp);
+ logStats(result);
+ service.appendResultToAttentionCacheBuffer(
+ new AttentionCheckCache(SystemClock.uptimeMillis(), result,
+ timestamp));
+ }
+
+ @Override
+ public void onFailure(@AttentionFailureCodes int error) {
+ if (mIsFulfilled) {
+ return;
+ }
+ mIsFulfilled = true;
+ callbackInternal.onFailure(error);
+ logStats(error);
+ }
+
+ private void logStats(int result) {
+ FrameworkStatsLog.write(
+ FrameworkStatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
+ result);
+ }
+ };
}
void cancelInternal() {
mIsFulfilled = true;
mCallbackInternal.onFailure(ATTENTION_FAILURE_CANCELLED);
}
+
+ void dump(IndentingPrintWriter ipw) {
+ ipw.increaseIndent();
+ ipw.println("is dispatched=" + mIsDispatched);
+ ipw.println("is fulfilled:=" + mIsFulfilled);
+ ipw.decreaseIndent();
+ }
}
- @VisibleForTesting
- protected static class UserState {
- private final ComponentName mComponentName;
- private final AttentionServiceConnection mConnection = new AttentionServiceConnection();
-
- @GuardedBy("mLock")
- IAttentionService mService;
- @GuardedBy("mLock")
- AttentionCheck mCurrentAttentionCheck;
- @GuardedBy("mLock")
- AttentionCheckCacheBuffer mAttentionCheckCacheBuffer;
- @GuardedBy("mLock")
- private boolean mBinding;
-
- @UserIdInt
- private final int mUserId;
- private final Context mContext;
- private final Object mLock;
- private final Handler mAttentionHandler;
-
- UserState(int userId, Context context, Object lock, Handler handler,
- ComponentName componentName) {
- mUserId = userId;
- mContext = Objects.requireNonNull(context);
- mLock = Objects.requireNonNull(lock);
- mComponentName = Objects.requireNonNull(componentName);
- mAttentionHandler = handler;
- }
-
- @GuardedBy("mLock")
- private void handlePendingCallbackLocked() {
- if (!mCurrentAttentionCheck.mIsDispatched) {
- if (mService != null) {
- try {
- mService.checkAttention(mCurrentAttentionCheck.mIAttentionCallback);
- mCurrentAttentionCheck.mIsDispatched = true;
- } catch (RemoteException e) {
- Slog.e(LOG_TAG, "Cannot call into the AttentionService");
- }
- } else {
- mCurrentAttentionCheck.mCallbackInternal.onFailure(ATTENTION_FAILURE_UNKNOWN);
- }
+ private void appendResultToAttentionCacheBuffer(AttentionCheckCache cache) {
+ synchronized (mLock) {
+ if (mAttentionCheckCacheBuffer == null) {
+ mAttentionCheckCacheBuffer = new AttentionCheckCacheBuffer();
}
+ mAttentionCheckCacheBuffer.add(cache);
+ }
+ }
+
+
+ private class AttentionServiceConnection implements ServiceConnection {
+ @Override
+ public void onServiceConnected(ComponentName name, IBinder service) {
+ init(IAttentionService.Stub.asInterface(service));
}
- /** Binds to the system's AttentionService which provides an actual implementation. */
- @GuardedBy("mLock")
- private void bindLocked() {
- // No need to bind if service is binding or has already been bound.
- if (mBinding || mService != null) {
- return;
- }
-
- mBinding = true;
- // mContext.bindServiceAsUser() calls into ActivityManagerService which it may already
- // hold the lock and had called into PowerManagerService, which holds a lock.
- // That would create a deadlock. To solve that, putting it on a handler.
- mAttentionHandler.post(() -> {
- final Intent serviceIntent = new Intent(
- AttentionService.SERVICE_INTERFACE).setComponent(
- mComponentName);
- // Note: no reason to clear the calling identity, we won't have one in a handler.
- mContext.bindServiceAsUser(serviceIntent, mConnection,
- Context.BIND_AUTO_CREATE, UserHandle.CURRENT);
-
- });
+ @Override
+ public void onServiceDisconnected(ComponentName name) {
+ cleanupService();
}
- private void dump(IndentingPrintWriter pw) {
- pw.println("userId=" + mUserId);
+ @Override
+ public void onBindingDied(ComponentName name) {
+ cleanupService();
+ }
+
+ @Override
+ public void onNullBinding(ComponentName name) {
+ cleanupService();
+ }
+
+ void cleanupService() {
+ init(null);
+ }
+
+ private void init(@Nullable IAttentionService service) {
synchronized (mLock) {
- pw.println("binding=" + mBinding);
- pw.println("current attention check:");
- if (mCurrentAttentionCheck != null) {
- pw.increaseIndent();
- pw.println("is dispatched=" + mCurrentAttentionCheck.mIsDispatched);
- pw.println("is fulfilled:=" + mCurrentAttentionCheck.mIsFulfilled);
- pw.decreaseIndent();
- }
- if (mAttentionCheckCacheBuffer != null) {
- pw.println("attention check cache:");
- for (int i = 0; i < mAttentionCheckCacheBuffer.mSize; i++) {
- pw.increaseIndent();
- pw.println("timestamp=" + mAttentionCheckCacheBuffer.get(i).mTimestamp);
- pw.println("result=" + mAttentionCheckCacheBuffer.get(i).mResult);
- pw.decreaseIndent();
- }
- }
+ mService = service;
+ mBinding = false;
+ handlePendingCallbackLocked();
}
}
+ }
- private class AttentionServiceConnection implements ServiceConnection {
- @Override
- public void onServiceConnected(ComponentName name, IBinder service) {
- init(IAttentionService.Stub.asInterface(service));
- }
-
- @Override
- public void onServiceDisconnected(ComponentName name) {
- cleanupService();
- }
-
- @Override
- public void onBindingDied(ComponentName name) {
- cleanupService();
- }
-
- @Override
- public void onNullBinding(ComponentName name) {
- cleanupService();
- }
-
- void cleanupService() {
- init(null);
- }
-
- private void init(@Nullable IAttentionService service) {
- synchronized (mLock) {
- mService = service;
- mBinding = false;
- handlePendingCallbackLocked();
+ @GuardedBy("mLock")
+ private void handlePendingCallbackLocked() {
+ if (mCurrentAttentionCheck != null && !mCurrentAttentionCheck.mIsDispatched) {
+ if (mService != null) {
+ try {
+ mService.checkAttention(mCurrentAttentionCheck.mIAttentionCallback);
+ mCurrentAttentionCheck.mIsDispatched = true;
+ } catch (RemoteException e) {
+ Slog.e(LOG_TAG, "Cannot call into the AttentionService");
}
+ } else {
+ mCurrentAttentionCheck.mCallbackInternal.onFailure(ATTENTION_FAILURE_UNKNOWN);
}
}
}
@@ -660,16 +563,14 @@
switch (msg.what) {
// Do not occupy resources when not in use - unbind proactively.
case CHECK_CONNECTION_EXPIRATION: {
- for (int i = 0; i < mUserStates.size(); i++) {
- cancelAndUnbindLocked(mUserStates.valueAt(i));
- }
+ cancelAndUnbindLocked();
}
break;
// Callee is no longer interested in the attention check result - cancel.
case ATTENTION_CHECK_TIMEOUT: {
synchronized (mLock) {
- cancel(peekCurrentUserStateLocked());
+ cancel();
}
}
break;
@@ -681,56 +582,71 @@
}
@VisibleForTesting
- void cancel(UserState userState) {
- if (userState == null || userState.mCurrentAttentionCheck == null) {
- return;
- }
-
- if (userState.mCurrentAttentionCheck.mIsFulfilled) {
+ @GuardedBy("mLock")
+ void cancel() {
+ if (mCurrentAttentionCheck.mIsFulfilled) {
if (DEBUG) {
Slog.d(LOG_TAG, "Trying to cancel the check that has been already fulfilled.");
}
return;
}
- if (userState.mService == null) {
- userState.mCurrentAttentionCheck.cancelInternal();
+ if (mService == null) {
+ mCurrentAttentionCheck.cancelInternal();
return;
}
try {
- userState.mService.cancelAttentionCheck(
- userState.mCurrentAttentionCheck.mIAttentionCallback);
+ mService.cancelAttentionCheck(mCurrentAttentionCheck.mIAttentionCallback);
} catch (RemoteException e) {
Slog.e(LOG_TAG, "Unable to cancel attention check");
- userState.mCurrentAttentionCheck.cancelInternal();
+ mCurrentAttentionCheck.cancelInternal();
}
}
@GuardedBy("mLock")
- private void cancelAndUnbindLocked(UserState userState) {
+ private void cancelAndUnbindLocked() {
synchronized (mLock) {
- if (userState == null) {
+ if (mCurrentAttentionCheck == null) {
return;
}
-
- cancel(userState);
-
- if (userState.mService == null) {
+ cancel();
+ if (mService == null) {
return;
}
-
- mAttentionHandler.post(() -> mContext.unbindService(userState.mConnection));
+ mAttentionHandler.post(() -> mContext.unbindService(mConnection));
// Note: this will set mBinding to false even though it could still be trying to bind
// (i.e. the runnable was posted in bindLocked but then cancelAndUnbindLocked was
// called before it's run yet). This is a safe state at the moment,
// since it will eventually, but feels like a source for confusion down the road and
// may cause some expensive and unnecessary work to be done.
- userState.mConnection.cleanupService();
- mUserStates.remove(userState.mUserId);
+ mConnection.cleanupService();
}
}
+ /** Binds to the system's AttentionService which provides an actual implementation. */
+ @GuardedBy("mLock")
+ private void bindLocked() {
+ // No need to bind if service is binding or has already been bound.
+ if (mBinding || mService != null) {
+ return;
+ }
+
+ mBinding = true;
+ // mContext.bindServiceAsUser() calls into ActivityManagerService which it may already
+ // hold the lock and had called into PowerManagerService, which holds a lock.
+ // That would create a deadlock. To solve that, putting it on a handler.
+ mAttentionHandler.post(() -> {
+ final Intent serviceIntent = new Intent(
+ AttentionService.SERVICE_INTERFACE).setComponent(
+ mComponentName);
+ // Note: no reason to clear the calling identity, we won't have one in a handler.
+ mContext.bindServiceAsUser(serviceIntent, mConnection,
+ Context.BIND_AUTO_CREATE, UserHandle.CURRENT);
+
+ });
+ }
+
/**
* Unbinds and stops the service when the screen off intent is received.
* Attention service only makes sense when screen is ON; disconnect and stop service otherwise.
@@ -739,7 +655,7 @@
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
- cancelAndUnbindLocked(peekCurrentUserStateLocked());
+ cancelAndUnbindLocked();
}
}
}
@@ -852,7 +768,6 @@
private void resetStates() {
mComponentName = resolveAttentionService(mContext);
- mUserStates.clear();
}
@Override
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
index c17ed3e..c72674a 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
@@ -33,6 +33,7 @@
import android.media.AudioSystem;
import android.media.IAudioRoutesObserver;
import android.media.IStrategyPreferredDeviceDispatcher;
+import android.media.MediaMetrics;
import android.os.Binder;
import android.os.RemoteCallbackList;
import android.os.RemoteException;
@@ -64,6 +65,10 @@
// lock to synchronize all access to mConnectedDevices and mApmConnectedDevices
private final Object mDevicesLock = new Object();
+ //Audio Analytics ids.
+ private static final String mAnalyticsId = "audio.deviceInventory.";
+ private static final String mAnalyticsPropEarlyReturn = "earlyReturn";
+
// List of connected devices
// Key for map created from DeviceInfo.makeDeviceListKey()
@GuardedBy("mDevicesLock")
@@ -242,6 +247,15 @@
final DeviceInfo di = mConnectedDevices.get(key);
boolean isConnected = di != null;
+ new MediaMetrics.Item(mAnalyticsId + "onSetA2dpSinkConnectionState")
+ .putInt("state", state)
+ .putString("address", address)
+ .putInt("a2dpCodec", a2dpCodec)
+ .putInt("a2dpVolume", a2dpVolume)
+ .putString("key", key)
+ .putInt("isConnected", isConnected ? 1 : 0)
+ .record();
+
if (isConnected) {
if (state == BluetoothProfile.STATE_CONNECTED) {
// device is already connected, but we are receiving a connection again,
@@ -284,6 +298,13 @@
final DeviceInfo di = mConnectedDevices.get(key);
boolean isConnected = di != null;
+ new MediaMetrics.Item(mAnalyticsId + "onSetA2dpSourceConnectionState")
+ .putInt("state", state)
+ .putString("address", address)
+ .putString("key", key)
+ .putInt("isConnected", isConnected ? 1 : 0)
+ .record();
+
if (isConnected && state != BluetoothProfile.STATE_CONNECTED) {
makeA2dpSrcUnavailable(address);
} else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) {
@@ -307,6 +328,14 @@
final DeviceInfo di = mConnectedDevices.get(key);
boolean isConnected = di != null;
+ new MediaMetrics.Item(mAnalyticsId + "onSetHearingAidConnectionState")
+ .putInt("state", state)
+ .putInt("streamType", streamType)
+ .putString("address", address)
+ .putString("key", key)
+ .putInt("isConnected", isConnected ? 1 : 0)
+ .record();
+
if (isConnected && state != BluetoothProfile.STATE_CONNECTED) {
makeHearingAidDeviceUnavailable(address);
} else if (!isConnected && state == BluetoothProfile.STATE_CONNECTED) {
@@ -319,8 +348,13 @@
@GuardedBy("AudioDeviceBroker.mDeviceStateLock")
/*package*/ void onBluetoothA2dpActiveDeviceChange(
@NonNull BtHelper.BluetoothA2dpDeviceInfo btInfo, int event) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId
+ + "onBluetoothA2dpActiveDeviceChange")
+ .putInt("event", event);
+
final BluetoothDevice btDevice = btInfo.getBtDevice();
if (btDevice == null) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "btDevice null").record();
return;
}
if (AudioService.DEBUG_DEVICES) {
@@ -341,6 +375,7 @@
if (mDeviceBroker.hasScheduledA2dpSinkConnectionState(btDevice)) {
AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
"A2dp config change ignored (scheduled connection change)"));
+ mmi.putString(mAnalyticsPropEarlyReturn, "A2dp config change ignored").record();
return;
}
final String key = DeviceInfo.makeDeviceListKey(
@@ -348,9 +383,15 @@
final DeviceInfo di = mConnectedDevices.get(key);
if (di == null) {
Log.e(TAG, "invalid null DeviceInfo in onBluetoothA2dpActiveDeviceChange");
+ mmi.putString(mAnalyticsPropEarlyReturn, "null DeviceInfo").record();
return;
}
+ mmi.putString("address", address)
+ .putInt("a2dpCodec", a2dpCodec)
+ .putInt("a2dpVolume", a2dpVolume)
+ .putString("key", key);
+
if (event == BtHelper.EVENT_ACTIVE_DEVICE_CHANGE) {
// Device is connected
if (a2dpVolume != -1) {
@@ -382,12 +423,14 @@
btDevice, BluetoothA2dp.STATE_DISCONNECTED, BluetoothProfile.A2DP,
false /* suppressNoisyIntent */, musicDevice,
-1 /* a2dpVolume */);
+ mmi.putInt("musicDevice", musicDevice);
} else {
AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent(
"APM handleDeviceConfigChange success for A2DP device addr="
+ address + " codec=" + a2dpCodec).printLog(TAG));
}
}
+ mmi.record();
}
/*package*/ void onMakeA2dpDeviceUnavailableNow(String address, int a2dpCodec) {
@@ -399,6 +442,8 @@
/*package*/ void onReportNewRoutes() {
int n = mRoutesObservers.beginBroadcast();
if (n > 0) {
+ new MediaMetrics.Item(mAnalyticsId + "onReportNewRoutes")
+ .putInt("routesObservers", n).record();
AudioRoutesInfo routes;
synchronized (mCurAudioRoutes) {
routes = new AudioRoutesInfo(mCurAudioRoutes);
@@ -428,16 +473,24 @@
AudioDeviceInventory.WiredDeviceConnectionState wdcs) {
AudioService.sDeviceLogger.log(new AudioServiceEvents.WiredDevConnectEvent(wdcs));
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId
+ + "onSetWiredDeviceConnectionState")
+ .putInt("wdcs.mState", wdcs.mState)
+ .putInt("wdcs.mType", wdcs.mType);
+
synchronized (mDevicesLock) {
if ((wdcs.mState == AudioService.CONNECTION_STATE_DISCONNECTED)
&& DEVICE_OVERRIDE_A2DP_ROUTE_ON_PLUG_SET.contains(wdcs.mType)) {
mDeviceBroker.setBluetoothA2dpOnInt(true,
"onSetWiredDeviceConnectionState state DISCONNECTED");
+ mmi.putInt("setBluetoothA2dpOnInt", 1);
}
if (!handleDeviceConnection(wdcs.mState == AudioService.CONNECTION_STATE_CONNECTED,
wdcs.mType, wdcs.mAddress, wdcs.mName)) {
// change of connection state failed, bailout
+ mmi.putString(mAnalyticsPropEarlyReturn, "change of connection state failed")
+ .record();
return;
}
if (wdcs.mState != AudioService.CONNECTION_STATE_DISCONNECTED) {
@@ -446,22 +499,30 @@
"onSetWiredDeviceConnectionState state not DISCONNECTED");
}
mDeviceBroker.checkMusicActive(wdcs.mType, wdcs.mCaller);
+ mmi.putInt("setBluetoothA2dpOnInt", 0);
}
if (wdcs.mType == AudioSystem.DEVICE_OUT_HDMI) {
mDeviceBroker.checkVolumeCecOnHdmiConnection(wdcs.mState, wdcs.mCaller);
}
sendDeviceConnectionIntent(wdcs.mType, wdcs.mState, wdcs.mAddress, wdcs.mName);
updateAudioRoutes(wdcs.mType, wdcs.mState);
+
+ mmi.putString("wdcs.mAddress", wdcs.mAddress != null ? wdcs.mAddress : "")
+ .putString("wdcs.mName", wdcs.mName != null ? wdcs.mName : "")
+ .record();
}
}
/*package*/ void onToggleHdmi() {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "onToggleHdmi");
synchronized (mDevicesLock) {
// Is HDMI connected?
final String key = DeviceInfo.makeDeviceListKey(AudioSystem.DEVICE_OUT_HDMI, "");
final DeviceInfo di = mConnectedDevices.get(key);
+ mmi.putString("key", key);
if (di == null) {
Log.e(TAG, "invalid null DeviceInfo in onToggleHdmi");
+ mmi.putString(mAnalyticsPropEarlyReturn, "invalid null DeviceInfo").record();
return;
}
// Toggle HDMI to retrigger broadcast with proper formats.
@@ -472,6 +533,7 @@
AudioSystem.DEVICE_STATE_AVAILABLE, "", "",
"android"); // reconnect
}
+ mmi.record();
}
/*package*/ void onSaveSetPreferredDevice(int strategy, @NonNull AudioDeviceAttributes device) {
@@ -535,6 +597,11 @@
+ Integer.toHexString(device) + " address:" + address
+ " name:" + deviceName + ")");
}
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "handleDeviceConnection")
+ .putInt("connect", connect ? 1 : 0)
+ .putInt("device", device)
+ .putString("address", address != null ? address : "")
+ .putString("deviceName", deviceName != null ? deviceName : "");
synchronized (mDevicesLock) {
final String deviceKey = DeviceInfo.makeDeviceListKey(device, address);
if (AudioService.DEBUG_DEVICES) {
@@ -545,6 +612,8 @@
if (AudioService.DEBUG_DEVICES) {
Slog.i(TAG, "deviceInfo:" + di + " is(already)Connected:" + isConnected);
}
+ mmi.putString("deviceKey", deviceKey)
+ .putInt("isConnected", isConnected ? 1 : 0);
if (connect && !isConnected) {
final int res = mAudioSystem.setDeviceConnectionState(device,
AudioSystem.DEVICE_STATE_AVAILABLE, address, deviceName,
@@ -552,11 +621,14 @@
if (res != AudioSystem.AUDIO_STATUS_OK) {
Slog.e(TAG, "not connecting device 0x" + Integer.toHexString(device)
+ " due to command error " + res);
+ mmi.putInt("command error", res)
+ .putInt("result", 0).record();
return false;
}
mConnectedDevices.put(deviceKey, new DeviceInfo(
device, deviceName, address, AudioSystem.AUDIO_FORMAT_DEFAULT));
mDeviceBroker.postAccessoryPlugMediaUnmute(device);
+ mmi.putInt("result", 1).record();
return true;
} else if (!connect && isConnected) {
mAudioSystem.setDeviceConnectionState(device,
@@ -564,11 +636,13 @@
AudioSystem.AUDIO_FORMAT_DEFAULT);
// always remove even if disconnection failed
mConnectedDevices.remove(deviceKey);
+ mmi.putInt("result", 1).record();
return true;
}
Log.w(TAG, "handleDeviceConnection() failed, deviceKey=" + deviceKey
+ ", deviceSpec=" + di + ", connect=" + connect);
}
+ mmi.putInt("result", 0).record();
return false;
}
@@ -582,6 +656,8 @@
toRemove.add(deviceInfo.mDeviceAddress);
}
});
+ new MediaMetrics.Item(mAnalyticsId + "disconnectA2dp")
+ .putInt("toRemove.size", toRemove.size()).record();
if (toRemove.size() > 0) {
final int delay = checkSendBecomingNoisyIntentInt(
AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP,
@@ -602,6 +678,8 @@
toRemove.add(deviceInfo.mDeviceAddress);
}
});
+ new MediaMetrics.Item(mAnalyticsId + "disconnectA2dpSink")
+ .putInt("toRemove.size", toRemove.size()).record();
toRemove.stream().forEach(deviceAddress -> makeA2dpSrcUnavailable(deviceAddress));
}
}
@@ -615,6 +693,8 @@
toRemove.add(deviceInfo.mDeviceAddress);
}
});
+ new MediaMetrics.Item(mAnalyticsId + "disconnectHearingAid")
+ .putInt("toRemove.size", toRemove.size()).record();
if (toRemove.size() > 0) {
final int delay = checkSendBecomingNoisyIntentInt(
AudioSystem.DEVICE_OUT_HEARING_AID, 0, AudioSystem.DEVICE_NONE);
@@ -771,18 +851,27 @@
@GuardedBy("mDevicesLock")
private void makeA2dpDeviceUnavailableNow(String address, int a2dpCodec) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId
+ + "makeA2dpDeviceUnavailableNow")
+ .putInt("a2dpCodec", a2dpCodec);
if (address == null) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "address null").record();
return;
}
final String deviceToRemoveKey =
DeviceInfo.makeDeviceListKey(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP, address);
+ mmi.putString("address", address)
+ .putString("deviceToRemoveKey", deviceToRemoveKey);
+
mConnectedDevices.remove(deviceToRemoveKey);
if (!deviceToRemoveKey
.equals(mApmConnectedDevices.get(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP))) {
// removing A2DP device not currently used by AudioPolicy, log but don't act on it
AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent(
"A2DP device " + address + " made unavailable, was not used")).printLog(TAG));
+ mmi.putString(mAnalyticsPropEarlyReturn, "A2DP device made unavailable, was not used")
+ .record();
return;
}
@@ -804,6 +893,7 @@
mApmConnectedDevices.remove(AudioSystem.DEVICE_OUT_BLUETOOTH_A2DP);
// Remove A2DP routes as well
setCurrentAudioRouteNameIfPossible(null);
+ mmi.record();
}
@GuardedBy("mDevicesLock")
@@ -873,6 +963,8 @@
DeviceInfo.makeDeviceListKey(AudioSystem.DEVICE_OUT_HEARING_AID, address));
// Remove Hearing Aid routes as well
setCurrentAudioRouteNameIfPossible(null);
+ new MediaMetrics.Item(mAnalyticsId + "makeHearingAidDeviceUnavailable")
+ .putString("address", address != null ? address : "").record();
}
@GuardedBy("mDevicesLock")
@@ -919,10 +1011,17 @@
@GuardedBy("mDevicesLock")
private int checkSendBecomingNoisyIntentInt(int device,
@AudioService.ConnectionState int state, int musicDevice) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId
+ + "checkSendBecomingNoisyIntentInt")
+ .putInt("device", device)
+ .putInt("state", state)
+ .putInt("musicDevice", musicDevice);
if (state != AudioService.CONNECTION_STATE_DISCONNECTED) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "CONNECTION_STATE_DISCONNECTED").record();
return 0;
}
if (!BECOMING_NOISY_INTENT_DEVICES_SET.contains(device)) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "doesn't contains device").record();
return 0;
}
int delay = 0;
@@ -950,12 +1049,14 @@
// the pausing of some apps that are playing remotely
AudioService.sDeviceLogger.log((new AudioEventLogger.StringEvent(
"dropping ACTION_AUDIO_BECOMING_NOISY")).printLog(TAG));
+ mmi.putString(mAnalyticsPropEarlyReturn, "no media playback").record();
return 0;
}
mDeviceBroker.postBroadcastBecomingNoisy();
delay = AudioService.BECOMING_NOISY_DELAY_MS;
}
+ mmi.putInt("delay", delay).record();
return delay;
}
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index f3d42ad..80c2d68 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -87,6 +87,7 @@
import android.media.IVolumeController;
import android.media.MediaExtractor;
import android.media.MediaFormat;
+import android.media.MediaMetrics;
import android.media.PlayerBase;
import android.media.VolumePolicy;
import android.media.audiofx.AudioEffect;
@@ -1826,6 +1827,15 @@
sendMsg(mAudioHandler, MSG_NOTIFY_VOL_EVENT, SENDMSG_QUEUE,
direction, 0 /*ignored*/,
extVolCtlr, 0 /*delay*/);
+
+ new MediaMetrics.Item(mAnalyticsId + "adjustSuggestedStreamVolume")
+ .setUid(Binder.getCallingUid())
+ .putInt("extVolCtlr", extVolCtlr != null ? 1 : 0)
+ .putInt("direction", direction)
+ .putInt("flags", flags)
+ .putString("callingPackage", callingPackage)
+ .putString("caller", caller)
+ .record();
} else {
adjustSuggestedStreamVolume(direction, suggestedStreamType, flags, callingPackage,
caller, Binder.getCallingUid());
@@ -1912,12 +1922,22 @@
if (DEBUG_VOL) Log.d(TAG, "adjustStreamVolume() stream=" + streamType + ", dir=" + direction
+ ", flags=" + flags + ", caller=" + caller);
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "adjustStreamVolume")
+ .setUid(uid)
+ .setPid(Binder.getCallingPid())
+ .putInt("streamType", streamType)
+ .putInt("direction", direction)
+ .putInt("flags", flags)
+ .putString("callingPackage", callingPackage)
+ .putString("caller", caller);
+
ensureValidDirection(direction);
ensureValidStreamType(streamType);
boolean isMuteAdjust = isMuteAdjust(direction);
if (isMuteAdjust && !isStreamAffectedByMute(streamType)) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "isMuteAdjust").record();
return;
}
@@ -1931,6 +1951,7 @@
!= PackageManager.PERMISSION_GRANTED) {
Log.w(TAG, "MODIFY_PHONE_STATE Permission Denial: adjustStreamVolume from pid="
+ Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
+ mmi.putString(mAnalyticsPropEarlyReturn, "Permission Denial").record();
return;
}
@@ -1962,6 +1983,7 @@
// is not an a2dp device
if (!AudioSystem.DEVICE_OUT_ALL_A2DP_SET.contains(device)
&& (flags & AudioManager.FLAG_BLUETOOTH_ABS_VOLUME) != 0) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "skip a2dp").record();
return;
}
@@ -1972,6 +1994,7 @@
}
if (mAppOps.noteOp(STREAM_VOLUME_OPS[streamTypeAlias], uid, callingPackage)
!= AppOpsManager.MODE_ALLOWED) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "mode not allowed").record();
return;
}
@@ -2036,7 +2059,7 @@
if (adjustVolume && (direction != AudioManager.ADJUST_SAME)) {
mAudioHandler.removeMessages(MSG_UNMUTE_STREAM);
- if (isMuteAdjust) {
+ if (isMuteAdjust && !mFullVolumeDevices.contains(device)) {
boolean state;
if (direction == AudioManager.ADJUST_TOGGLE_MUTE) {
state = !streamState.mIsMuted;
@@ -2083,6 +2106,15 @@
0,
streamState,
0);
+
+ mmi.putInt("device", device)
+ .putInt("streamType2", streamState.mStreamType)
+ .putInt("isMuted", streamState.mIsMuted ? 1 : 0)
+ .putInt("indexMin", streamState.mIndexMin)
+ .putInt("indexMax", streamState.mIndexMax)
+ .putInt("observedDevices", streamState.mObservedDevices)
+ .putInt("flags2", flags)
+ .putInt("streamTypeAlias", streamTypeAlias);
}
int newIndex = mStreamStates[streamType].getIndex(device);
@@ -2096,6 +2128,7 @@
+ newIndex + "stream=" + streamType);
}
mDeviceBroker.postSetAvrcpAbsoluteVolumeIndex(newIndex / 10);
+ mmi.putInt("postSetAvrcpAbsoluteVolumeIndex", newIndex / 10);
}
// Check if volume update should be send to Hearing Aid
@@ -2141,6 +2174,7 @@
try {
mHdmiPlaybackClient.sendVolumeKeyEvent(keyCode, true);
mHdmiPlaybackClient.sendVolumeKeyEvent(keyCode, false);
+ mmi.putInt("HDMI.sendVolumeKeyEvent", keyCode);
} finally {
Binder.restoreCallingIdentity(ident);
}
@@ -2154,6 +2188,7 @@
}
}
}
+ mmi.record();
int index = mStreamStates[streamType].getIndex(device);
sendVolumeUpdate(streamType, oldIndex, index, flags, device);
}
@@ -2785,6 +2820,14 @@
}
}
mVolumeController.postVolumeChanged(streamType, flags);
+
+ new MediaMetrics.Item(mAnalyticsId + "sendVolumeUpdate")
+ .putInt("streamType", streamType)
+ .putInt("oldIndex", oldIndex)
+ .putInt("index", index)
+ .putInt("flags", flags)
+ .putInt("device", device)
+ .record();
}
// If Hdmi-CEC system audio mode is on and we are a TV panel, never show volume bar.
@@ -2826,12 +2869,21 @@
int device,
boolean force,
String caller) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "setStreamVolumeInt")
+ .putInt("streamType", streamType)
+ .putInt("index", index)
+ .putInt("device", device)
+ .putInt("force", force ? 1 : 0)
+ .putString("caller", caller);
+
if (mFullVolumeDevices.contains(device)) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "mFullVolumeDevices");
return;
}
VolumeStreamState streamState = mStreamStates[streamType];
if (streamState.setIndex(index, device, caller) || force) {
+ mmi.putInt("sendMsg", 1);
// Post message to set system volume (it in turn will post a message
// to persist).
sendMsg(mAudioHandler,
@@ -2842,6 +2894,7 @@
streamState,
0);
}
+ mmi.record();
}
private void setSystemAudioMute(boolean state) {
@@ -3076,22 +3129,34 @@
if (uid == android.os.Process.SYSTEM_UID) {
uid = UserHandle.getUid(userId, UserHandle.getAppId(uid));
}
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "setMicrophoneMute")
+ .setUid(uid)
+ .putInt("userId", userId)
+ .putString("callingPackage", callingPackage);
+
// If OP_MUTE_MICROPHONE is set, disallow unmuting.
if (!on && mAppOps.noteOp(AppOpsManager.OP_MUTE_MICROPHONE, uid, callingPackage)
!= AppOpsManager.MODE_ALLOWED) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "disallow unmuting").record();
return;
}
if (!checkAudioSettingsPermission("setMicrophoneMute()")) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "!checkAudioSettingsPermission").record();
return;
}
if (userId != UserHandle.getCallingUserId() &&
mContext.checkCallingOrSelfPermission(
android.Manifest.permission.INTERACT_ACROSS_USERS_FULL)
!= PackageManager.PERMISSION_GRANTED) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "permission").record();
return;
}
mMicMuteFromApi = on;
+
setMicrophoneMuteNoCallerCheck(userId);
+
+ mmi.putInt("mMicMuteFromApi", mMicMuteFromApi ? 1 : 0)
+ .record();
}
/** @see AudioManager#setMicrophoneMuteFromSwitch(boolean) */
@@ -3102,6 +3167,10 @@
return;
}
mMicMuteFromSwitch = on;
+ new MediaMetrics.Item(mAnalyticsId + "setMicrophoneMuteFromSwitch")
+ .setUid(userId)
+ .putInt("mMicMuteFromSwitch", mMicMuteFromSwitch ? 1 : 0)
+ .record();
setMicrophoneMuteNoCallerCheck(userId);
}
@@ -3109,6 +3178,9 @@
InputManager im = mContext.getSystemService(InputManager.class);
final int isMicMuted = im.isMicMuted();
if (isMicMuted != InputManager.SWITCH_STATE_UNKNOWN) {
+ new MediaMetrics.Item(mAnalyticsId + "setMicMuteFromSwitchInput")
+ .putInt("isMicMuted", isMicMuted)
+ .record();
setMicrophoneMuteFromSwitch(im.isMicMuted() != InputManager.SWITCH_STATE_OFF);
}
}
@@ -3127,6 +3199,13 @@
final boolean currentMute = AudioSystem.isMicrophoneMuted();
final long identity = Binder.clearCallingIdentity();
AudioSystem.muteMicrophone(muted);
+
+ new MediaMetrics.Item(mAnalyticsId + "setMicrophoneMuteNoCallerCheck")
+ .setUid(userId)
+ .putInt("muted", muted ? 1 : 0)
+ .putInt("currentMute", currentMute ? 1 : 0)
+ .putLong("identity", identity)
+ .record();
try {
if (muted != currentMute) {
sendMsg(mAudioHandler, MSG_BROADCAST_MICROPHONE_MUTE,
@@ -3241,6 +3320,13 @@
synchronized (mSettingsLock) {
final int ringerModeInternal = getRingerModeInternal();
final int ringerModeExternal = getRingerModeExternal();
+ new MediaMetrics.Item(mAnalyticsId + "setRingerMode")
+ .putInt("ringerMode", ringerMode)
+ .putInt("external", external ? 1 : 0)
+ .putString("caller", caller)
+ .putInt("ringerModeInternal", ringerModeInternal)
+ .putInt("ringerModeExternal", ringerModeExternal)
+ .record();
if (external) {
setRingerModeExt(ringerMode);
if (mRingerModeDelegate != null) {
@@ -3725,6 +3811,10 @@
Log.w(TAG, "AudioService effectType value " + effectType + " out of range");
return;
}
+ new MediaMetrics.Item(mAnalyticsId + "playSoundEffectVolume")
+ .putInt("effectType", effectType)
+ .putDouble("volume", volume)
+ .record();
sendMsg(mAudioHandler, MSG_PLAY_SOUND_EFFECT, SENDMSG_QUEUE,
effectType, (int) (volume * 1000), null, 0);
@@ -3737,7 +3827,12 @@
public boolean loadSoundEffects() {
LoadSoundEffectReply reply = new LoadSoundEffectReply();
sendMsg(mAudioHandler, MSG_LOAD_SOUND_EFFECTS, SENDMSG_QUEUE, 0, 0, reply, 0);
- return reply.waitForLoaded(3 /*attempts*/);
+
+ boolean loaded = reply.waitForLoaded(3 /*attempts*/);
+ new MediaMetrics.Item(mAnalyticsId + "loadSoundEffects")
+ .putInt("loaded", loaded ? 1 : 0)
+ .record();
+ return loaded;
}
/**
@@ -3746,6 +3841,8 @@
*/
protected void scheduleLoadSoundEffects() {
sendMsg(mAudioHandler, MSG_LOAD_SOUND_EFFECTS, SENDMSG_QUEUE, 0, 0, null, 0);
+ new MediaMetrics.Item(mAnalyticsId + "scheduleLoadSoundEffects")
+ .record();
}
/**
@@ -3755,6 +3852,8 @@
*/
public void unloadSoundEffects() {
sendMsg(mAudioHandler, MSG_UNLOAD_SOUND_EFFECTS, SENDMSG_QUEUE, 0, 0, null, 0);
+ new MediaMetrics.Item(mAnalyticsId + "unloadSoundEffects")
+ .record();
}
/** @see AudioManager#reloadAudioSettings() */
@@ -3827,10 +3926,19 @@
}
// for logging only
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final String eventSource = new StringBuilder("setSpeakerphoneOn(").append(on)
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/")
+ .append(pid).toString();
final boolean stateChanged = mDeviceBroker.setSpeakerphoneOn(on, eventSource);
+ new MediaMetrics.Item(mAnalyticsId + "setSpeakerphoneOn")
+ .setUid(uid)
+ .setPid(pid)
+ .putInt("on", on ? 1 : 0)
+ .putInt("stateChanged", stateChanged ? 1 : 0)
+ .record();
+
if (stateChanged) {
final long ident = Binder.clearCallingIdentity();
try {
@@ -3861,9 +3969,17 @@
}
// for logging only
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final String eventSource = new StringBuilder("setBluetoothScoOn(").append(on)
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/").append(pid).toString();
+
+ //bt sco
+ new MediaMetrics.Item(mAnalyticsId + "setBluetoothScoOn")
+ .setUid(uid)
+ .setPid(pid)
+ .putInt("on", on ? 1 : 0)
+ .record();
mDeviceBroker.setBluetoothScoOn(on, eventSource);
}
@@ -3879,9 +3995,18 @@
/** @see AudioManager#setBluetoothA2dpOn(boolean) */
public void setBluetoothA2dpOn(boolean on) {
// for logging only
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final String eventSource = new StringBuilder("setBluetoothA2dpOn(").append(on)
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/")
+ .append(pid).toString();
+
+ new MediaMetrics.Item(mAnalyticsId + "setBluetoothA2dpOn")
+ .setUid(uid)
+ .setPid(pid)
+ .putInt("on", on ? 1 : 0)
+ .record();
+
mDeviceBroker.setBluetoothA2dpOn_Async(on, eventSource);
}
@@ -3892,31 +4017,52 @@
/** @see AudioManager#startBluetoothSco() */
public void startBluetoothSco(IBinder cb, int targetSdkVersion) {
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final int scoAudioMode =
(targetSdkVersion < Build.VERSION_CODES.JELLY_BEAN_MR2) ?
BtHelper.SCO_MODE_VIRTUAL_CALL : BtHelper.SCO_MODE_UNDEFINED;
final String eventSource = new StringBuilder("startBluetoothSco()")
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/")
+ .append(pid).toString();
+
+ new MediaMetrics.Item(mAnalyticsId + "startBluetoothSco")
+ .setUid(uid)
+ .setPid(pid)
+ .putInt("scoAudioMode", scoAudioMode)
+ .record();
startBluetoothScoInt(cb, scoAudioMode, eventSource);
+
}
/** @see AudioManager#startBluetoothScoVirtualCall() */
public void startBluetoothScoVirtualCall(IBinder cb) {
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final String eventSource = new StringBuilder("startBluetoothScoVirtualCall()")
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/")
+ .append(pid).toString();
+
+ new MediaMetrics.Item(mAnalyticsId + "startBluetoothScoVirtualCall")
+ .setUid(uid)
+ .setPid(pid)
+ .record();
startBluetoothScoInt(cb, BtHelper.SCO_MODE_VIRTUAL_CALL, eventSource);
}
void startBluetoothScoInt(IBinder cb, int scoAudioMode, @NonNull String eventSource) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "startBluetoothScoInt")
+ .putInt("scoAudioMode", scoAudioMode);
+
if (!checkAudioSettingsPermission("startBluetoothSco()") ||
!mSystemReady) {
+ mmi.putString(mAnalyticsPropEarlyReturn, "permission or systemReady").record();
return;
}
synchronized (mDeviceBroker.mSetModeLock) {
mDeviceBroker.startBluetoothScoForClient_Sync(cb, scoAudioMode, eventSource);
}
+ mmi.record();
}
/** @see AudioManager#stopBluetoothSco() */
@@ -3925,12 +4071,18 @@
!mSystemReady) {
return;
}
+ final int uid = Binder.getCallingUid();
+ final int pid = Binder.getCallingPid();
final String eventSource = new StringBuilder("stopBluetoothSco()")
- .append(") from u/pid:").append(Binder.getCallingUid()).append("/")
- .append(Binder.getCallingPid()).toString();
+ .append(") from u/pid:").append(uid).append("/")
+ .append(pid).toString();
synchronized (mDeviceBroker.mSetModeLock) {
mDeviceBroker.stopBluetoothScoForClient_Sync(cb, eventSource);
}
+ new MediaMetrics.Item(mAnalyticsId + "stopBluetoothSco")
+ .setUid(uid)
+ .setPid(pid)
+ .record();
}
@@ -4574,6 +4726,13 @@
&& state != CONNECTION_STATE_DISCONNECTED) {
throw new IllegalArgumentException("Invalid state " + state);
}
+ new MediaMetrics.Item(mAnalyticsId + "setWiredDeviceConnectionState")
+ .putInt("type", type)
+ .putInt("state", state)
+ .putString("address", address)
+ .putString("name", name)
+ .putString("caller", caller)
+ .record();
mDeviceBroker.setWiredDeviceConnectionState(type, state, address, name, caller);
}
@@ -6234,22 +6393,41 @@
Log.e(TAG, "Invalid null parameter to request audio focus");
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}
+ int uid = Binder.getCallingUid();
+ new MediaMetrics.Item(mAnalyticsId + "requestAudioFocus")
+ .setUid(uid)
+ .putInt("durationHint", durationHint)
+ .putString("clientId", clientId)
+ .putString("callingPackage", callingPackageName)
+ .putInt("flags", flags)
+ .putInt("sdk", sdk)
+ .record();
return mMediaFocusControl.requestAudioFocus(aa, durationHint, cb, fd,
clientId, callingPackageName, flags, sdk,
- forceFocusDuckingForAccessibility(aa, durationHint, Binder.getCallingUid()));
+ forceFocusDuckingForAccessibility(aa, durationHint, uid));
}
public int abandonAudioFocus(IAudioFocusDispatcher fd, String clientId, AudioAttributes aa,
String callingPackageName) {
+ MediaMetrics.Item mmi = new MediaMetrics.Item(mAnalyticsId + "abandonAudioFocus")
+ .putString("clientId", clientId)
+ .putString("callingPackage", callingPackageName);
+
if (aa != null && !isValidAudioAttributesUsage(aa)) {
Log.w(TAG, "Request using unsupported usage.");
+ mmi.putString(mAnalyticsPropEarlyReturn, "unsupported usage").record();
+
return AudioManager.AUDIOFOCUS_REQUEST_FAILED;
}
+ mmi.record();
return mMediaFocusControl.abandonAudioFocus(fd, clientId, aa, callingPackageName);
}
public void unregisterAudioFocusClient(String clientId) {
+ new MediaMetrics.Item(mAnalyticsId + "unregisterAudioFocusClient")
+ .putString("clientId", clientId)
+ .record();
mMediaFocusControl.unregisterAudioFocusClient(clientId);
}
@@ -6819,6 +6997,12 @@
}
}
+ /**
+ * Audio Analytics ids.
+ */
+ private static final String mAnalyticsId = "audio.service.";
+ private static final String mAnalyticsPropEarlyReturn = "earlyReturn";
+
private static String safeMediaVolumeStateToString(int state) {
switch(state) {
case SAFE_MEDIA_VOLUME_NOT_CONFIGURED: return "SAFE_MEDIA_VOLUME_NOT_CONFIGURED";
diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java
index add620e..5fdc3e4 100644
--- a/services/core/java/com/android/server/audio/AudioServiceEvents.java
+++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java
@@ -19,6 +19,7 @@
import android.media.AudioAttributes;
import android.media.AudioManager;
import android.media.AudioSystem;
+import android.media.MediaMetrics;
import com.android.server.audio.AudioDeviceInventory.WiredDeviceConnectionState;
@@ -108,6 +109,11 @@
final String mGroupName;
final AudioAttributes mAudioAttributes;
+ /**
+ * Audio Analytics unique Id.
+ */
+ private static final String mAnalyticsIdRoot = "audio.volumeEvent.";
+
/** used for VOL_ADJUST_VOL_UID,
* VOL_ADJUST_SUGG_VOL,
* VOL_ADJUST_STREAM_VOL,
@@ -120,6 +126,13 @@
mCaller = caller;
mGroupName = null;
mAudioAttributes = null;
+
+ new MediaMetrics.Item(mAnalyticsIdRoot + mStream)
+ .putInt("op", mOp)
+ .putInt("dir", mVal1)
+ .putInt("flags", mVal2)
+ .putString("from", mCaller)
+ .record();
}
/** used for VOL_SET_HEARING_AID_VOL*/
@@ -132,6 +145,12 @@
mCaller = null;
mGroupName = null;
mAudioAttributes = null;
+
+ new MediaMetrics.Item(mAnalyticsIdRoot + "HA")
+ .putInt("op", mOp)
+ .putInt("index", mVal1)
+ .putInt("gainDb", mVal2)
+ .record();
}
/** used for VOL_SET_AVRCP_VOL */
@@ -144,6 +163,11 @@
mCaller = null;
mGroupName = null;
mAudioAttributes = null;
+
+ new MediaMetrics.Item(mAnalyticsIdRoot + "AVRCP")
+ .putInt("op", mOp)
+ .putInt("index", mVal1)
+ .record();
}
/** used for VOL_VOICE_ACTIVITY_HEARING_AID */
@@ -156,6 +180,12 @@
mCaller = null;
mGroupName = null;
mAudioAttributes = null;
+
+ new MediaMetrics.Item(mAnalyticsIdRoot + mStream)
+ .putInt("op", mOp)
+ .putInt("index", mVal1)
+ .putInt("voiceActive", mVal2)
+ .record();
}
/** used for VOL_MODE_CHANGE_HEARING_AID */
@@ -179,6 +209,12 @@
mCaller = caller;
mGroupName = group;
mAudioAttributes = aa;
+
+ new MediaMetrics.Item(mAnalyticsIdRoot + mStream)
+ .putInt("op", mOp)
+ .putInt("index", mVal1)
+ .putInt("mode", mVal2)
+ .record();
}
@Override
diff --git a/services/core/java/com/android/server/biometrics/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
index 7bbda9f..19d83be 100644
--- a/services/core/java/com/android/server/biometrics/AuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
@@ -20,14 +20,12 @@
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.os.IBinder;
-import android.os.NativeHandle;
import android.os.RemoteException;
import android.security.KeyStore;
import android.util.Slog;
+import android.view.Surface;
-import java.io.IOException;
import java.util.ArrayList;
/**
@@ -44,7 +42,7 @@
public static final int LOCKOUT_PERMANENT = 2;
private final boolean mRequireConfirmation;
- private final NativeHandle mWindowId;
+ private final Surface mSurface;
// We need to track this state since it's possible for applications to request for
// authentication while the device is already locked out. In that case, the client is created
@@ -74,24 +72,12 @@
BiometricServiceBase.DaemonWrapper daemon, long halDeviceId, IBinder token,
BiometricServiceBase.ServiceListener listener, int targetUserId, int groupId, long opId,
boolean restricted, String owner, int cookie, boolean requireConfirmation,
- IBiometricNativeHandle windowId) {
+ Surface surface) {
super(context, constants, daemon, halDeviceId, token, listener, targetUserId, groupId,
restricted, owner, cookie);
mOpId = opId;
mRequireConfirmation = requireConfirmation;
- mWindowId = Utils.dupNativeHandle(windowId);
- }
-
- @Override
- public void destroy() {
- if (mWindowId != null && mWindowId.getFileDescriptors() != null) {
- try {
- mWindowId.close();
- } catch (IOException e) {
- Slog.e(getLogTag(), "Failed to close windowId NativeHandle: ", e);
- }
- }
- super.destroy();
+ mSurface = surface;
}
protected long getStartTimeMs() {
@@ -251,7 +237,7 @@
onStart();
try {
mStartTimeMs = System.currentTimeMillis();
- final int result = getDaemonWrapper().authenticate(mOpId, getGroupId(), mWindowId);
+ final int result = getDaemonWrapper().authenticate(mOpId, getGroupId(), mSurface);
if (result != 0) {
Slog.w(getLogTag(), "startAuthentication failed, result=" + result);
mMetricsLogger.histogram(mConstants.tagAuthStartError(), result);
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
index 49006de..4a5186b 100644
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
@@ -32,7 +32,6 @@
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.BiometricsProtoEnums;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricService;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
@@ -44,7 +43,6 @@
import android.os.IBinder;
import android.os.IHwBinder;
import android.os.IRemoteCallback;
-import android.os.NativeHandle;
import android.os.PowerManager;
import android.os.Process;
import android.os.RemoteException;
@@ -53,6 +51,7 @@
import android.os.UserHandle;
import android.os.UserManager;
import android.util.Slog;
+import android.view.Surface;
import com.android.internal.logging.MetricsLogger;
import com.android.internal.statusbar.IStatusBarService;
@@ -224,9 +223,9 @@
public AuthenticationClientImpl(Context context, DaemonWrapper daemon, long halDeviceId,
IBinder token, ServiceListener listener, int targetUserId, int groupId, long opId,
boolean restricted, String owner, int cookie, boolean requireConfirmation,
- IBiometricNativeHandle windowId) {
+ Surface surface) {
super(context, getConstants(), daemon, halDeviceId, token, listener, targetUserId,
- groupId, opId, restricted, owner, cookie, requireConfirmation, windowId);
+ groupId, opId, restricted, owner, cookie, requireConfirmation, surface);
}
@Override
@@ -287,10 +286,10 @@
public EnrollClientImpl(Context context, DaemonWrapper daemon, long halDeviceId,
IBinder token, ServiceListener listener, int userId, int groupId,
byte[] cryptoToken, boolean restricted, String owner,
- final int[] disabledFeatures, int timeoutSec, IBiometricNativeHandle windowId) {
+ final int[] disabledFeatures, int timeoutSec, Surface surface) {
super(context, getConstants(), daemon, halDeviceId, token, listener,
userId, groupId, cryptoToken, restricted, owner, getBiometricUtils(),
- disabledFeatures, timeoutSec, windowId);
+ disabledFeatures, timeoutSec, surface);
}
@Override
@@ -476,13 +475,13 @@
*/
protected interface DaemonWrapper {
int ERROR_ESRCH = 3; // Likely HAL is dead. see errno.h.
- int authenticate(long operationId, int groupId, NativeHandle windowId)
+ int authenticate(long operationId, int groupId, Surface surface)
throws RemoteException;
int cancel() throws RemoteException;
int remove(int groupId, int biometricId) throws RemoteException;
int enumerate() throws RemoteException;
int enroll(byte[] token, int groupId, int timeout,
- ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException;
+ ArrayList<Integer> disabledFeatures, Surface surface) throws RemoteException;
void resetLockout(byte[] token) throws RemoteException;
}
diff --git a/services/core/java/com/android/server/biometrics/EnrollClient.java b/services/core/java/com/android/server/biometrics/EnrollClient.java
index 684795e..3f43032 100644
--- a/services/core/java/com/android/server/biometrics/EnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/EnrollClient.java
@@ -20,13 +20,11 @@
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.os.IBinder;
-import android.os.NativeHandle;
import android.os.RemoteException;
import android.util.Slog;
+import android.view.Surface;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.Arrays;
@@ -38,7 +36,7 @@
private final BiometricUtils mBiometricUtils;
private final int[] mDisabledFeatures;
private final int mTimeoutSec;
- private final NativeHandle mWindowId;
+ private final Surface mSurface;
private long mEnrollmentStartTimeMs;
@@ -48,26 +46,14 @@
BiometricServiceBase.DaemonWrapper daemon, long halDeviceId, IBinder token,
BiometricServiceBase.ServiceListener listener, int userId, int groupId,
byte[] cryptoToken, boolean restricted, String owner, BiometricUtils utils,
- final int[] disabledFeatures, int timeoutSec, IBiometricNativeHandle windowId) {
+ final int[] disabledFeatures, int timeoutSec, Surface surface) {
super(context, constants, daemon, halDeviceId, token, listener, userId, groupId, restricted,
owner, 0 /* cookie */);
mBiometricUtils = utils;
mCryptoToken = Arrays.copyOf(cryptoToken, cryptoToken.length);
mDisabledFeatures = Arrays.copyOf(disabledFeatures, disabledFeatures.length);
mTimeoutSec = timeoutSec;
- mWindowId = Utils.dupNativeHandle(windowId);
- }
-
- @Override
- public void destroy() {
- if (mWindowId != null && mWindowId.getFileDescriptors() != null) {
- try {
- mWindowId.close();
- } catch (IOException e) {
- Slog.e(getLogTag(), "Failed to close windowId NativeHandle: ", e);
- }
- }
- super.destroy();
+ mSurface = surface;
}
@Override
@@ -119,7 +105,7 @@
}
final int result = getDaemonWrapper().enroll(mCryptoToken, getGroupId(), mTimeoutSec,
- disabledFeatures, mWindowId);
+ disabledFeatures, mSurface);
if (result != 0) {
Slog.w(getLogTag(), "startEnroll failed, result=" + result);
mMetricsLogger.histogram(mConstants.tagEnrollStartError(), result);
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index 3235499..14378da 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -23,17 +23,12 @@
import android.hardware.biometrics.BiometricManager;
import android.hardware.biometrics.BiometricPrompt;
import android.hardware.biometrics.BiometricPrompt.AuthenticationResultType;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.os.Build;
import android.os.Bundle;
-import android.os.NativeHandle;
import android.os.UserHandle;
import android.provider.Settings;
import android.util.Slog;
-import java.io.FileDescriptor;
-import java.io.IOException;
-
public class Utils {
public static boolean isDebugEnabled(Context context, int targetUserId) {
if (targetUserId == UserHandle.USER_NULL) {
@@ -261,31 +256,4 @@
throw new IllegalArgumentException("Unsupported dismissal reason: " + reason);
}
}
-
- /**
- * Converts an {@link IBiometricNativeHandle} to a {@link NativeHandle} by duplicating the
- * the underlying file descriptors.
- *
- * Both the original and new handle must be closed after use.
- *
- * @param h {@link IBiometricNativeHandle} received as a binder call argument. Usually used to
- * identify a WindowManager window. Can be null.
- * @return A {@link NativeHandle} representation of {@code h}. Will be null if either {@code h}
- * or its contents are null.
- */
- public static NativeHandle dupNativeHandle(IBiometricNativeHandle h) {
- NativeHandle handle = null;
- if (h != null && h.fds != null && h.ints != null) {
- FileDescriptor[] fds = new FileDescriptor[h.fds.length];
- for (int i = 0; i < h.fds.length; ++i) {
- try {
- fds[i] = h.fds[i].dup().getFileDescriptor();
- } catch (IOException e) {
- return null;
- }
- }
- handle = new NativeHandle(fds, h.ints, true /* own */);
- }
- return handle;
- }
}
diff --git a/services/core/java/com/android/server/biometrics/face/FaceService.java b/services/core/java/com/android/server/biometrics/face/FaceService.java
index f222f39..467e7f1 100644
--- a/services/core/java/com/android/server/biometrics/face/FaceService.java
+++ b/services/core/java/com/android/server/biometrics/face/FaceService.java
@@ -34,7 +34,6 @@
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.face.V1_0.IBiometricsFace;
@@ -57,6 +56,7 @@
import android.os.UserManager;
import android.provider.Settings;
import android.util.Slog;
+import android.view.Surface;
import com.android.internal.R;
import com.android.internal.annotations.GuardedBy;
@@ -216,9 +216,9 @@
DaemonWrapper daemon, long halDeviceId, IBinder token,
ServiceListener listener, int targetUserId, int groupId, long opId,
boolean restricted, String owner, int cookie, boolean requireConfirmation,
- IBiometricNativeHandle windowId) {
+ Surface surface) {
super(context, daemon, halDeviceId, token, listener, targetUserId, groupId, opId,
- restricted, owner, cookie, requireConfirmation, windowId);
+ restricted, owner, cookie, requireConfirmation, surface);
}
@Override
@@ -375,7 +375,7 @@
@Override // Binder call
public void enroll(int userId, final IBinder token, final byte[] cryptoToken,
final IFaceServiceReceiver receiver, final String opPackageName,
- final int[] disabledFeatures, IBiometricNativeHandle windowId) {
+ final int[] disabledFeatures, Surface surface) {
checkPermission(MANAGE_BIOMETRIC);
updateActiveGroup(userId, opPackageName);
@@ -386,7 +386,7 @@
final EnrollClientImpl client = new EnrollClientImpl(getContext(), mDaemonWrapper,
mHalDeviceId, token, new ServiceListenerImpl(receiver), mCurrentUserId,
0 /* groupId */, cryptoToken, restricted, opPackageName, disabledFeatures,
- ENROLL_TIMEOUT_SEC, windowId) {
+ ENROLL_TIMEOUT_SEC, surface) {
@Override
public int[] getAcquireIgnorelist() {
@@ -436,7 +436,7 @@
final AuthenticationClientImpl client = new FaceAuthClient(getContext(),
mDaemonWrapper, mHalDeviceId, token, new ServiceListenerImpl(receiver),
mCurrentUserId, 0 /* groupId */, opId, restricted, opPackageName,
- 0 /* cookie */, false /* requireConfirmation */, null /* windowId */);
+ 0 /* cookie */, false /* requireConfirmation */, null /* surface */);
authenticateInternal(client, opId, opPackageName);
}
@@ -452,7 +452,7 @@
mDaemonWrapper, mHalDeviceId, token,
new BiometricPromptServiceListenerImpl(wrapperReceiver),
mCurrentUserId, 0 /* groupId */, opId, restricted, opPackageName, cookie,
- requireConfirmation, null /* windowId */);
+ requireConfirmation, null /* surface */);
authenticateInternal(client, opId, opPackageName, callingUid, callingPid,
callingUserId);
}
@@ -986,7 +986,7 @@
*/
private final DaemonWrapper mDaemonWrapper = new DaemonWrapper() {
@Override
- public int authenticate(long operationId, int groupId, NativeHandle windowId)
+ public int authenticate(long operationId, int groupId, Surface surface)
throws RemoteException {
IBiometricsFace daemon = getFaceDaemon();
if (daemon == null) {
@@ -1028,7 +1028,7 @@
@Override
public int enroll(byte[] cryptoToken, int groupId, int timeout,
- ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException {
+ ArrayList<Integer> disabledFeatures, Surface surface) throws RemoteException {
IBiometricsFace daemon = getFaceDaemon();
if (daemon == null) {
Slog.w(TAG, "enroll(): no face HAL!");
@@ -1042,11 +1042,12 @@
android.hardware.biometrics.face.V1_1.IBiometricsFace.castFrom(
daemon);
if (daemon11 != null) {
- return daemon11.enroll_1_1(token, timeout, disabledFeatures, windowId);
- } else if (windowId == null) {
+ return daemon11.enroll_1_1(token, timeout, disabledFeatures,
+ convertSurfaceToNativeHandle(surface));
+ } else if (surface == null) {
return daemon.enroll(token, timeout, disabledFeatures);
} else {
- Slog.e(TAG, "enroll(): windowId is only supported in @1.1 HAL");
+ Slog.e(TAG, "enroll(): surface is only supported in @1.1 HAL");
return ERROR_ESRCH;
}
}
@@ -1323,6 +1324,8 @@
return 0;
}
+ private native NativeHandle convertSurfaceToNativeHandle(Surface surface);
+
private void dumpInternal(PrintWriter pw) {
JSONObject dump = new JSONObject();
try {
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
index 5bbeef1..3eac5a2 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
@@ -38,7 +38,7 @@
String opPackageName, int cookie, int callingUid, int callingPid, int callingUserId)
throws RemoteException {
mFingerprintService.prepareForAuthentication(token, sessionId, userId, wrapperReceiver,
- opPackageName, cookie, callingUid, callingPid, callingUserId, null /* windowId */);
+ opPackageName, cookie, callingUid, callingPid, callingUserId, null /* surface */);
}
@Override
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 4d55450..0aff504 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -38,7 +38,6 @@
import android.hardware.biometrics.BiometricAuthenticator;
import android.hardware.biometrics.BiometricConstants;
import android.hardware.biometrics.BiometricsProtoEnums;
-import android.hardware.biometrics.IBiometricNativeHandle;
import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
import android.hardware.biometrics.IBiometricServiceReceiverInternal;
import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
@@ -62,6 +61,7 @@
import android.util.SparseBooleanArray;
import android.util.SparseIntArray;
import android.util.proto.ProtoOutputStream;
+import android.view.Surface;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.logging.MetricsLogger;
@@ -135,9 +135,9 @@
DaemonWrapper daemon, long halDeviceId, IBinder token,
ServiceListener listener, int targetUserId, int groupId, long opId,
boolean restricted, String owner, int cookie,
- boolean requireConfirmation, IBiometricNativeHandle windowId) {
+ boolean requireConfirmation, Surface surface) {
super(context, daemon, halDeviceId, token, listener, targetUserId, groupId, opId,
- restricted, owner, cookie, requireConfirmation, windowId);
+ restricted, owner, cookie, requireConfirmation, surface);
}
@Override
@@ -201,7 +201,7 @@
@Override // Binder call
public void enroll(final IBinder token, final byte[] cryptoToken, final int userId,
final IFingerprintServiceReceiver receiver, final int flags,
- final String opPackageName, IBiometricNativeHandle windowId) {
+ final String opPackageName, Surface surface) {
checkPermission(MANAGE_FINGERPRINT);
final boolean restricted = isRestricted();
@@ -209,7 +209,7 @@
final EnrollClientImpl client = new EnrollClientImpl(getContext(), mDaemonWrapper,
mHalDeviceId, token, new ServiceListenerImpl(receiver), mCurrentUserId, groupId,
cryptoToken, restricted, opPackageName, new int[0] /* disabledFeatures */,
- ENROLL_TIMEOUT_SEC, windowId) {
+ ENROLL_TIMEOUT_SEC, surface) {
@Override
public boolean shouldVibrate() {
return true;
@@ -233,14 +233,14 @@
@Override // Binder call
public void authenticate(final IBinder token, final long opId, final int groupId,
final IFingerprintServiceReceiver receiver, final int flags,
- final String opPackageName, IBiometricNativeHandle windowId) {
+ final String opPackageName, Surface surface) {
updateActiveGroup(groupId, opPackageName);
final boolean restricted = isRestricted();
final AuthenticationClientImpl client = new FingerprintAuthClient(getContext(),
mDaemonWrapper, mHalDeviceId, token, new ServiceListenerImpl(receiver),
mCurrentUserId, groupId, opId, restricted, opPackageName,
0 /* cookie */, false /* requireConfirmation */,
- windowId);
+ surface);
authenticateInternal(client, opId, opPackageName);
}
@@ -248,7 +248,7 @@
public void prepareForAuthentication(IBinder token, long opId, int groupId,
IBiometricServiceReceiverInternal wrapperReceiver, String opPackageName,
int cookie, int callingUid, int callingPid, int callingUserId,
- IBiometricNativeHandle windowId) {
+ Surface surface) {
checkPermission(MANAGE_BIOMETRIC);
updateActiveGroup(groupId, opPackageName);
final boolean restricted = true; // BiometricPrompt is always restricted
@@ -257,7 +257,7 @@
new BiometricPromptServiceListenerImpl(wrapperReceiver),
mCurrentUserId, groupId, opId, restricted, opPackageName, cookie,
false /* requireConfirmation */,
- windowId);
+ surface);
authenticateInternal(client, opId, opPackageName, callingUid, callingPid,
callingUserId);
}
@@ -656,7 +656,7 @@
*/
private final DaemonWrapper mDaemonWrapper = new DaemonWrapper() {
@Override
- public int authenticate(long operationId, int groupId, NativeHandle windowId)
+ public int authenticate(long operationId, int groupId, Surface surface)
throws RemoteException {
IBiometricsFingerprint daemon = getFingerprintDaemon();
if (daemon == null) {
@@ -667,11 +667,12 @@
android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprint.castFrom(
daemon);
if (daemon22 != null) {
- return daemon22.authenticate_2_2(operationId, groupId, windowId);
- } else if (windowId == null) {
+ return daemon22.authenticate_2_2(operationId, groupId,
+ convertSurfaceToNativeHandle(surface));
+ } else if (surface == null) {
return daemon.authenticate(operationId, groupId);
} else {
- Slog.e(TAG, "authenticate(): windowId is only supported in @2.2 HAL");
+ Slog.e(TAG, "authenticate(): surface is only supported in @2.2 HAL");
return ERROR_ESRCH;
}
}
@@ -708,7 +709,7 @@
@Override
public int enroll(byte[] cryptoToken, int groupId, int timeout,
- ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException {
+ ArrayList<Integer> disabledFeatures, Surface surface) throws RemoteException {
IBiometricsFingerprint daemon = getFingerprintDaemon();
if (daemon == null) {
Slog.w(TAG, "enroll(): no fingerprint HAL!");
@@ -722,11 +723,12 @@
for (byte b : cryptoToken) {
cryptoTokenAsList.add(b);
}
- return daemon22.enroll_2_2(cryptoTokenAsList, groupId, timeout, windowId);
- } else if (windowId == null) {
+ return daemon22.enroll_2_2(cryptoTokenAsList, groupId, timeout,
+ convertSurfaceToNativeHandle(surface));
+ } else if (surface == null) {
return daemon.enroll(cryptoToken, groupId, timeout);
} else {
- Slog.e(TAG, "enroll(): windowId is only supported in @2.2 HAL");
+ Slog.e(TAG, "enroll(): surface is only supported in @2.2 HAL");
return ERROR_ESRCH;
}
}
@@ -1029,6 +1031,8 @@
PendingIntent.FLAG_UPDATE_CURRENT);
}
+ private native NativeHandle convertSurfaceToNativeHandle(Surface surface);
+
private void dumpInternal(PrintWriter pw) {
JSONObject dump = new JSONObject();
try {
diff --git a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
index 04c792a..d548871 100644
--- a/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
+++ b/services/core/java/com/android/server/connectivity/MultipathPolicyTracker.java
@@ -25,6 +25,7 @@
import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
import static android.net.NetworkPolicy.LIMIT_DISABLED;
import static android.net.NetworkPolicy.WARNING_DISABLED;
+import static android.net.NetworkTemplate.NETWORK_TYPE_ALL;
import static android.provider.Settings.Global.NETWORK_DEFAULT_DAILY_MULTIPATH_QUOTA_BYTES;
import static android.telephony.SubscriptionManager.INVALID_SUBSCRIPTION_ID;
@@ -220,7 +221,7 @@
mNetworkTemplate = new NetworkTemplate(
NetworkTemplate.MATCH_MOBILE, subscriberId, new String[] { subscriberId },
null, NetworkStats.METERED_ALL, NetworkStats.ROAMING_ALL,
- NetworkStats.DEFAULT_NETWORK_NO);
+ NetworkStats.DEFAULT_NETWORK_NO, NETWORK_TYPE_ALL);
mUsageCallback = new UsageCallback() {
@Override
public void onThresholdReached(int networkType, String subscriberId) {
diff --git a/services/core/java/com/android/server/hdmi/TEST_MAPPING b/services/core/java/com/android/server/hdmi/TEST_MAPPING
index 7245ec4..275f13c 100644
--- a/services/core/java/com/android/server/hdmi/TEST_MAPPING
+++ b/services/core/java/com/android/server/hdmi/TEST_MAPPING
@@ -1,5 +1,5 @@
{
- "presubmit": [
+ "postsubmit": [
{
"name": "FrameworksServicesTests",
"options": [
@@ -31,4 +31,4 @@
]
}
]
-}
+}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/location/AbstractLocationProvider.java b/services/core/java/com/android/server/location/AbstractLocationProvider.java
index e9d94a5..d45ab56 100644
--- a/services/core/java/com/android/server/location/AbstractLocationProvider.java
+++ b/services/core/java/com/android/server/location/AbstractLocationProvider.java
@@ -19,21 +19,18 @@
import static com.android.internal.util.function.pooled.PooledLambda.obtainRunnable;
import android.annotation.Nullable;
-import android.content.Context;
import android.location.Location;
+import android.location.util.identity.CallerIdentity;
import android.os.Binder;
import android.os.Bundle;
-import android.util.ArraySet;
import com.android.internal.location.ProviderProperties;
import com.android.internal.location.ProviderRequest;
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.Collections;
import java.util.List;
import java.util.Objects;
-import java.util.Set;
import java.util.concurrent.Executor;
import java.util.concurrent.atomic.AtomicReference;
import java.util.function.UnaryOperator;
@@ -78,8 +75,7 @@
* Default state value for a location provider that is disabled with no properties and an
* empty provider package list.
*/
- public static final State EMPTY_STATE = new State(false, null,
- Collections.emptySet());
+ public static final State EMPTY_STATE = new State(false, null, null);
/**
* The provider's allowed state.
@@ -92,39 +88,37 @@
@Nullable public final ProviderProperties properties;
/**
- * The provider's package name list - provider packages may be afforded special privileges.
+ * The provider's identity - providers may be afforded special privileges.
*/
- public final Set<String> providerPackageNames;
+ @Nullable public final CallerIdentity identity;
- private State(boolean allowed, ProviderProperties properties,
- Set<String> providerPackageNames) {
+ private State(boolean allowed, ProviderProperties properties, CallerIdentity identity) {
this.allowed = allowed;
this.properties = properties;
- this.providerPackageNames = Objects.requireNonNull(providerPackageNames);
+ this.identity = identity;
}
- private State withAllowed(boolean allowed) {
+ State withAllowed(boolean allowed) {
if (allowed == this.allowed) {
return this;
} else {
- return new State(allowed, properties, providerPackageNames);
+ return new State(allowed, properties, identity);
}
}
- private State withProperties(ProviderProperties properties) {
- if (properties.equals(this.properties)) {
+ State withProperties(@Nullable ProviderProperties properties) {
+ if (Objects.equals(properties, this.properties)) {
return this;
} else {
- return new State(allowed, properties, providerPackageNames);
+ return new State(allowed, properties, identity);
}
}
- private State withProviderPackageNames(Set<String> providerPackageNames) {
- if (providerPackageNames.equals(this.providerPackageNames)) {
+ State withIdentity(@Nullable CallerIdentity identity) {
+ if (Objects.equals(identity, this.identity)) {
return this;
} else {
- return new State(allowed, properties,
- Collections.unmodifiableSet(new ArraySet<>(providerPackageNames)));
+ return new State(allowed, properties, identity);
}
}
@@ -138,12 +132,12 @@
}
State state = (State) o;
return allowed == state.allowed && properties == state.properties
- && providerPackageNames.equals(state.providerPackageNames);
+ && Objects.equals(identity, state.identity);
}
@Override
public int hashCode() {
- return Objects.hash(allowed, properties, providerPackageNames);
+ return Objects.hash(allowed, properties, identity);
}
}
@@ -153,12 +147,12 @@
@Nullable public final Listener listener;
public final State state;
- private InternalState(@Nullable Listener listener, State state) {
+ InternalState(@Nullable Listener listener, State state) {
this.listener = listener;
this.state = state;
}
- private InternalState withListener(Listener listener) {
+ InternalState withListener(Listener listener) {
if (listener == this.listener) {
return this;
} else {
@@ -166,7 +160,7 @@
}
}
- private InternalState withState(State state) {
+ InternalState withState(State state) {
if (state.equals(this.state)) {
return this;
} else {
@@ -174,7 +168,7 @@
}
}
- private InternalState withState(UnaryOperator<State> operator) {
+ InternalState withState(UnaryOperator<State> operator) {
return withState(operator.apply(state));
}
}
@@ -187,14 +181,17 @@
// before it was set, and should not miss any updates that occur after it was set).
private final AtomicReference<InternalState> mInternalState;
- protected AbstractLocationProvider(Executor executor, Context context) {
- this(executor, Collections.singleton(context.getPackageName()));
- }
- protected AbstractLocationProvider(Executor executor, Set<String> packageNames) {
+ protected AbstractLocationProvider(Executor executor) {
mExecutor = executor;
mInternalState = new AtomicReference<>(
- new InternalState(null, State.EMPTY_STATE.withProviderPackageNames(packageNames)));
+ new InternalState(null, State.EMPTY_STATE));
+ }
+
+ protected AbstractLocationProvider(Executor executor, CallerIdentity identity) {
+ mExecutor = executor;
+ mInternalState = new AtomicReference<>(
+ new InternalState(null, State.EMPTY_STATE.withIdentity(identity)));
}
/**
@@ -275,10 +272,11 @@
}
/**
- * The current package set of this provider.
+ * The current identity of this provider.
*/
- protected Set<String> getProviderPackages() {
- return mInternalState.get().state.providerPackageNames;
+ @Nullable
+ protected CallerIdentity getIdentity() {
+ return mInternalState.get().state.identity;
}
/**
@@ -298,8 +296,8 @@
/**
* Call this method to report a change in provider packages.
*/
- protected void setPackageNames(Set<String> packageNames) {
- setState(state -> state.withProviderPackageNames(packageNames));
+ protected void setIdentity(CallerIdentity identity) {
+ setState(state -> state.withIdentity(identity));
}
/**
diff --git a/services/core/java/com/android/server/location/AppForegroundHelper.java b/services/core/java/com/android/server/location/AppForegroundHelper.java
index 8ddfc65..ac77e84 100644
--- a/services/core/java/com/android/server/location/AppForegroundHelper.java
+++ b/services/core/java/com/android/server/location/AppForegroundHelper.java
@@ -106,24 +106,13 @@
* Whether the given uid is currently foreground.
*/
public boolean isAppForeground(int uid) {
- return isForeground(getImportance(uid));
- }
-
- /**
- * Retrieves the current importance of the given uid.
- *
- * @deprecated Prefer {@link #isAppForeground(int)}.
- */
- @Deprecated
- @Importance
- public int getImportance(int uid) {
synchronized (this) {
Preconditions.checkState(mActivityManager != null);
}
long identity = Binder.clearCallingIdentity();
try {
- return mActivityManager.getUidImportance(uid);
+ return isForeground(mActivityManager.getUidImportance(uid));
} finally {
Binder.restoreCallingIdentity(identity);
}
diff --git a/services/core/java/com/android/server/location/AppOpsHelper.java b/services/core/java/com/android/server/location/AppOpsHelper.java
new file mode 100644
index 0000000..a075efc
--- /dev/null
+++ b/services/core/java/com/android/server/location/AppOpsHelper.java
@@ -0,0 +1,254 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location;
+
+import static android.app.AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION;
+import static android.app.AppOpsManager.OP_MONITOR_LOCATION;
+
+import static com.android.server.location.LocationManagerService.D;
+import static com.android.server.location.LocationManagerService.TAG;
+
+import android.annotation.Nullable;
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.location.util.identity.CallerIdentity;
+import android.os.Binder;
+import android.util.Log;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.Preconditions;
+import com.android.internal.util.function.pooled.PooledLambda;
+import com.android.server.FgThread;
+
+import java.util.Objects;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * Provides helpers and listeners for appops.
+ */
+public class AppOpsHelper {
+
+ /**
+ * Listener for current user changes.
+ */
+ public interface LocationAppOpListener {
+
+ /**
+ * Called when something has changed about a location appop for the given package.
+ */
+ void onAppOpsChanged(String packageName);
+ }
+
+ private final Context mContext;
+ private final CopyOnWriteArrayList<LocationAppOpListener> mListeners;
+
+ @GuardedBy("this")
+ @Nullable
+ private AppOpsManager mAppOps;
+
+ public AppOpsHelper(Context context) {
+ mContext = context;
+ mListeners = new CopyOnWriteArrayList<>();
+ }
+
+ /** Called when system is ready. */
+ public synchronized void onSystemReady() {
+ if (mAppOps != null) {
+ return;
+ }
+
+ mAppOps = Objects.requireNonNull(mContext.getSystemService(AppOpsManager.class));
+ mAppOps.startWatchingMode(
+ AppOpsManager.OP_COARSE_LOCATION,
+ null,
+ AppOpsManager.WATCH_FOREGROUND_CHANGES,
+ new AppOpsManager.OnOpChangedInternalListener() {
+ public void onOpChanged(int op, String packageName) {
+ // invoked on ui thread, move to fg thread so ui thread isn't blocked
+ FgThread.getHandler().sendMessage(
+ PooledLambda.obtainMessage(AppOpsHelper::onAppOpChanged,
+ AppOpsHelper.this, packageName));
+ }
+ });
+ }
+
+ void onAppOpChanged(String packageName) {
+ if (D) {
+ Log.v(TAG, "location appop changed for " + packageName);
+ }
+
+ for (LocationAppOpListener listener : mListeners) {
+ listener.onAppOpsChanged(packageName);
+ }
+ }
+
+ /**
+ * Adds a listener for app ops events. Callbacks occur on an unspecified thread.
+ */
+ public void addListener(LocationAppOpListener listener) {
+ mListeners.add(listener);
+ }
+
+ /**
+ * Removes a listener for app ops events.
+ */
+ public void removeListener(LocationAppOpListener listener) {
+ mListeners.remove(listener);
+ }
+
+ /**
+ * Checks if the given identity may have locations delivered without noting that a location is
+ * being delivered. This is a looser guarantee than {@link #noteLocationAccess(CallerIdentity)},
+ * and this function does not validate package arguments and so should not be used with
+ * unvalidated arguments or before actually delivering locations.
+ *
+ * @see AppOpsManager#checkOpNoThrow(int, int, String)
+ */
+ public boolean checkLocationAccess(CallerIdentity callerIdentity) {
+ synchronized (this) {
+ Preconditions.checkState(mAppOps != null);
+ }
+
+ long identity = Binder.clearCallingIdentity();
+ try {
+ return mAppOps.checkOpNoThrow(
+ CallerIdentity.asAppOp(callerIdentity.permissionLevel),
+ callerIdentity.uid,
+ callerIdentity.packageName) == AppOpsManager.MODE_ALLOWED;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
+ * Notes location access to the given identity, ie, location delivery. This method should be
+ * called right before a location is delivered, and if it returns false, the location should not
+ * be delivered.
+ */
+ public boolean noteLocationAccess(CallerIdentity identity) {
+ return noteOpNoThrow(CallerIdentity.asAppOp(identity.permissionLevel), identity);
+ }
+
+ /**
+ * Notifies app ops that the given identity is using location at normal/low power levels. If
+ * this function returns false, do not later call
+ * {@link #stopLocationMonitoring(CallerIdentity)}.
+ */
+ public boolean startLocationMonitoring(CallerIdentity identity) {
+ return startLocationMonitoring(OP_MONITOR_LOCATION, identity);
+ }
+
+ /**
+ * Notifies app ops that the given identity is no longer using location at normal/low power
+ * levels.
+ */
+ public void stopLocationMonitoring(CallerIdentity identity) {
+ stopLocationMonitoring(OP_MONITOR_LOCATION, identity);
+ }
+
+ /**
+ * Notifies app ops that the given identity is using location at high levels. If this function
+ * returns false, do not later call {@link #stopLocationMonitoring(CallerIdentity)}.
+ */
+ public boolean startHighPowerLocationMonitoring(CallerIdentity identity) {
+ return startLocationMonitoring(OP_MONITOR_HIGH_POWER_LOCATION, identity);
+ }
+
+ /**
+ * Notifies app ops that the given identity is no longer using location at high power levels.
+ */
+ public void stopHighPowerLocationMonitoring(CallerIdentity identity) {
+ stopLocationMonitoring(OP_MONITOR_HIGH_POWER_LOCATION, identity);
+ }
+
+ /**
+ * Notes access to any mock location APIs. If this call returns false, access to the APIs should
+ * silently fail.
+ */
+ public boolean noteMockLocationAccess(CallerIdentity callerIdentity) {
+ synchronized (this) {
+ Preconditions.checkState(mAppOps != null);
+ }
+
+ long identity = Binder.clearCallingIdentity();
+ try {
+ // note that this is not the no throw version of noteOp, this call may throw exceptions
+ return mAppOps.noteOp(
+ AppOpsManager.OP_MOCK_LOCATION,
+ callerIdentity.uid,
+ callerIdentity.packageName,
+ callerIdentity.attributionTag,
+ null) == AppOpsManager.MODE_ALLOWED;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ private boolean startLocationMonitoring(int appOp, CallerIdentity callerIdentity) {
+ synchronized (this) {
+ Preconditions.checkState(mAppOps != null);
+ }
+
+ long identity = Binder.clearCallingIdentity();
+ try {
+ return mAppOps.startOpNoThrow(
+ appOp,
+ callerIdentity.uid,
+ callerIdentity.packageName,
+ false,
+ callerIdentity.attributionTag,
+ null) == AppOpsManager.MODE_ALLOWED;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ private void stopLocationMonitoring(int appOp, CallerIdentity callerIdentity) {
+ synchronized (this) {
+ Preconditions.checkState(mAppOps != null);
+ }
+
+ long identity = Binder.clearCallingIdentity();
+ try {
+ mAppOps.finishOp(
+ appOp,
+ callerIdentity.uid,
+ callerIdentity.packageName,
+ callerIdentity.attributionTag);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ private boolean noteOpNoThrow(int appOp, CallerIdentity callerIdentity) {
+ synchronized (this) {
+ Preconditions.checkState(mAppOps != null);
+ }
+
+ long identity = Binder.clearCallingIdentity();
+ try {
+ return mAppOps.noteOpNoThrow(
+ appOp,
+ callerIdentity.uid,
+ callerIdentity.packageName,
+ callerIdentity.attributionTag,
+ null) == AppOpsManager.MODE_ALLOWED;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/location/CallerIdentity.java b/services/core/java/com/android/server/location/CallerIdentity.java
deleted file mode 100644
index 75ba5b8..0000000
--- a/services/core/java/com/android/server/location/CallerIdentity.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.location;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-
-/**
- * Represents the calling process's uid, pid, and package name.
- */
-public class CallerIdentity {
- public final int mUid;
- public final int mPid;
- public final String mPackageName;
- public final @Nullable String mFeatureId;
- public final @NonNull String mListenerIdentifier;
-
- public CallerIdentity(int uid, int pid, String packageName, @Nullable String featureId,
- @NonNull String listenerIdentifier) {
- mUid = uid;
- mPid = pid;
- mPackageName = packageName;
- mFeatureId = featureId;
- mListenerIdentifier = listenerIdentifier;
- }
-}
diff --git a/services/core/java/com/android/server/location/GeocoderProxy.java b/services/core/java/com/android/server/location/GeocoderProxy.java
index 536f95a..a809aad 100644
--- a/services/core/java/com/android/server/location/GeocoderProxy.java
+++ b/services/core/java/com/android/server/location/GeocoderProxy.java
@@ -18,14 +18,16 @@
import android.annotation.Nullable;
import android.content.Context;
-import android.location.Address;
import android.location.GeocoderParams;
+import android.location.IGeocodeListener;
import android.location.IGeocodeProvider;
+import android.os.IBinder;
+import android.os.RemoteException;
import com.android.internal.os.BackgroundThread;
import com.android.server.ServiceWatcher;
-import java.util.List;
+import java.util.Collections;
/**
* Proxy for IGeocodeProvider implementations.
@@ -63,23 +65,53 @@
return mServiceWatcher.register();
}
- public String getFromLocation(double latitude, double longitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
- return mServiceWatcher.runOnBinderBlocking(binder -> {
- IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
- return provider.getFromLocation(latitude, longitude, maxResults, params, addrs);
- }, "Service not Available");
+ /**
+ * Geocodes stuff.
+ */
+ public void getFromLocation(double latitude, double longitude, int maxResults,
+ GeocoderParams params, IGeocodeListener listener) {
+ mServiceWatcher.runOnBinder(new ServiceWatcher.BinderRunner() {
+ @Override
+ public void run(IBinder binder) throws RemoteException {
+ IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
+ provider.getFromLocation(latitude, longitude, maxResults, params, listener);
+ }
+
+ @Override
+ public void onError() {
+ try {
+ listener.onResults("Service not Available", Collections.emptyList());
+ } catch (RemoteException e) {
+ // ignore
+ }
+ }
+ });
}
- public String getFromLocationName(String locationName,
+ /**
+ * Geocodes stuff.
+ */
+ public void getFromLocationName(String locationName,
double lowerLeftLatitude, double lowerLeftLongitude,
double upperRightLatitude, double upperRightLongitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
- return mServiceWatcher.runOnBinderBlocking(binder -> {
- IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
- return provider.getFromLocationName(locationName, lowerLeftLatitude,
- lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
- maxResults, params, addrs);
- }, "Service not Available");
+ GeocoderParams params, IGeocodeListener listener) {
+ mServiceWatcher.runOnBinder(new ServiceWatcher.BinderRunner() {
+ @Override
+ public void run(IBinder binder) throws RemoteException {
+ IGeocodeProvider provider = IGeocodeProvider.Stub.asInterface(binder);
+ provider.getFromLocationName(locationName, lowerLeftLatitude,
+ lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
+ maxResults, params, listener);
+ }
+
+ @Override
+ public void onError() {
+ try {
+ listener.onResults("Service not Available", Collections.emptyList());
+ } catch (RemoteException e) {
+ // ignore
+ }
+ }
+ });
}
}
diff --git a/services/core/java/com/android/server/location/GeofenceManager.java b/services/core/java/com/android/server/location/GeofenceManager.java
index 4e9c067..1cf9752 100644
--- a/services/core/java/com/android/server/location/GeofenceManager.java
+++ b/services/core/java/com/android/server/location/GeofenceManager.java
@@ -16,9 +16,6 @@
package com.android.server.location;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.ActivityManager;
import android.app.AppOpsManager;
import android.app.PendingIntent;
import android.content.Context;
@@ -28,6 +25,7 @@
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationRequest;
+import android.location.util.identity.CallerIdentity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
@@ -38,7 +36,6 @@
import android.util.Slog;
import com.android.server.FgThread;
-import com.android.server.LocationManagerService;
import com.android.server.PendingIntentUtils;
import java.io.PrintWriter;
@@ -125,16 +122,10 @@
}
public void addFence(LocationRequest request, Geofence geofence, PendingIntent intent,
- int allowedResolutionLevel, int uid, String packageName, @Nullable String featureId,
- @NonNull String listenerIdentifier) {
- if (D) {
- Slog.d(TAG, "addFence: request=" + request + ", geofence=" + geofence
- + ", intent=" + intent + ", uid=" + uid + ", packageName=" + packageName);
- }
-
+ CallerIdentity identity) {
GeofenceState state = new GeofenceState(geofence,
request.getExpirationRealtimeMs(SystemClock.elapsedRealtime()),
- allowedResolutionLevel, uid, packageName, featureId, listenerIdentifier, intent);
+ identity, intent);
synchronized (mLock) {
// first make sure it doesn't already exist
for (int i = mFences.size() - 1; i >= 0; i--) {
@@ -182,26 +173,14 @@
}
synchronized (mLock) {
- Iterator<GeofenceState> iter = mFences.iterator();
- while (iter.hasNext()) {
- GeofenceState state = iter.next();
- if (state.mPackageName.equals(packageName)) {
- iter.remove();
- }
- }
+ mFences.removeIf(state -> state.mIdentity.packageName.equals(packageName));
scheduleUpdateFencesLocked();
}
}
private void removeExpiredFencesLocked() {
long time = SystemClock.elapsedRealtime();
- Iterator<GeofenceState> iter = mFences.iterator();
- while (iter.hasNext()) {
- GeofenceState state = iter.next();
- if (state.mExpireAt < time) {
- iter.remove();
- }
- }
+ mFences.removeIf(state -> state.mExpireAt < time);
}
private void scheduleUpdateFencesLocked() {
@@ -266,24 +245,17 @@
double minFenceDistance = Double.MAX_VALUE;
boolean needUpdates = false;
for (GeofenceState state : mFences) {
- if (mSettingsStore.isLocationPackageBlacklisted(ActivityManager.getCurrentUser(),
- state.mPackageName)) {
- if (D) {
- Slog.d(TAG, "skipping geofence processing for blacklisted app: "
- + state.mPackageName);
- }
+ CallerIdentity identity = state.mIdentity;
+ if (mSettingsStore.isLocationPackageBlacklisted(identity.userId,
+ identity.packageName)) {
continue;
}
- int op = LocationManagerService.resolutionLevelToOp(state.mAllowedResolutionLevel);
+ int op = CallerIdentity.asAppOp(identity.permissionLevel);
if (op >= 0) {
- if (mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, state.mUid,
- state.mPackageName, state.mFeatureId, state.mListenerIdentifier)
+ if (mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, identity.uid,
+ identity.packageName, identity.attributionTag, null)
!= AppOpsManager.MODE_ALLOWED) {
- if (D) {
- Slog.d(TAG, "skipping geofence processing for no op app: "
- + state.mPackageName);
- }
continue;
}
}
@@ -429,7 +401,7 @@
public void dump(PrintWriter pw) {
for (GeofenceState state : mFences) {
- pw.println(state.mPackageName + " " + state.mFence);
+ pw.println(state.mIdentity + " " + state.mFence);
}
}
diff --git a/services/core/java/com/android/server/location/GeofenceState.java b/services/core/java/com/android/server/location/GeofenceState.java
index a91a1dc..7d0a90b 100644
--- a/services/core/java/com/android/server/location/GeofenceState.java
+++ b/services/core/java/com/android/server/location/GeofenceState.java
@@ -17,11 +17,10 @@
package com.android.server.location;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
import android.app.PendingIntent;
import android.location.Geofence;
import android.location.Location;
+import android.location.util.identity.CallerIdentity;
/**
* Represents state associated with a geofence
@@ -37,29 +36,20 @@
public final Geofence mFence;
private final Location mLocation;
public final long mExpireAt;
- public final int mAllowedResolutionLevel;
- public final int mUid;
- public final String mPackageName;
- public final @Nullable String mFeatureId;
- public final @NonNull String mListenerIdentifier;
+ public final CallerIdentity mIdentity;
public final PendingIntent mIntent;
int mState; // current state
double mDistanceToCenter; // current distance to center of fence
- public GeofenceState(Geofence fence, long expireAt, int allowedResolutionLevel, int uid,
- String packageName, @Nullable String featureId, @NonNull String listenerIdentifier,
+ public GeofenceState(Geofence fence, long expireAt, CallerIdentity identity,
PendingIntent intent) {
mState = STATE_UNKNOWN;
mDistanceToCenter = Double.MAX_VALUE;
mFence = fence;
mExpireAt = expireAt;
- mAllowedResolutionLevel = allowedResolutionLevel;
- mUid = uid;
- mPackageName = packageName;
- mFeatureId = featureId;
- mListenerIdentifier = listenerIdentifier;
+ mIdentity = identity;
mIntent = intent;
mLocation = new Location("");
diff --git a/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java b/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java
index bc50ebc..1dc3455 100644
--- a/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java
+++ b/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java
@@ -16,107 +16,89 @@
package com.android.server.location;
-import android.content.Context;
import android.location.GnssAntennaInfo;
import android.location.IGnssAntennaInfoListener;
-import android.os.Handler;
+import android.location.util.identity.CallerIdentity;
+import android.os.RemoteException;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.location.gnss.GnssListenerManager;
+import com.android.server.location.gnss.GnssManagerService;
import java.util.List;
/**
- * An base implementation for GNSS antenna info provider. It abstracts out the responsibility of
- * handling listeners, while still allowing technology specific implementations to be built.
- *
- * @hide
+ * Provides GNSS antenna information to clients.
*/
-public abstract class GnssAntennaInfoProvider
- extends RemoteListenerHelper<Void, IGnssAntennaInfoListener> {
- private static final String TAG = "GnssAntennaInfoProvider";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+public class GnssAntennaInfoProvider extends
+ GnssListenerManager<Void, IGnssAntennaInfoListener, Void> {
private final GnssAntennaInfoProviderNative mNative;
- private boolean mIsListeningStarted;
-
- protected GnssAntennaInfoProvider(Context context, Handler handler) {
- this(context, handler, new GnssAntennaInfoProviderNative());
+ public GnssAntennaInfoProvider(UserInfoHelper userInfoHelper, SettingsHelper settingsHelper,
+ AppOpsHelper appOpsHelper, AppForegroundHelper appForegroundHelper) {
+ this(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper,
+ new GnssAntennaInfoProviderNative());
}
@VisibleForTesting
- public GnssAntennaInfoProvider(
- Context context, Handler handler, GnssAntennaInfoProviderNative aNative) {
- super(context, handler, TAG);
+ public GnssAntennaInfoProvider(UserInfoHelper userInfoHelper, SettingsHelper settingsHelper,
+ AppOpsHelper appOpsHelper, AppForegroundHelper appForegroundHelper,
+ GnssAntennaInfoProviderNative aNative) {
+ super(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper);
mNative = aNative;
}
- void resumeIfStarted() {
- if (DEBUG) {
- Log.d(TAG, "resumeIfStarted");
- }
- if (mIsListeningStarted) {
- mNative.startAntennaInfoListening();
- }
- }
-
-
@Override
- public boolean isAvailableInPlatform() {
- return mNative.isAntennaInfoSupported();
+ public void addListener(CallerIdentity identity, IGnssAntennaInfoListener listener) {
+ super.addListener(identity, listener);
}
@Override
- protected int registerWithService() {
- boolean started = mNative.startAntennaInfoListening();
- if (started) {
- mIsListeningStarted = true;
- return RemoteListenerHelper.RESULT_SUCCESS;
- }
- return RemoteListenerHelper.RESULT_INTERNAL_ERROR;
- }
-
- @Override
- protected void unregisterFromService() {
- boolean stopped = mNative.stopAntennaInfoListening();
- if (stopped) {
- mIsListeningStarted = false;
- }
- }
-
- /** Handle GNSS capabilities update from the GNSS HAL implementation. */
- public void onCapabilitiesUpdated(boolean isAntennaInfoSupported) {
- setSupported(isAntennaInfoSupported);
- updateResult();
- }
-
- /** Handle GNSS enabled changes.*/
- public void onGpsEnabledChanged() {
- tryUpdateRegistrationWithService();
- updateResult();
- }
-
- @Override
- protected ListenerOperation<IGnssAntennaInfoListener> getHandlerOperation(int result) {
- return (IGnssAntennaInfoListener listener,
- CallerIdentity callerIdentity) -> {
- // Do nothing, as GnssAntennaInfo.Callback does not have an onStatusChanged method.
- };
- }
-
- /** Handle Gnss Antenna Info report. */
- public void onGnssAntennaInfoAvailable(final List<GnssAntennaInfo> gnssAntennaInfos) {
- foreach((IGnssAntennaInfoListener listener, CallerIdentity callerIdentity) -> {
- if (!hasPermission(mContext, callerIdentity)) {
- logPermissionDisabledEventNotReported(
- TAG, callerIdentity.mPackageName, "GNSS antenna info");
- return;
+ protected boolean registerService(Void ignored) {
+ if (mNative.isAntennaInfoSupported()) {
+ if (mNative.startAntennaInfoListening()) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "starting gnss antenna info");
+ }
+ return true;
}
- listener.onGnssAntennaInfoReceived(gnssAntennaInfos);
+
+ Log.e(GnssManagerService.TAG, "error starting gnss antenna info");
+ }
+ return false;
+ }
+
+ @Override
+ protected void unregisterService() {
+ if (mNative.stopAntennaInfoListening()) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "stopping gnss antenna info");
+ }
+ } else {
+ Log.e(GnssManagerService.TAG, "error stopping gnss antenna info");
+ }
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onGnssAntennaInfoAvailable(List<GnssAntennaInfo> gnssAntennaInfos) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onGnssAntennaInfoReceived(gnssAntennaInfos);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
});
}
+ @Override
+ protected boolean isServiceSupported() {
+ return mNative.isAntennaInfoSupported();
+ }
+
/**
* Wrapper class for native methods. This is mocked for testing.
*/
@@ -138,9 +120,9 @@
}
}
- private static native boolean native_is_antenna_info_supported();
+ static native boolean native_is_antenna_info_supported();
- private static native boolean native_start_antenna_info_listening();
+ static native boolean native_start_antenna_info_listening();
- private static native boolean native_stop_antenna_info_listening();
+ static native boolean native_stop_antenna_info_listening();
}
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 58e332a..010e869 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -39,6 +39,7 @@
import android.location.LocationListener;
import android.location.LocationManager;
import android.location.LocationRequest;
+import android.location.util.identity.CallerIdentity;
import android.os.AsyncTask;
import android.os.BatteryStats;
import android.os.Binder;
@@ -236,17 +237,6 @@
// Update duration extension multiplier for emergency REQUEST_LOCATION.
private static final int EMERGENCY_LOCATION_UPDATE_DURATION_MULTIPLIER = 3;
- /** simpler wrapper for ProviderRequest + Worksource */
- private static class GpsRequest {
- public ProviderRequest request;
- public WorkSource source;
-
- public GpsRequest(ProviderRequest request, WorkSource source) {
- this.request = request;
- this.source = source;
- }
- }
-
// Threadsafe class to hold stats reported in the Extras Bundle
private static class LocationExtras {
private int mSvCount;
@@ -370,9 +360,6 @@
// Current request from underlying location clients.
private ProviderRequest mProviderRequest;
- // The WorkSource associated with the most recent client request (i.e, most recent call to
- // setRequest).
- private WorkSource mWorkSource = null;
// True if gps should be disabled because of PowerManager controls
private boolean mDisableGpsForPowerManager = false;
@@ -396,7 +383,7 @@
private final Looper mLooper;
private final LocationExtras mLocationExtras = new LocationExtras();
- private final GnssStatusListenerHelper mGnssStatusListenerHelper;
+ private final GnssStatusProvider mGnssStatusListenerHelper;
private final GnssMeasurementsProvider mGnssMeasurementsProvider;
private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider;
private final GnssAntennaInfoProvider mGnssAntennaInfoProvider;
@@ -456,7 +443,7 @@
// GNSS Metrics
private GnssMetrics mGnssMetrics;
- public GnssStatusListenerHelper getGnssStatusProvider() {
+ public GnssStatusProvider getGnssStatusProvider() {
return mGnssStatusListenerHelper;
}
@@ -631,8 +618,10 @@
}
}
- public GnssLocationProvider(Context context) {
- super(FgThread.getExecutor(), context);
+ public GnssLocationProvider(Context context, UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
+ AppForegroundHelper appForegroundHelper, LocationUsageLogger logger) {
+ super(FgThread.getExecutor(), CallerIdentity.fromContext(context));
ensureInitialized();
@@ -679,40 +668,15 @@
mSuplEsEnabled);
sendMessage(INITIALIZE_HANDLER, 0, null);
- mGnssStatusListenerHelper = new GnssStatusListenerHelper(mContext, mHandler) {
- @Override
- protected boolean isAvailableInPlatform() {
- return isSupported();
- }
-
- @Override
- protected boolean isGpsEnabled() {
- return GnssLocationProvider.this.isGpsEnabled();
- }
- };
-
- mGnssMeasurementsProvider = new GnssMeasurementsProvider(mContext, mHandler) {
- @Override
- protected boolean isGpsEnabled() {
- return GnssLocationProvider.this.isGpsEnabled();
- }
- };
-
+ mGnssStatusListenerHelper = new GnssStatusProvider(userInfoHelper, settingsHelper,
+ appOpsHelper, appForegroundHelper, logger);
+ mGnssMeasurementsProvider = new GnssMeasurementsProvider(userInfoHelper,
+ settingsHelper, appOpsHelper, appForegroundHelper, logger);
mGnssMeasurementCorrectionsProvider = new GnssMeasurementCorrectionsProvider(mHandler);
-
- mGnssAntennaInfoProvider = new GnssAntennaInfoProvider(mContext, mHandler) {
- @Override
- protected boolean isGpsEnabled() {
- return GnssLocationProvider.this.isGpsEnabled();
- }
- };
-
- mGnssNavigationMessageProvider = new GnssNavigationMessageProvider(mContext, mHandler) {
- @Override
- protected boolean isGpsEnabled() {
- return GnssLocationProvider.this.isGpsEnabled();
- }
- };
+ mGnssAntennaInfoProvider = new GnssAntennaInfoProvider(userInfoHelper, settingsHelper,
+ appOpsHelper, appForegroundHelper);
+ mGnssNavigationMessageProvider = new GnssNavigationMessageProvider(userInfoHelper,
+ settingsHelper, appOpsHelper, appForegroundHelper);
mGnssMetrics = new GnssMetrics(mContext, mBatteryStats);
mNtpTimeHelper = new NtpTimeHelper(mContext, mLooper, this);
@@ -1009,9 +973,6 @@
mC2KServerHost, mC2KServerPort);
}
- mGnssMeasurementsProvider.onGpsEnabledChanged();
- mGnssNavigationMessageProvider.onGpsEnabledChanged();
- mGnssAntennaInfoProvider.onGpsEnabledChanged();
mGnssBatchingProvider.enable();
if (mGnssVisibilityControl != null) {
mGnssVisibilityControl.onGpsEnabledChanged(/* isEnabled= */ true);
@@ -1037,10 +998,6 @@
mGnssBatchingProvider.disable();
// do this before releasing wakelock
native_cleanup();
-
- mGnssAntennaInfoProvider.onGpsEnabledChanged();
- mGnssMeasurementsProvider.onGpsEnabledChanged();
- mGnssNavigationMessageProvider.onGpsEnabledChanged();
}
private void updateEnabled() {
@@ -1077,26 +1034,25 @@
@Override
public void onSetRequest(ProviderRequest request) {
- sendMessage(SET_REQUEST, 0, new GpsRequest(request, request.workSource));
+ sendMessage(SET_REQUEST, 0, request);
}
- private void handleSetRequest(ProviderRequest request, WorkSource source) {
+ private void handleSetRequest(ProviderRequest request) {
mProviderRequest = request;
- mWorkSource = source;
updateEnabled();
updateRequirements();
}
// Called when the requirements for GPS may have changed
private void updateRequirements() {
- if (mProviderRequest == null || mWorkSource == null) {
+ if (mProviderRequest == null || mProviderRequest.workSource == null) {
return;
}
if (DEBUG) Log.d(TAG, "setRequest " + mProviderRequest);
if (mProviderRequest.reportLocation && isGpsEnabled()) {
// update client uids
- updateClientUids(mWorkSource);
+ updateClientUids(mProviderRequest.workSource);
mFixInterval = (int) mProviderRequest.interval;
mLowPowerMode = mProviderRequest.lowPowerMode;
@@ -1533,19 +1489,6 @@
meanCn0 += gnssStatus.getCn0DbHz(i);
mGnssMetrics.logConstellationType(gnssStatus.getConstellationType(i));
}
- if (VERBOSE) {
- Log.v(TAG, "svid: " + gnssStatus.getSvid(i)
- + " cn0: " + gnssStatus.getCn0DbHz(i)
- + " basebandCn0: " + gnssStatus.getBasebandCn0DbHz(i)
- + " elev: " + gnssStatus.getElevationDegrees(i)
- + " azimuth: " + gnssStatus.getAzimuthDegrees(i)
- + " carrier frequency: " + gnssStatus.getCn0DbHz(i)
- + (gnssStatus.hasEphemerisData(i) ? " E" : " ")
- + (gnssStatus.hasAlmanacData(i) ? " A" : " ")
- + (gnssStatus.usedInFix(i) ? "U" : "")
- + (gnssStatus.hasCarrierFrequencyHz(i) ? "F" : "")
- + (gnssStatus.hasBasebandCn0DbHz(i) ? "B" : ""));
- }
}
if (usedInFixCount > 0) {
meanCn0 /= usedInFixCount;
@@ -1601,13 +1544,7 @@
requestUtcTime();
}
- mGnssMeasurementsProvider.onCapabilitiesUpdated(
- hasCapability(GPS_CAPABILITY_MEASUREMENTS));
- mGnssNavigationMessageProvider.onCapabilitiesUpdated(
- hasCapability(GPS_CAPABILITY_NAV_MESSAGES));
restartRequests();
- mGnssAntennaInfoProvider.onCapabilitiesUpdated(
- hasCapability(GPS_CAPABILITY_ANTENNA_INFO));
mGnssCapabilitiesProvider.setTopHalCapabilities(mTopHalCapabilities);
});
@@ -1629,9 +1566,6 @@
Log.i(TAG, "restartRequests");
restartLocationRequest();
- mGnssAntennaInfoProvider.resumeIfStarted();
- mGnssMeasurementsProvider.resumeIfStarted();
- mGnssNavigationMessageProvider.resumeIfStarted();
mGnssBatchingProvider.resumeIfStarted();
mGnssGeofenceProvider.resumeIfStarted();
}
@@ -2062,8 +1996,7 @@
int message = msg.what;
switch (message) {
case SET_REQUEST:
- GpsRequest gpsRequest = (GpsRequest) msg.obj;
- handleSetRequest(gpsRequest.request, gpsRequest.source);
+ handleSetRequest((ProviderRequest) msg.obj);
break;
case INJECT_NTP_TIME:
mNtpTimeHelper.retrieveAndInjectNtpTime();
@@ -2152,20 +2085,8 @@
}
}
- private abstract class LocationChangeListener implements LocationListener {
+ private abstract static class LocationChangeListener implements LocationListener {
private int mNumLocationUpdateRequest;
-
- @Override
- public void onStatusChanged(String provider, int status, Bundle extras) {
- }
-
- @Override
- public void onProviderEnabled(String provider) {
- }
-
- @Override
- public void onProviderDisabled(String provider) {
- }
}
private final class NetworkLocationListener extends LocationChangeListener {
@@ -2222,12 +2143,6 @@
s.append(" ago)").append('\n');
s.append("mFixInterval=").append(mFixInterval).append('\n');
s.append("mLowPowerMode=").append(mLowPowerMode).append('\n');
- s.append("mGnssAntennaInfoProvider.isRegistered()=")
- .append(mGnssAntennaInfoProvider.isRegistered()).append('\n');
- s.append("mGnssMeasurementsProvider.isRegistered()=")
- .append(mGnssMeasurementsProvider.isRegistered()).append('\n');
- s.append("mGnssNavigationMessageProvider.isRegistered()=")
- .append(mGnssNavigationMessageProvider.isRegistered()).append('\n');
s.append("mDisableGpsForPowerManager=").append(mDisableGpsForPowerManager).append('\n');
s.append("mTopHalCapabilities=0x").append(Integer.toHexString(mTopHalCapabilities));
s.append(" ( ");
diff --git a/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java b/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java
index 82528ca..1a0a3db 100644
--- a/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java
+++ b/services/core/java/com/android/server/location/GnssMeasurementCorrectionsProvider.java
@@ -144,8 +144,8 @@
}
}
- private static native boolean native_is_measurement_corrections_supported();
+ static native boolean native_is_measurement_corrections_supported();
- private static native boolean native_inject_gnss_measurement_corrections(
+ static native boolean native_inject_gnss_measurement_corrections(
GnssMeasurementCorrections measurementCorrections);
}
diff --git a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
index 6ba5f07..52391d3 100644
--- a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
+++ b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
@@ -16,163 +16,160 @@
package com.android.server.location;
-import android.content.Context;
import android.location.GnssMeasurementsEvent;
import android.location.GnssRequest;
import android.location.IGnssMeasurementsListener;
-import android.os.Handler;
+import android.location.util.identity.CallerIdentity;
+import android.os.IBinder;
import android.os.RemoteException;
-import android.provider.Settings;
+import android.stats.location.LocationStatsEnums;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.location.gnss.GnssListenerManager;
+import com.android.server.location.gnss.GnssManagerService;
+
+import java.util.List;
+import java.util.Objects;
/**
- * An base implementation for GPS measurements provider. It abstracts out the responsibility of
+ * An base implementation for GNSS measurements provider. It abstracts out the responsibility of
* handling listeners, while still allowing technology specific implementations to be built.
*
* @hide
*/
-public abstract class GnssMeasurementsProvider
- extends RemoteListenerHelper<GnssRequest, IGnssMeasurementsListener> {
- private static final String TAG = "GnssMeasProvider";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+public class GnssMeasurementsProvider extends
+ GnssListenerManager<GnssRequest, IGnssMeasurementsListener, Boolean> implements
+ SettingsHelper.GlobalSettingChangedListener {
+ private final LocationUsageLogger mLogger;
private final GnssMeasurementProviderNative mNative;
- private boolean mStartedCollection;
- private boolean mStartedFullTracking;
-
- protected GnssMeasurementsProvider(Context context, Handler handler) {
- this(context, handler, new GnssMeasurementProviderNative());
+ public GnssMeasurementsProvider(UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
+ AppForegroundHelper appForegroundHelper, LocationUsageLogger logger) {
+ this(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper, logger,
+ new GnssMeasurementProviderNative());
}
@VisibleForTesting
- public GnssMeasurementsProvider(
- Context context, Handler handler, GnssMeasurementProviderNative aNative) {
- super(context, handler, TAG);
+ public GnssMeasurementsProvider(UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
+ AppForegroundHelper appForegroundHelper, LocationUsageLogger logger,
+ GnssMeasurementProviderNative aNative) {
+ super(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper);
+ mLogger = logger;
mNative = aNative;
}
- void resumeIfStarted() {
- if (DEBUG) {
- Log.d(TAG, "resumeIfStarted");
- }
- if (mStartedCollection) {
- mNative.startMeasurementCollection(mStartedFullTracking);
- }
+ @Override
+ public void addListener(GnssRequest request, CallerIdentity identity,
+ IGnssMeasurementsListener listener) {
+ super.addListener(request, identity, listener);
}
@Override
- public boolean isAvailableInPlatform() {
- return mNative.isMeasurementSupported();
- }
-
- private boolean getMergedFullTracking() {
- int devOptions = Settings.Secure.getInt(mContext.getContentResolver(),
- Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
- int enableFullTracking = Settings.Global.getInt(mContext.getContentResolver(),
- Settings.Global.ENABLE_GNSS_RAW_MEAS_FULL_TRACKING, 0);
- boolean enableFullTrackingBySetting = (devOptions == 1 /* Developer Mode enabled */)
- && (enableFullTracking == 1 /* Raw Measurements Full Tracking enabled */);
- if (enableFullTrackingBySetting) {
- return true;
- }
-
- synchronized (mListenerMap) {
- for (IdentifiedListener identifiedListener : mListenerMap.values()) {
- GnssRequest request = identifiedListener.getRequest();
- if (request != null && request.isFullTracking()) {
- return true;
+ protected boolean registerService(Boolean fullTrackingRequest) {
+ if (mNative.isMeasurementSupported()) {
+ if (mNative.startMeasurementCollection(fullTrackingRequest)) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG,
+ "starting gnss measurements (" + fullTrackingRequest + ")");
}
+ return true;
}
+
+ Log.e(GnssManagerService.TAG, "error starting gnss measurements");
}
return false;
}
@Override
- protected int registerWithService() {
- boolean enableFullTracking = getMergedFullTracking();
- boolean result = mNative.startMeasurementCollection(enableFullTracking);
- if (result) {
- mStartedCollection = true;
- mStartedFullTracking = enableFullTracking;
- return RemoteListenerHelper.RESULT_SUCCESS;
- } else {
- return RemoteListenerHelper.RESULT_INTERNAL_ERROR;
- }
- }
-
- @Override
- protected void unregisterFromService() {
- boolean stopped = mNative.stopMeasurementCollection();
- if (stopped) {
- mStartedCollection = false;
- }
- }
-
- public void onMeasurementsAvailable(final GnssMeasurementsEvent event) {
- foreach((IGnssMeasurementsListener listener, CallerIdentity callerIdentity) -> {
- if (!hasPermission(mContext, callerIdentity)) {
- logPermissionDisabledEventNotReported(
- TAG, callerIdentity.mPackageName, "GNSS measurements");
- return;
+ protected void unregisterService() {
+ if (mNative.isMeasurementSupported()) {
+ if (mNative.stopMeasurementCollection()) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "stopping gnss measurements");
+ }
+ } else {
+ Log.e(GnssManagerService.TAG, "error stopping gnss measurements");
}
- listener.onGnssMeasurementsReceived(event);
- });
- }
-
- /** Handle GNSS capabilities update from the GNSS HAL implementation. */
- public void onCapabilitiesUpdated(boolean isGnssMeasurementsSupported) {
- setSupported(isGnssMeasurementsSupported);
- updateResult();
- }
-
- public void onGpsEnabledChanged() {
- tryUpdateRegistrationWithService();
- updateResult();
+ }
}
@Override
- protected ListenerOperation<IGnssMeasurementsListener> getHandlerOperation(int result) {
- int status;
- switch (result) {
- case RESULT_SUCCESS:
- status = GnssMeasurementsEvent.Callback.STATUS_READY;
- break;
- case RESULT_NOT_AVAILABLE:
- case RESULT_NOT_SUPPORTED:
- case RESULT_INTERNAL_ERROR:
- status = GnssMeasurementsEvent.Callback.STATUS_NOT_SUPPORTED;
- break;
- case RESULT_NOT_ALLOWED:
- status = GnssMeasurementsEvent.Callback.STATUS_NOT_ALLOWED;
- break;
- case RESULT_GPS_LOCATION_DISABLED:
- status = GnssMeasurementsEvent.Callback.STATUS_LOCATION_DISABLED;
- break;
- case RESULT_UNKNOWN:
- return null;
- default:
- Log.v(TAG, "Unhandled addListener result: " + result);
- return null;
- }
- return new StatusChangedOperation(status);
+ protected void onActive() {
+ mSettingsHelper.addOnGnssMeasurementsFullTrackingEnabledChangedListener(this);
}
- private static class StatusChangedOperation
- implements ListenerOperation<IGnssMeasurementsListener> {
- private final int mStatus;
+ @Override
+ protected void onInactive() {
+ mSettingsHelper.removeOnGnssMeasurementsFullTrackingEnabledChangedListener(this);
+ }
- public StatusChangedOperation(int status) {
- mStatus = status;
+ @Override
+ public void onSettingChanged() {
+ // GNSS Measurements Full Tracking dev setting changed
+ updateService();
+ }
+
+ @Override
+ protected Boolean mergeRequests(List<GnssRegistration> registrations) {
+ if (mSettingsHelper.isGnssMeasurementsFullTrackingEnabled()) {
+ return true;
}
- @Override
- public void execute(IGnssMeasurementsListener listener,
- CallerIdentity callerIdentity) throws RemoteException {
- listener.onStatusChanged(mStatus);
+ for (GnssRegistration registration : registrations) {
+ if (Objects.requireNonNull(registration.getRequest()).isFullTracking()) {
+ return true;
+ }
}
+
+ return false;
+ }
+
+ @Override
+ protected void onRegistrationAdded(IBinder key, GnssRegistration registration) {
+ mLogger.logLocationApiUsage(
+ LocationStatsEnums.USAGE_STARTED,
+ LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER,
+ registration.getIdentity().packageName,
+ /* LocationRequest= */ null,
+ /* hasListener= */ true,
+ /* hasIntent= */ false,
+ /* geofence= */ null,
+ registration.isForeground());
+ }
+
+ @Override
+ protected void onRegistrationRemoved(IBinder key, GnssRegistration registration) {
+ mLogger.logLocationApiUsage(
+ LocationStatsEnums.USAGE_ENDED,
+ LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER,
+ registration.getIdentity().packageName,
+ /* LocationRequest= */ null,
+ /* hasListener= */ true,
+ /* hasIntent= */ false,
+ /* geofence= */ null,
+ registration.isForeground());
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onMeasurementsAvailable(GnssMeasurementsEvent event) {
+ deliverToListeners(listener -> {
+ try {
+ listener.onGnssMeasurementsReceived(event);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ }, registration -> mAppOpsHelper.noteLocationAccess(registration.getIdentity()));
+ }
+
+ @Override
+ protected boolean isServiceSupported() {
+ return mNative.isMeasurementSupported();
}
@VisibleForTesting
@@ -190,9 +187,9 @@
}
}
- private static native boolean native_is_measurement_supported();
+ static native boolean native_is_measurement_supported();
- private static native boolean native_start_measurement_collection(boolean enableFullTracking);
+ static native boolean native_start_measurement_collection(boolean enableFullTracking);
- private static native boolean native_stop_measurement_collection();
+ static native boolean native_stop_measurement_collection();
}
diff --git a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
index fb901e8..85d3b66 100644
--- a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
+++ b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
@@ -16,14 +16,15 @@
package com.android.server.location;
-import android.content.Context;
import android.location.GnssNavigationMessage;
import android.location.IGnssNavigationMessageListener;
-import android.os.Handler;
+import android.location.util.identity.CallerIdentity;
import android.os.RemoteException;
import android.util.Log;
import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.location.gnss.GnssListenerManager;
+import com.android.server.location.gnss.GnssManagerService;
/**
* An base implementation for GPS navigation messages provider.
@@ -32,113 +33,75 @@
*
* @hide
*/
-public abstract class GnssNavigationMessageProvider
- extends RemoteListenerHelper<Void, IGnssNavigationMessageListener> {
- private static final String TAG = "GnssNavigationMessageProvider";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+public class GnssNavigationMessageProvider extends
+ GnssListenerManager<Void, IGnssNavigationMessageListener, Void> {
private final GnssNavigationMessageProviderNative mNative;
- private boolean mCollectionStarted;
- protected GnssNavigationMessageProvider(Context context, Handler handler) {
- this(context, handler, new GnssNavigationMessageProviderNative());
+ public GnssNavigationMessageProvider(UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
+ AppForegroundHelper appForegroundHelper) {
+ this(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper,
+ new GnssNavigationMessageProviderNative());
}
@VisibleForTesting
- public GnssNavigationMessageProvider(Context context, Handler handler,
- GnssNavigationMessageProviderNative aNative) {
- super(context, handler, TAG);
+ public GnssNavigationMessageProvider(UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
+ AppForegroundHelper appForegroundHelper, GnssNavigationMessageProviderNative aNative) {
+ super(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper);
mNative = aNative;
}
- void resumeIfStarted() {
- if (DEBUG) {
- Log.d(TAG, "resumeIfStarted");
- }
- if (mCollectionStarted) {
- mNative.startNavigationMessageCollection();
- }
+ @Override
+ public void addListener(CallerIdentity identity, IGnssNavigationMessageListener listener) {
+ super.addListener(identity, listener);
}
@Override
- protected boolean isAvailableInPlatform() {
- return mNative.isNavigationMessageSupported();
- }
-
- @Override
- protected int registerWithService() {
- boolean result = mNative.startNavigationMessageCollection();
- if (result) {
- mCollectionStarted = true;
- return RemoteListenerHelper.RESULT_SUCCESS;
- } else {
- return RemoteListenerHelper.RESULT_INTERNAL_ERROR;
- }
- }
-
- @Override
- protected void unregisterFromService() {
- boolean stopped = mNative.stopNavigationMessageCollection();
- if (stopped) {
- mCollectionStarted = false;
- }
- }
-
- public void onNavigationMessageAvailable(final GnssNavigationMessage event) {
- foreach((IGnssNavigationMessageListener listener, CallerIdentity callerIdentity) -> {
- listener.onGnssNavigationMessageReceived(event);
+ protected boolean registerService(Void ignored) {
+ if (mNative.isNavigationMessageSupported()) {
+ if (mNative.startNavigationMessageCollection()) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "starting gnss navigation messages");
}
- );
- }
+ return true;
+ }
- /** Handle GNSS capabilities update from the GNSS HAL implementation */
- public void onCapabilitiesUpdated(boolean isGnssNavigationMessageSupported) {
- setSupported(isGnssNavigationMessageSupported);
- updateResult();
- }
-
- public void onGpsEnabledChanged() {
- tryUpdateRegistrationWithService();
- updateResult();
+ Log.e(GnssManagerService.TAG, "error starting gnss navigation messages");
+ }
+ return false;
}
@Override
- protected ListenerOperation<IGnssNavigationMessageListener> getHandlerOperation(int result) {
- int status;
- switch (result) {
- case RESULT_SUCCESS:
- status = GnssNavigationMessage.Callback.STATUS_READY;
- break;
- case RESULT_NOT_AVAILABLE:
- case RESULT_NOT_SUPPORTED:
- case RESULT_INTERNAL_ERROR:
- status = GnssNavigationMessage.Callback.STATUS_NOT_SUPPORTED;
- break;
- case RESULT_GPS_LOCATION_DISABLED:
- status = GnssNavigationMessage.Callback.STATUS_LOCATION_DISABLED;
- break;
- case RESULT_UNKNOWN:
- return null;
- default:
- Log.v(TAG, "Unhandled addListener result: " + result);
- return null;
+ protected void unregisterService() {
+ if (mNative.isNavigationMessageSupported()) {
+ if (mNative.stopNavigationMessageCollection()) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "stopping gnss navigation messages");
+ }
+ } else {
+ Log.e(GnssManagerService.TAG, "error stopping gnss navigation messages");
+ }
}
- return new StatusChangedOperation(status);
}
- private static class StatusChangedOperation
- implements ListenerOperation<IGnssNavigationMessageListener> {
- private final int mStatus;
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onNavigationMessageAvailable(GnssNavigationMessage event) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onGnssNavigationMessageReceived(event);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ }, registration -> mAppOpsHelper.noteLocationAccess(registration.getIdentity()));
+ }
- public StatusChangedOperation(int status) {
- mStatus = status;
- }
-
- @Override
- public void execute(IGnssNavigationMessageListener listener,
- CallerIdentity callerIdentity) throws RemoteException {
- listener.onStatusChanged(mStatus);
- }
+ @Override
+ protected boolean isServiceSupported() {
+ return mNative.isNavigationMessageSupported();
}
@VisibleForTesting
@@ -156,9 +119,9 @@
}
}
- private static native boolean native_is_navigation_message_supported();
+ static native boolean native_is_navigation_message_supported();
- private static native boolean native_start_navigation_message_collection();
+ static native boolean native_start_navigation_message_collection();
- private static native boolean native_stop_navigation_message_collection();
+ static native boolean native_stop_navigation_message_collection();
}
diff --git a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java b/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
deleted file mode 100644
index 1d16c03..0000000
--- a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.server.location;
-
-import android.content.Context;
-import android.location.IGnssStatusListener;
-import android.os.Handler;
-import android.util.Log;
-
-/**
- * Implementation of a handler for {@link IGnssStatusListener}.
- */
-public abstract class GnssStatusListenerHelper extends
- RemoteListenerHelper<Void, IGnssStatusListener> {
- private static final String TAG = "GnssStatusListenerHelper";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
-
- protected GnssStatusListenerHelper(Context context, Handler handler) {
- super(context, handler, TAG);
- setSupported(GnssLocationProvider.isSupported());
- }
-
- @Override
- protected int registerWithService() {
- return RemoteListenerHelper.RESULT_SUCCESS;
- }
-
- @Override
- protected void unregisterFromService() {}
-
- @Override
- protected ListenerOperation<IGnssStatusListener> getHandlerOperation(int result) {
- return null;
- }
-
- public void onStatusChanged(boolean isNavigating) {
- if (isNavigating) {
- foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
- listener.onGnssStarted();
- });
- } else {
- foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
- listener.onGnssStopped();
- });
- }
- }
-
- public void onFirstFix(final int timeToFirstFix) {
- foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
- listener.onFirstFix(timeToFirstFix);
- }
- );
- }
-
- public void onSvStatusChanged(
- final int svCount,
- final int[] prnWithFlags,
- final float[] cn0s,
- final float[] elevations,
- final float[] azimuths,
- final float[] carrierFreqs,
- final float[] basebandCn0s) {
- foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
- if (!hasPermission(mContext, callerIdentity)) {
- logPermissionDisabledEventNotReported(TAG, callerIdentity.mPackageName,
- "GNSS status");
- return;
- }
- listener.onSvStatusChanged(svCount, prnWithFlags, cn0s, elevations, azimuths,
- carrierFreqs, basebandCn0s);
- });
- }
-
- public void onNmeaReceived(final long timestamp, final String nmea) {
- foreach((IGnssStatusListener listener, CallerIdentity callerIdentity) -> {
- if (!hasPermission(mContext, callerIdentity)) {
- logPermissionDisabledEventNotReported(TAG, callerIdentity.mPackageName, "NMEA");
- return;
- }
- listener.onNmeaReceived(timestamp, nmea);
- });
- }
-}
diff --git a/services/core/java/com/android/server/location/GnssStatusProvider.java b/services/core/java/com/android/server/location/GnssStatusProvider.java
new file mode 100644
index 0000000..ab2c40e0
--- /dev/null
+++ b/services/core/java/com/android/server/location/GnssStatusProvider.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2014 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location;
+
+import android.location.IGnssStatusListener;
+import android.location.util.identity.CallerIdentity;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.stats.location.LocationStatsEnums;
+import android.util.Log;
+
+import com.android.server.location.gnss.GnssListenerManager;
+import com.android.server.location.gnss.GnssManagerService;
+
+/**
+ * Implementation of a handler for {@link IGnssStatusListener}.
+ */
+public class GnssStatusProvider extends GnssListenerManager<Void, IGnssStatusListener, Void> {
+
+ private final LocationUsageLogger mLogger;
+
+ public GnssStatusProvider(UserInfoHelper userInfoHelper, SettingsHelper settingsHelper,
+ AppOpsHelper appOpsHelper, AppForegroundHelper appForegroundHelper,
+ LocationUsageLogger logger) {
+ super(userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper);
+ mLogger = logger;
+ }
+
+ @Override
+ public void addListener(CallerIdentity identity, IGnssStatusListener listener) {
+ super.addListener(identity, listener);
+ }
+
+ @Override
+ protected boolean registerService(Void ignored) {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "starting gnss status");
+ }
+ return true;
+ }
+
+ @Override
+ protected void unregisterService() {
+ if (GnssManagerService.D) {
+ Log.d(GnssManagerService.TAG, "stopping gnss status");
+ }
+ }
+
+ @Override
+ protected void onRegistrationAdded(IBinder key, GnssRegistration registration) {
+ mLogger.logLocationApiUsage(
+ LocationStatsEnums.USAGE_STARTED,
+ LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
+ registration.getIdentity().packageName,
+ /* LocationRequest= */ null,
+ /* hasListener= */ true,
+ /* hasIntent= */ false,
+ /* geofence= */ null,
+ registration.isForeground());
+ }
+
+ @Override
+ protected void onRegistrationRemoved(IBinder key, GnssRegistration registration) {
+ mLogger.logLocationApiUsage(
+ LocationStatsEnums.USAGE_ENDED,
+ LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
+ registration.getIdentity().packageName,
+ /* LocationRequest= */ null,
+ /* hasListener= */ true,
+ /* hasIntent= */ false,
+ /* geofence= */ null,
+ registration.isForeground());
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onStatusChanged(boolean isNavigating) {
+ if (isNavigating) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onGnssStarted();
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ });
+ } else {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onGnssStopped();
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ });
+ }
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onFirstFix(int ttff) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onFirstFix(ttff);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ });
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onSvStatusChanged(
+ final int svCount,
+ final int[] prnWithFlags,
+ final float[] cn0s,
+ final float[] elevations,
+ final float[] azimuths,
+ final float[] carrierFreqs,
+ final float[] basebandCn0s) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onSvStatusChanged(svCount, prnWithFlags, cn0s, elevations, azimuths,
+ carrierFreqs, basebandCn0s);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ }, registration -> mAppOpsHelper.noteLocationAccess(registration.getIdentity()));
+ }
+
+ /**
+ * Called by GnssLocationProvider.
+ */
+ public void onNmeaReceived(long timestamp, String nmea) {
+ deliverToListeners((listener) -> {
+ try {
+ listener.onNmeaReceived(timestamp, nmea);
+ } catch (RemoteException e) {
+ // ignore - the listener will get cleaned up later anyways
+ }
+ }, registration -> mAppOpsHelper.noteLocationAccess(registration.getIdentity()));
+ }
+}
diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java
index 2b5fc79..201d314 100644
--- a/services/core/java/com/android/server/location/GnssVisibilityControl.java
+++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java
@@ -70,6 +70,7 @@
// Wakelocks
private static final String WAKELOCK_KEY = TAG;
private static final long WAKELOCK_TIMEOUT_MILLIS = 60 * 1000;
+ private static final long EMERGENCY_EXTENSION_FOR_MISMATCH = 128 * 1000;
private final PowerManager.WakeLock mWakeLock;
private final AppOpsManager mAppOps;
@@ -601,7 +602,7 @@
isPermissionMismatched = true;
}
- if (!mNiHandler.getInEmergency()) {
+ if (!mNiHandler.getInEmergency(EMERGENCY_EXTENSION_FOR_MISMATCH)) {
Log.w(TAG, "Emergency state mismatch. Device currently not in user initiated emergency"
+ " session. Notification: " + nfwNotification);
isPermissionMismatched = true;
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/location/LocationManagerService.java
similarity index 74%
rename from services/core/java/com/android/server/LocationManagerService.java
rename to services/core/java/com/android/server/location/LocationManagerService.java
index d814b9c..e0957cf 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/location/LocationManagerService.java
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2007 The Android Open Source Project
+ * Copyright (C) 2020 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.
@@ -14,9 +14,8 @@
* limitations under the License.
*/
-package com.android.server;
+package com.android.server.location;
-import static android.Manifest.permission.ACCESS_COARSE_LOCATION;
import static android.Manifest.permission.ACCESS_FINE_LOCATION;
import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
@@ -25,6 +24,8 @@
import static android.location.LocationManager.GPS_PROVIDER;
import static android.location.LocationManager.NETWORK_PROVIDER;
import static android.location.LocationManager.PASSIVE_PROVIDER;
+import static android.location.util.identity.CallerIdentity.PERMISSION_COARSE;
+import static android.location.util.identity.CallerIdentity.PERMISSION_FINE;
import static android.os.PowerManager.locationPowerSaveModeToString;
import static java.util.concurrent.TimeUnit.NANOSECONDS;
@@ -34,20 +35,19 @@
import android.annotation.Nullable;
import android.annotation.UserIdInt;
import android.app.ActivityManager;
-import android.app.AppOpsManager;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
-import android.content.pm.PackageManager;
-import android.location.Address;
import android.location.Criteria;
import android.location.GeocoderParams;
import android.location.Geofence;
+import android.location.GnssCapabilities;
import android.location.GnssMeasurementCorrections;
import android.location.GnssRequest;
import android.location.IBatchedLocationCallback;
+import android.location.IGeocodeListener;
import android.location.IGnssAntennaInfoListener;
import android.location.IGnssMeasurementsListener;
import android.location.IGnssNavigationMessageListener;
@@ -58,8 +58,11 @@
import android.location.Location;
import android.location.LocationManager;
import android.location.LocationManagerInternal;
+import android.location.LocationProvider;
import android.location.LocationRequest;
import android.location.LocationTime;
+import android.location.util.identity.CallerIdentity;
+import android.location.util.identity.CallerIdentity.PermissionLevel;
import android.os.Binder;
import android.os.Bundle;
import android.os.CancellationSignal;
@@ -86,29 +89,16 @@
import com.android.internal.content.PackageMonitor;
import com.android.internal.location.ProviderProperties;
import com.android.internal.location.ProviderRequest;
-import com.android.internal.util.ArrayUtils;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
-import com.android.server.location.AbstractLocationProvider;
+import com.android.server.FgThread;
+import com.android.server.LocalServices;
+import com.android.server.PendingIntentUtils;
+import com.android.server.SystemService;
import com.android.server.location.AbstractLocationProvider.State;
-import com.android.server.location.AppForegroundHelper;
-import com.android.server.location.CallerIdentity;
-import com.android.server.location.GeocoderProxy;
-import com.android.server.location.GeofenceManager;
-import com.android.server.location.GeofenceProxy;
-import com.android.server.location.HardwareActivityRecognitionProxy;
-import com.android.server.location.LocationFudger;
-import com.android.server.location.LocationProviderProxy;
-import com.android.server.location.LocationRequestStatistics;
import com.android.server.location.LocationRequestStatistics.PackageProviderKey;
import com.android.server.location.LocationRequestStatistics.PackageStatistics;
-import com.android.server.location.LocationUsageLogger;
-import com.android.server.location.MockProvider;
-import com.android.server.location.MockableLocationProvider;
-import com.android.server.location.PassiveProvider;
-import com.android.server.location.SettingsHelper;
-import com.android.server.location.UserInfoHelper;
import com.android.server.location.UserInfoHelper.UserListener;
import com.android.server.location.gnss.GnssManagerService;
import com.android.server.pm.permission.PermissionManagerServiceInternal;
@@ -125,7 +115,6 @@
import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
-import java.util.Set;
import java.util.TreeMap;
import java.util.concurrent.CopyOnWriteArrayList;
@@ -149,12 +138,12 @@
@Override
public void onStart() {
- // enable client caches by doing the first invalidate
- LocationManager.invalidateLocalLocationEnabledCaches();
-
publishBinderService(Context.LOCATION_SERVICE, mService);
- // disable caching for whatever process contains LocationManagerService
- ((LocationManager) mService.mContext.getSystemService(LocationManager.class))
+
+ // client caching behavior is only enabled after seeing the first invalidate
+ LocationManager.invalidateLocalLocationEnabledCaches();
+ // disable caching for our own process
+ Objects.requireNonNull(mService.mContext.getSystemService(LocationManager.class))
.disableLocalLocationEnabledCaches();
}
@@ -176,10 +165,6 @@
private static final String WAKELOCK_KEY = "*location*";
- private static final int RESOLUTION_LEVEL_NONE = 0;
- private static final int RESOLUTION_LEVEL_COARSE = 1;
- private static final int RESOLUTION_LEVEL_FINE = 2;
-
private static final String NETWORK_LOCATION_SERVICE_ACTION =
"com.android.location.service.v3.NetworkLocationProvider";
private static final String FUSED_LOCATION_SERVICE_ACTION =
@@ -208,6 +193,7 @@
private final Context mContext;
private final Handler mHandler;
private final LocalService mLocalService;
+ private final AppOpsHelper mAppOpsHelper;
private final UserInfoHelper mUserInfoHelper;
private final SettingsHelper mSettingsHelper;
private final AppForegroundHelper mAppForegroundHelper;
@@ -217,8 +203,6 @@
private final PassiveLocationProviderManager mPassiveManager;
- private AppOpsManager mAppOps;
- private PackageManager mPackageManager;
private PowerManager mPowerManager;
private GeofenceManager mGeofenceManager;
@@ -231,7 +215,7 @@
// @GuardedBy("mLock")
// hold lock for write or to prevent write, no lock for read
- private final CopyOnWriteArrayList<LocationProviderManager> mProviderManagers =
+ final CopyOnWriteArrayList<LocationProviderManager> mProviderManagers =
new CopyOnWriteArrayList<>();
@GuardedBy("mLock")
@@ -245,13 +229,14 @@
@PowerManager.LocationPowerSaveMode
private int mBatterySaverMode;
- private LocationManagerService(Context context) {
+ LocationManagerService(Context context) {
mContext = context.createAttributionContext(ATTRIBUTION_TAG);
mHandler = FgThread.getHandler();
mLocalService = new LocalService();
LocalServices.addService(LocationManagerInternal.class, mLocalService);
+ mAppOpsHelper = new AppOpsHelper(mContext);
mUserInfoHelper = new UserInfoHelper(mContext);
mSettingsHelper = new SettingsHelper(mContext, mHandler);
mAppForegroundHelper = new AppForegroundHelper(mContext);
@@ -279,33 +264,18 @@
// most startup is deferred until systemReady()
}
- private void onSystemReady() {
+ void onSystemReady() {
+ mAppOpsHelper.onSystemReady();
mUserInfoHelper.onSystemReady();
mSettingsHelper.onSystemReady();
mAppForegroundHelper.onSystemReady();
synchronized (mLock) {
- mPackageManager = mContext.getPackageManager();
- mAppOps = mContext.getSystemService(AppOpsManager.class);
mPowerManager = mContext.getSystemService(PowerManager.class);
mGeofenceManager = new GeofenceManager(mContext, mSettingsHelper);
- PowerManagerInternal localPowerManager =
- LocalServices.getService(PowerManagerInternal.class);
-
// add listeners
- mAppOps.startWatchingMode(
- AppOpsManager.OP_COARSE_LOCATION,
- null,
- AppOpsManager.WATCH_FOREGROUND_CHANGES,
- new AppOpsManager.OnOpChangedInternalListener() {
- public void onOpChanged(int op, String packageName) {
- // onOpChanged invoked on ui thread, move to our thread to reduce risk
- // of blocking ui thread
- mHandler.post(() -> onAppOpChanged(packageName));
- }
- });
- mPackageManager.addOnPermissionsChangeListener(
+ mContext.getPackageManager().addOnPermissionsChangeListener(
uid -> {
// listener invoked on ui thread, move to our thread to reduce risk of
// blocking ui thread
@@ -316,7 +286,8 @@
});
});
- localPowerManager.registerLowPowerModeObserver(ServiceType.LOCATION,
+ LocalServices.getService(PowerManagerInternal.class).registerLowPowerModeObserver(
+ ServiceType.LOCATION,
state -> {
// listener invoked on ui thread, move to our thread to reduce risk of
// blocking ui thread
@@ -328,6 +299,8 @@
});
mBatterySaverMode = mPowerManager.getLocationPowerSaveMode();
+ mAppOpsHelper.addListener(this::onAppOpChanged);
+
mSettingsHelper.addOnLocationEnabledChangedListener(this::onLocationModeChanged);
mSettingsHelper.addOnBackgroundThrottleIntervalChangedListener(
this::onBackgroundThrottleIntervalChanged);
@@ -336,40 +309,32 @@
mSettingsHelper.addOnIgnoreSettingsPackageWhitelistChangedListener(
this::onIgnoreSettingsWhitelistChanged);
- new PackageMonitor() {
+ PackageMonitor packageMonitor = new PackageMonitor() {
@Override
public void onPackageDisappeared(String packageName, int reason) {
synchronized (mLock) {
- LocationManagerService.this.onPackageDisappearedLocked(packageName);
+ LocationManagerService.this.onPackageDisappeared(packageName);
}
}
- }.register(mContext, mHandler.getLooper(), true);
+ };
+ packageMonitor.register(mContext, null, true, mHandler);
mUserInfoHelper.addListener(this::onUserChanged);
mAppForegroundHelper.addListener(this::onAppForegroundChanged);
- IntentFilter intentFilter = new IntentFilter();
- intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
- intentFilter.addAction(Intent.ACTION_SCREEN_ON);
-
+ IntentFilter screenIntentFilter = new IntentFilter();
+ screenIntentFilter.addAction(Intent.ACTION_SCREEN_OFF);
+ screenIntentFilter.addAction(Intent.ACTION_SCREEN_ON);
mContext.registerReceiverAsUser(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
- final String action = intent.getAction();
- if (action == null) {
- return;
- }
- synchronized (mLock) {
- switch (action) {
- case Intent.ACTION_SCREEN_ON:
- case Intent.ACTION_SCREEN_OFF:
- onScreenStateChangedLocked();
- break;
- }
+ if (Intent.ACTION_SCREEN_ON.equals(intent.getAction())
+ || Intent.ACTION_SCREEN_OFF.equals(intent.getAction())) {
+ onScreenStateChanged();
}
}
- }, UserHandle.ALL, intentFilter, null, mHandler);
+ }, UserHandle.ALL, screenIntentFilter, null, mHandler);
// initialize the current users. we would get the user started notifications for these
// users eventually anyways, but this takes care of it as early as possible.
@@ -379,7 +344,7 @@
}
}
- private void onSystemThirdPartyAppsCanStart() {
+ void onSystemThirdPartyAppsCanStart() {
synchronized (mLock) {
// prepare providers
initializeProvidersLocked();
@@ -389,7 +354,7 @@
private void onAppOpChanged(String packageName) {
synchronized (mLock) {
for (Receiver receiver : mReceivers.values()) {
- if (receiver.mCallerIdentity.mPackageName.equals(packageName)) {
+ if (receiver.mCallerIdentity.packageName.equals(packageName)) {
receiver.updateMonitoring(true);
}
}
@@ -398,7 +363,7 @@
for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) {
String provider = entry.getKey();
for (UpdateRecord record : entry.getValue()) {
- if (record.mReceiver.mCallerIdentity.mPackageName.equals(packageName)) {
+ if (record.mReceiver.mCallerIdentity.packageName.equals(packageName)) {
affectedProviders.add(provider);
}
}
@@ -436,11 +401,12 @@
}
}
- @GuardedBy("mLock")
- private void onScreenStateChangedLocked() {
- if (mBatterySaverMode == PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF) {
- for (LocationProviderManager manager : mProviderManagers) {
- applyRequirementsLocked(manager);
+ private void onScreenStateChanged() {
+ synchronized (mLock) {
+ if (mBatterySaverMode == PowerManager.LOCATION_MODE_THROTTLE_REQUESTS_WHEN_SCREEN_OFF) {
+ for (LocationProviderManager manager : mProviderManagers) {
+ applyRequirementsLocked(manager);
+ }
}
}
}
@@ -466,23 +432,24 @@
}
}
- @GuardedBy("mLock")
- private void onPackageDisappearedLocked(String packageName) {
- ArrayList<Receiver> deadReceivers = null;
+ private void onPackageDisappeared(String packageName) {
+ synchronized (mLock) {
+ ArrayList<Receiver> deadReceivers = null;
- for (Receiver receiver : mReceivers.values()) {
- if (receiver.mCallerIdentity.mPackageName.equals(packageName)) {
- if (deadReceivers == null) {
- deadReceivers = new ArrayList<>();
+ for (Receiver receiver : mReceivers.values()) {
+ if (receiver.mCallerIdentity.packageName.equals(packageName)) {
+ if (deadReceivers == null) {
+ deadReceivers = new ArrayList<>();
+ }
+ deadReceivers.add(receiver);
}
- deadReceivers.add(receiver);
}
- }
- // perform removal outside of mReceivers loop
- if (deadReceivers != null) {
- for (Receiver receiver : deadReceivers) {
- removeUpdatesLocked(receiver);
+ // perform removal outside of mReceivers loop
+ if (deadReceivers != null) {
+ for (Receiver receiver : deadReceivers) {
+ removeUpdatesLocked(receiver);
+ }
}
}
}
@@ -493,7 +460,7 @@
for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) {
String provider = entry.getKey();
for (UpdateRecord record : entry.getValue()) {
- if (record.mReceiver.mCallerIdentity.mUid == uid
+ if (record.mReceiver.mCallerIdentity.uid == uid
&& record.mIsForegroundUid != foreground) {
record.updateForeground(foreground);
@@ -574,17 +541,6 @@
Log.e(TAG, "no geocoder provider found");
}
- // bind to geofence proxy
- if (mGnssManagerService != null) {
- IGpsGeofenceHardware gpsGeofenceHardware = mGnssManagerService.getGpsGeofenceProxy();
- if (gpsGeofenceHardware != null) {
- GeofenceProxy provider = GeofenceProxy.createAndBind(mContext, gpsGeofenceHardware);
- if (provider == null) {
- Log.e(TAG, "unable to bind to GeofenceProxy");
- }
- }
- }
-
// bind to hardware activity recognition
HardwareActivityRecognitionProxy hardwareActivityRecognitionProxy =
HardwareActivityRecognitionProxy.createAndRegister(mContext);
@@ -607,19 +563,33 @@
Boolean.parseBoolean(fragments[7]) /* supportsBearing */,
Integer.parseInt(fragments[8]) /* powerRequirement */,
Integer.parseInt(fragments[9]) /* accuracy */);
- addTestProvider(name, properties, mContext.getOpPackageName());
+ LocationProviderManager manager = getLocationProviderManager(name);
+ if (manager == null) {
+ manager = new LocationProviderManager(name);
+ mProviderManagers.add(manager);
+ }
+ manager.setMockProvider(new MockProvider(properties));
}
// initialize gnss last because it has no awareness of boot phases and blindly assumes that
// all other location providers are loaded at initialization
if (GnssManagerService.isGnssSupported()) {
- mGnssManagerService = new GnssManagerService(mContext, mSettingsHelper,
- mAppForegroundHelper, mLocationUsageLogger);
+ mGnssManagerService = new GnssManagerService(mContext, mUserInfoHelper, mSettingsHelper,
+ mAppOpsHelper, mAppForegroundHelper, mLocationUsageLogger);
mGnssManagerService.onSystemReady();
LocationProviderManager gnssManager = new LocationProviderManager(GPS_PROVIDER);
mProviderManagers.add(gnssManager);
gnssManager.setRealProvider(mGnssManagerService.getGnssLocationProvider());
+
+ // bind to geofence proxy
+ IGpsGeofenceHardware gpsGeofenceHardware = mGnssManagerService.getGpsGeofenceProxy();
+ if (gpsGeofenceHardware != null) {
+ GeofenceProxy provider = GeofenceProxy.createAndBind(mContext, gpsGeofenceHardware);
+ if (provider == null) {
+ Log.e(TAG, "unable to bind to GeofenceProxy");
+ }
+ }
}
}
@@ -682,7 +652,7 @@
// acquiring mLock makes operations on mProvider atomic, but is otherwise unnecessary
protected final MockableLocationProvider mProvider;
- private LocationProviderManager(String name) {
+ LocationProviderManager(String name) {
mName = name;
mLocationFudger = new LocationFudger(mSettingsHelper.getCoarseLocationAccuracyM());
mEnabled = new SparseArray<>(2);
@@ -732,8 +702,9 @@
}
}
- public Set<String> getPackages() {
- return mProvider.getState().providerPackageNames;
+ @Nullable
+ public CallerIdentity getProviderIdentity() {
+ return mProvider.getState().identity;
}
@Nullable
@@ -742,16 +713,16 @@
}
@Nullable
- public Location getLastFineLocation(int userId) {
+ public Location getLastLocation(int userId, @PermissionLevel int permissionlevel) {
synchronized (mLock) {
- return mLastLocation.get(userId);
- }
- }
-
- @Nullable
- public Location getLastCoarseLocation(int userId) {
- synchronized (mLock) {
- return mLastCoarseLocation.get(userId);
+ switch (permissionlevel) {
+ case PERMISSION_COARSE:
+ return mLastCoarseLocation.get(userId);
+ case PERMISSION_FINE:
+ return mLastLocation.get(userId);
+ default:
+ throw new AssertionError();
+ }
}
}
@@ -954,9 +925,6 @@
mLastCoarseLocation.put(userId, null);
}
- // update LOCATION_PROVIDERS_ALLOWED for best effort backwards compatibility
- mSettingsHelper.setLocationProviderAllowed(mName, enabled, userId);
-
// do not send change notifications if we just saw this user for the first time
if (wasEnabled != null) {
// fused and passive provider never get public updates for legacy reasons
@@ -1037,7 +1005,6 @@
private final class Receiver extends LocationManagerServiceUtils.LinkedListenerBase implements
PendingIntent.OnFinished {
private static final long WAKELOCK_TIMEOUT_MILLIS = 60 * 1000;
- private final int mAllowedResolutionLevel; // resolution level allowed to receiver
private final ILocationListener mListener;
final PendingIntent mPendingIntent;
@@ -1054,11 +1021,9 @@
private int mPendingBroadcasts;
PowerManager.WakeLock mWakeLock;
- private Receiver(ILocationListener listener, PendingIntent intent, int pid, int uid,
- String packageName, @Nullable String featureId, WorkSource workSource,
- boolean hideFromAppOps, @NonNull String listenerIdentifier) {
- super(new CallerIdentity(uid, pid, packageName, featureId, listenerIdentifier),
- "LocationListener");
+ private Receiver(ILocationListener listener, PendingIntent intent, CallerIdentity identity,
+ WorkSource workSource, boolean hideFromAppOps) {
+ super(identity);
mListener = listener;
mPendingIntent = intent;
if (listener != null) {
@@ -1066,7 +1031,6 @@
} else {
mKey = intent;
}
- mAllowedResolutionLevel = getAllowedResolutionLevel(pid, uid);
if (workSource != null && workSource.isEmpty()) {
workSource = null;
}
@@ -1078,7 +1042,7 @@
// construct/configure wakelock
mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, WAKELOCK_KEY);
if (workSource == null) {
- workSource = new WorkSource(mCallerIdentity.mUid, mCallerIdentity.mPackageName);
+ workSource = new WorkSource(mCallerIdentity.uid, mCallerIdentity.packageName);
}
mWakeLock.setWorkSource(workSource);
@@ -1136,7 +1100,7 @@
if (manager == null) {
continue;
}
- if (!manager.isEnabled(UserHandle.getUserId(mCallerIdentity.mUid))
+ if (!manager.isEnabled(UserHandle.getUserId(mCallerIdentity.uid))
&& !isSettingsExempt(updateRecord)) {
continue;
}
@@ -1156,42 +1120,43 @@
mOpMonitoring = updateMonitoring(
requestingLocation,
mOpMonitoring,
- AppOpsManager.OP_MONITOR_LOCATION);
+ false);
// Now update monitoring of high power requests only.
boolean wasHighPowerMonitoring = mOpHighPowerMonitoring;
mOpHighPowerMonitoring = updateMonitoring(
requestingHighPowerLocation,
mOpHighPowerMonitoring,
- AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION);
+ true);
if (mOpHighPowerMonitoring != wasHighPowerMonitoring) {
- // Send an intent to notify that a high power request has been added/removed.
- Intent intent = new Intent(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION);
- mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ long identity = Binder.clearCallingIdentity();
+ try {
+ // Send an intent to notify that a high power request has been added/removed.
+ Intent intent = new Intent(LocationManager.HIGH_POWER_REQUEST_CHANGE_ACTION);
+ mContext.sendBroadcastAsUser(intent, UserHandle.ALL);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
}
}
- /**
- * Update AppOps monitoring for a single location request and op type.
- *
- * @param allowMonitoring True if monitoring is allowed for this request/op.
- * @param currentlyMonitoring True if AppOps is currently monitoring this request/op.
- * @param op AppOps code for the op to update.
- * @return True if monitoring is on for this request/op after updating.
- */
private boolean updateMonitoring(boolean allowMonitoring, boolean currentlyMonitoring,
- int op) {
+ boolean highPower) {
if (!currentlyMonitoring) {
if (allowMonitoring) {
- return mAppOps.startOpNoThrow(op, mCallerIdentity.mUid,
- mCallerIdentity.mPackageName, false, mCallerIdentity.mFeatureId, null)
- == AppOpsManager.MODE_ALLOWED;
+ if (!highPower) {
+ return mAppOpsHelper.startLocationMonitoring(mCallerIdentity);
+ } else {
+ return mAppOpsHelper.startHighPowerLocationMonitoring(mCallerIdentity);
+ }
}
} else {
- if (!allowMonitoring
- || mAppOps.checkOpNoThrow(op, mCallerIdentity.mUid,
- mCallerIdentity.mPackageName) != AppOpsManager.MODE_ALLOWED) {
- mAppOps.finishOp(op, mCallerIdentity.mUid, mCallerIdentity.mPackageName);
+ if (!allowMonitoring || !mAppOpsHelper.checkLocationAccess(mCallerIdentity)) {
+ if (!highPower) {
+ mAppOpsHelper.stopLocationMonitoring(mCallerIdentity);
+ } else {
+ mAppOpsHelper.stopHighPowerLocationMonitoring(mCallerIdentity);
+ }
return false;
}
}
@@ -1230,7 +1195,7 @@
new Location(location));
try {
mPendingIntent.send(mContext, 0, locationChanged, this, mHandler,
- getResolutionPermission(mAllowedResolutionLevel),
+ CallerIdentity.asPermission(mCallerIdentity.permissionLevel),
PendingIntentUtils.createDontSendToRestrictedAppsBundle(null));
// call this after broadcasting so we do not increment
// if we throw an exception.
@@ -1265,7 +1230,7 @@
providerIntent.putExtra(LocationManager.KEY_PROVIDER_ENABLED, enabled);
try {
mPendingIntent.send(mContext, 0, providerIntent, this, mHandler,
- getResolutionPermission(mAllowedResolutionLevel),
+ CallerIdentity.asPermission(mCallerIdentity.permissionLevel),
PendingIntentUtils.createDontSendToRestrictedAppsBundle(null));
// call this after broadcasting so we do not increment
// if we throw an exception.
@@ -1289,8 +1254,6 @@
@Override
public void binderDied() {
- if (D) Log.d(TAG, "Remote " + mListenerName + " died.");
-
synchronized (mLock) {
removeUpdatesLocked(this);
clearPendingBroadcastsLocked();
@@ -1379,37 +1342,45 @@
}
@Override
- public boolean addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName,
- String featureId, String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
-
- return mGnssManagerService != null && mGnssManagerService.addGnssBatchingCallback(
- callback, packageName, featureId, listenerIdentifier);
+ public void addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName,
+ String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.addGnssBatchingCallback(callback, packageName, attributionTag);
+ }
}
@Override
public void removeGnssBatchingCallback() {
- if (mGnssManagerService != null) mGnssManagerService.removeGnssBatchingCallback();
+ if (mGnssManagerService != null) {
+ mGnssManagerService.removeGnssBatchingCallback();
+ }
}
@Override
- public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName) {
- return mGnssManagerService != null && mGnssManagerService.startGnssBatch(periodNanos,
- wakeOnFifoFull, packageName);
+ public void startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName,
+ String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.startGnssBatch(periodNanos, wakeOnFifoFull, packageName,
+ attributionTag);
+ }
}
@Override
public void flushGnssBatch(String packageName) {
- if (mGnssManagerService != null) mGnssManagerService.flushGnssBatch(packageName);
+ if (mGnssManagerService != null) {
+ mGnssManagerService.flushGnssBatch(packageName);
+ }
}
@Override
- public boolean stopGnssBatch() {
- return mGnssManagerService != null && mGnssManagerService.stopGnssBatch();
+ public void stopGnssBatch() {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.stopGnssBatch();
+ }
}
@Nullable
- private LocationProviderManager getLocationProviderManager(String providerName) {
+ LocationProviderManager getLocationProviderManager(String providerName) {
for (LocationProviderManager manager : mProviderManagers) {
if (providerName.equals(manager.getName())) {
return manager;
@@ -1419,110 +1390,6 @@
return null;
}
- private String getResolutionPermission(int resolutionLevel) {
- switch (resolutionLevel) {
- case RESOLUTION_LEVEL_FINE:
- return ACCESS_FINE_LOCATION;
- case RESOLUTION_LEVEL_COARSE:
- return ACCESS_COARSE_LOCATION;
- default:
- return null;
- }
- }
-
- private int getAllowedResolutionLevel(int pid, int uid) {
- if (mContext.checkPermission(ACCESS_FINE_LOCATION, pid, uid) == PERMISSION_GRANTED) {
- return RESOLUTION_LEVEL_FINE;
- } else if (mContext.checkPermission(ACCESS_COARSE_LOCATION, pid, uid)
- == PERMISSION_GRANTED) {
- return RESOLUTION_LEVEL_COARSE;
- } else {
- return RESOLUTION_LEVEL_NONE;
- }
- }
-
- private int getCallerAllowedResolutionLevel() {
- return getAllowedResolutionLevel(Binder.getCallingPid(), Binder.getCallingUid());
- }
-
- private boolean checkCallingOrSelfLocationPermission() {
- return mContext.checkCallingOrSelfPermission(ACCESS_COARSE_LOCATION) == PERMISSION_GRANTED
- || mContext.checkCallingOrSelfPermission(ACCESS_FINE_LOCATION)
- == PERMISSION_GRANTED;
- }
-
- private void enforceCallingOrSelfLocationPermission() {
- if (checkCallingOrSelfLocationPermission()) {
- return;
- }
-
- throw new SecurityException("uid " + Binder.getCallingUid() + " does not have "
- + ACCESS_COARSE_LOCATION + " or " + ACCESS_FINE_LOCATION + ".");
- }
-
- private void enforceCallingOrSelfPackageName(String packageName) {
- int uid = Binder.getCallingUid();
- if (ArrayUtils.contains(mPackageManager.getPackagesForUid(uid), packageName)) {
- return;
- }
-
- throw new SecurityException("invalid package \"" + packageName + "\" for uid " + uid);
- }
-
- public static int resolutionLevelToOp(int allowedResolutionLevel) {
- if (allowedResolutionLevel != RESOLUTION_LEVEL_NONE) {
- if (allowedResolutionLevel == RESOLUTION_LEVEL_COARSE) {
- return AppOpsManager.OP_COARSE_LOCATION;
- } else {
- return AppOpsManager.OP_FINE_LOCATION;
- }
- }
- return -1;
- }
-
- private static String resolutionLevelToOpStr(int allowedResolutionLevel) {
- switch (allowedResolutionLevel) {
- case RESOLUTION_LEVEL_COARSE:
- return AppOpsManager.OPSTR_COARSE_LOCATION;
- case RESOLUTION_LEVEL_FINE:
- // fall through
- case RESOLUTION_LEVEL_NONE:
- // fall through
- default:
- // Use the most restrictive ops if not sure.
- return AppOpsManager.OPSTR_FINE_LOCATION;
- }
- }
-
- private boolean reportLocationAccessNoThrow(int pid, int uid, String packageName,
- @Nullable String featureId, int allowedResolutionLevel, @Nullable String message) {
- int op = resolutionLevelToOp(allowedResolutionLevel);
- if (op >= 0) {
- if (mAppOps.noteOpNoThrow(op, uid, packageName, featureId, message)
- != AppOpsManager.MODE_ALLOWED) {
- return false;
- }
- }
-
- return getAllowedResolutionLevel(pid, uid) >= allowedResolutionLevel;
- }
-
- private boolean checkLocationAccess(int pid, int uid, String packageName,
- int allowedResolutionLevel) {
- int op = resolutionLevelToOp(allowedResolutionLevel);
- if (op >= 0) {
- if (mAppOps.checkOp(op, uid, packageName) != AppOpsManager.MODE_ALLOWED) {
- return false;
- }
- }
-
- return getAllowedResolutionLevel(pid, uid) >= allowedResolutionLevel;
- }
-
- /**
- * Returns all providers by name, including passive and the ones that are not permitted to
- * be accessed by the calling activity or are currently disabled, but excluding fused.
- */
@Override
public List<String> getAllProviders() {
ArrayList<String> providers = new ArrayList<>(mProviderManagers.size());
@@ -1535,14 +1402,9 @@
return providers;
}
- /**
- * Return all providers by name, that match criteria and are optionally
- * enabled.
- * Can return passive provider, but never returns fused provider.
- */
@Override
public List<String> getProviders(Criteria criteria, boolean enabledOnly) {
- if (!checkCallingOrSelfLocationPermission()) {
+ if (!CallerIdentity.checkCallingOrSelfLocationPermission(mContext, PERMISSION_COARSE)) {
return Collections.emptyList();
}
@@ -1556,9 +1418,8 @@
if (enabledOnly && !manager.isEnabled(UserHandle.getCallingUserId())) {
continue;
}
- if (criteria != null
- && !android.location.LocationProvider.propertiesMeetCriteria(
- name, manager.getProperties(), criteria)) {
+ if (criteria != null && !LocationProvider.propertiesMeetCriteria(name,
+ manager.getProperties(), criteria)) {
continue;
}
providers.add(name);
@@ -1567,18 +1428,14 @@
}
}
- /**
- * Return the name of the best provider given a Criteria object.
- * This method has been deprecated from the public API,
- * and the whole LocationProvider (including #meetsCriteria)
- * has been deprecated as well. So this method now uses
- * some simplified logic.
- */
@Override
public String getBestProvider(Criteria criteria, boolean enabledOnly) {
- List<String> providers = getProviders(criteria, enabledOnly);
- if (providers.isEmpty()) {
- providers = getProviders(null, enabledOnly);
+ List<String> providers;
+ synchronized (mLock) {
+ providers = getProviders(criteria, enabledOnly);
+ if (providers.isEmpty()) {
+ providers = getProviders(null, enabledOnly);
+ }
}
if (!providers.isEmpty()) {
@@ -1601,7 +1458,7 @@
if (records != null) {
for (UpdateRecord record : records) {
if (!mUserInfoHelper.isCurrentUserId(
- UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) {
+ UserHandle.getUserId(record.mReceiver.mCallerIdentity.uid))) {
continue;
}
@@ -1658,20 +1515,17 @@
// initialize the low power mode to true and set to false if any of the records requires
providerRequest.setLowPowerMode(true);
for (UpdateRecord record : records) {
- int userId = UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid);
- if (!mUserInfoHelper.isCurrentUserId(userId)) {
+ CallerIdentity identity = record.mReceiver.mCallerIdentity;
+ if (!mUserInfoHelper.isCurrentUserId(identity.userId)) {
continue;
}
- if (!checkLocationAccess(
- record.mReceiver.mCallerIdentity.mPid,
- record.mReceiver.mCallerIdentity.mUid,
- record.mReceiver.mCallerIdentity.mPackageName,
- record.mReceiver.mAllowedResolutionLevel)) {
+
+ if (!mAppOpsHelper.checkLocationAccess(identity)) {
continue;
}
final boolean isBatterySaverDisablingLocation = shouldThrottleRequests
|| (isForegroundOnlyMode && !record.mIsForegroundUid);
- if (!manager.isEnabled(userId) || isBatterySaverDisablingLocation) {
+ if (!manager.isEnabled(identity.userId) || isBatterySaverDisablingLocation) {
if (isSettingsExempt(record)) {
providerRequest.setLocationSettingsIgnored(true);
providerRequest.setLowPowerMode(false);
@@ -1718,7 +1572,7 @@
long thresholdInterval = (providerRequest.getInterval() + 1000) * 3 / 2;
for (UpdateRecord record : records) {
if (mUserInfoHelper.isCurrentUserId(
- UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) {
+ UserHandle.getUserId(record.mReceiver.mCallerIdentity.uid))) {
LocationRequest locationRequest = record.mRequest;
// Don't assign battery blame for update records whose
@@ -1735,8 +1589,8 @@
// Assign blame to caller if there's no WorkSource associated with
// the request or if it's invalid.
providerRequest.getWorkSource().add(
- record.mReceiver.mCallerIdentity.mUid,
- record.mReceiver.mCallerIdentity.mPackageName);
+ record.mReceiver.mCallerIdentity.uid,
+ record.mReceiver.mCallerIdentity.packageName);
}
}
}
@@ -1759,8 +1613,8 @@
// For now, make sure callers have supplied an attribution tag for use with
// AppOpsManager. This might be relaxed in the future.
final List<WorkChain> workChains = workSource.getWorkChains();
- return workChains != null && !workChains.isEmpty() &&
- workChains.get(0).getAttributionTag() != null;
+ return workChains != null && !workChains.isEmpty()
+ && workChains.get(0).getAttributionTag() != null;
}
}
@@ -1775,16 +1629,16 @@
}
private boolean isThrottlingExempt(CallerIdentity callerIdentity) {
- if (callerIdentity.mUid == Process.SYSTEM_UID) {
+ if (callerIdentity.uid == Process.SYSTEM_UID) {
return true;
}
if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains(
- callerIdentity.mPackageName)) {
+ callerIdentity.packageName)) {
return true;
}
- return mLocalService.isProviderPackage(callerIdentity.mPackageName);
+ return mLocalService.isProvider(null, callerIdentity);
}
@@ -1794,12 +1648,11 @@
}
if (mSettingsHelper.getIgnoreSettingsPackageWhitelist().contains(
- record.mReceiver.mCallerIdentity.mPackageName)) {
+ record.mReceiver.mCallerIdentity.packageName)) {
return true;
}
- return mLocalService.isProviderPackage(record.mReceiver.mCallerIdentity.mPackageName);
-
+ return mLocalService.isProvider(null, record.mReceiver.mCallerIdentity);
}
private class UpdateRecord {
@@ -1821,9 +1674,9 @@
mRealRequest = request;
mRequest = request;
mReceiver = receiver;
- mIsForegroundUid = mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.mUid);
+ mIsForegroundUid = mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.uid);
- if (D && receiver.mCallerIdentity.mPid == Process.myPid()) {
+ if (D && receiver.mCallerIdentity.pid == Process.myPid()) {
mStackTrace = new Throwable();
}
@@ -1835,7 +1688,7 @@
// Update statistics for historical location requests by package/provider
mRequestStatistics.startRequesting(
- mReceiver.mCallerIdentity.mPackageName, mReceiver.mCallerIdentity.mFeatureId,
+ mReceiver.mCallerIdentity.packageName, mReceiver.mCallerIdentity.attributionTag,
provider, request.getInterval(), mIsForegroundUid);
}
@@ -1845,7 +1698,7 @@
private void updateForeground(boolean isForeground) {
mIsForegroundUid = isForeground;
mRequestStatistics.updateForeground(
- mReceiver.mCallerIdentity.mPackageName, mReceiver.mCallerIdentity.mFeatureId,
+ mReceiver.mCallerIdentity.packageName, mReceiver.mCallerIdentity.attributionTag,
mProvider, isForeground);
}
@@ -1853,19 +1706,19 @@
* Method to be called when a record will no longer be used.
*/
private void disposeLocked(boolean removeReceiver) {
- String packageName = mReceiver.mCallerIdentity.mPackageName;
- mRequestStatistics.stopRequesting(packageName, mReceiver.mCallerIdentity.mFeatureId,
+ CallerIdentity identity = mReceiver.mCallerIdentity;
+ mRequestStatistics.stopRequesting(identity.packageName, identity.attributionTag,
mProvider);
mLocationUsageLogger.logLocationApiUsage(
LocationStatsEnums.USAGE_ENDED,
LocationStatsEnums.API_REQUEST_LOCATION_UPDATES,
- packageName,
+ identity.packageName,
mRealRequest,
mReceiver.isListener(),
mReceiver.isPendingIntent(),
/* geofence= */ null,
- mAppForegroundHelper.getImportance(mReceiver.mCallerIdentity.mUid));
+ mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.uid));
// remove from mRecordsByProvider
ArrayList<UpdateRecord> globalRecords = mRecordsByProvider.get(this.mProvider);
@@ -1889,18 +1742,10 @@
public String toString() {
StringBuilder b = new StringBuilder("UpdateRecord[");
b.append(mProvider).append(" ");
- b.append(mReceiver.mCallerIdentity.mPackageName);
- String featureId = mReceiver.mCallerIdentity.mFeatureId;
- if (featureId != null) {
- b.append(" ").append(featureId).append(" ");
+ b.append(mReceiver.mCallerIdentity).append(" ");
+ if (!mIsForegroundUid) {
+ b.append("(background) ");
}
- b.append("(").append(mReceiver.mCallerIdentity.mUid);
- if (mIsForegroundUid) {
- b.append(" foreground");
- } else {
- b.append(" background");
- }
- b.append(") ");
b.append(mRealRequest).append(" ").append(mReceiver.mWorkSource);
if (mStackTrace != null) {
@@ -1915,14 +1760,13 @@
}
@GuardedBy("mLock")
- private Receiver getReceiverLocked(ILocationListener listener, int pid, int uid,
- String packageName, @Nullable String featureId, WorkSource workSource,
- boolean hideFromAppOps, @NonNull String listenerIdentifier) {
+ private Receiver getReceiverLocked(ILocationListener listener, CallerIdentity identity,
+ WorkSource workSource, boolean hideFromAppOps) {
IBinder binder = listener.asBinder();
Receiver receiver = mReceivers.get(binder);
- if (receiver == null) {
- receiver = new Receiver(listener, null, pid, uid, packageName, featureId, workSource,
- hideFromAppOps, listenerIdentifier);
+ if (receiver == null && identity != null) {
+ receiver = new Receiver(listener, null, identity, workSource,
+ hideFromAppOps);
if (!receiver.linkToListenerDeathNotificationLocked(
receiver.getListener().asBinder())) {
return null;
@@ -1933,13 +1777,12 @@
}
@GuardedBy("mLock")
- private Receiver getReceiverLocked(PendingIntent intent, int pid, int uid, String packageName,
- @Nullable String featureId, WorkSource workSource, boolean hideFromAppOps,
- @NonNull String listenerIdentifier) {
+ private Receiver getReceiverLocked(PendingIntent intent, CallerIdentity identity,
+ WorkSource workSource, boolean hideFromAppOps) {
Receiver receiver = mReceivers.get(intent);
- if (receiver == null) {
- receiver = new Receiver(null, intent, pid, uid, packageName, featureId, workSource,
- hideFromAppOps, listenerIdentifier);
+ if (receiver == null && identity != null) {
+ receiver = new Receiver(null, intent, identity, workSource,
+ hideFromAppOps);
mReceivers.put(intent, receiver);
}
return receiver;
@@ -1953,14 +1796,14 @@
* @return a version of request that meets the given resolution and consistency requirements
* @hide
*/
- private LocationRequest createSanitizedRequest(LocationRequest request, int resolutionLevel,
+ private LocationRequest createSanitizedRequest(LocationRequest request, CallerIdentity identity,
boolean callerHasLocationHardwarePermission) {
LocationRequest sanitizedRequest = new LocationRequest(request);
if (!callerHasLocationHardwarePermission) {
// allow setting low power mode only for callers with location hardware permission
sanitizedRequest.setLowPowerMode(false);
}
- if (resolutionLevel < RESOLUTION_LEVEL_FINE) {
+ if (identity.permissionLevel < PERMISSION_FINE) {
switch (sanitizedRequest.getQuality()) {
case LocationRequest.ACCURACY_FINE:
sanitizedRequest.setQuality(LocationRequest.ACCURACY_BLOCK);
@@ -1986,72 +1829,58 @@
@Override
public void requestLocationUpdates(LocationRequest request, ILocationListener listener,
- PendingIntent intent, String packageName, String featureId,
- String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
+ PendingIntent intent, String packageName, String attributionTag) {
+ if (request == null) {
+ request = DEFAULT_LOCATION_REQUEST;
+ }
- enforceCallingOrSelfLocationPermission();
- enforceCallingOrSelfPackageName(packageName);
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_COARSE);
+
+ WorkSource workSource = request.getWorkSource();
+ if (workSource != null && !workSource.isEmpty()) {
+ mContext.enforceCallingOrSelfPermission(
+ Manifest.permission.UPDATE_DEVICE_STATS, null);
+ }
+ boolean hideFromAppOps = request.getHideFromAppOps();
+ if (hideFromAppOps) {
+ mContext.enforceCallingOrSelfPermission(
+ Manifest.permission.UPDATE_APP_OPS_STATS, null);
+ }
+ if (request.isLocationSettingsIgnored()) {
+ mContext.enforceCallingOrSelfPermission(
+ Manifest.permission.WRITE_SECURE_SETTINGS, null);
+ }
+ boolean callerHasLocationHardwarePermission =
+ mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE)
+ == PERMISSION_GRANTED;
+ LocationRequest sanitizedRequest = createSanitizedRequest(request,
+ identity,
+ callerHasLocationHardwarePermission);
+
+ if (intent == null && listener == null) {
+ throw new IllegalArgumentException("need either listener or intent");
+ } else if (intent != null && listener != null) {
+ throw new IllegalArgumentException(
+ "cannot register both listener and intent");
+ }
+
+ mLocationUsageLogger.logLocationApiUsage(
+ LocationStatsEnums.USAGE_STARTED,
+ LocationStatsEnums.API_REQUEST_LOCATION_UPDATES,
+ packageName, request, listener != null, intent != null,
+ /* geofence= */ null,
+ mAppForegroundHelper.isAppForeground(identity.uid));
synchronized (mLock) {
- if (request == null) request = DEFAULT_LOCATION_REQUEST;
- int allowedResolutionLevel = getCallerAllowedResolutionLevel();
- WorkSource workSource = request.getWorkSource();
- if (workSource != null && !workSource.isEmpty()) {
- mContext.enforceCallingOrSelfPermission(
- Manifest.permission.UPDATE_DEVICE_STATS, null);
+ Receiver receiver;
+ if (intent != null) {
+ receiver = getReceiverLocked(intent, identity, workSource, hideFromAppOps);
+ } else {
+ receiver = getReceiverLocked(listener, identity, workSource, hideFromAppOps);
}
- boolean hideFromAppOps = request.getHideFromAppOps();
- if (hideFromAppOps) {
- mContext.enforceCallingOrSelfPermission(
- Manifest.permission.UPDATE_APP_OPS_STATS, null);
- }
- if (request.isLocationSettingsIgnored()) {
- mContext.enforceCallingOrSelfPermission(
- Manifest.permission.WRITE_SECURE_SETTINGS, null);
- }
- boolean callerHasLocationHardwarePermission =
- mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE)
- == PERMISSION_GRANTED;
- LocationRequest sanitizedRequest = createSanitizedRequest(request,
- allowedResolutionLevel,
- callerHasLocationHardwarePermission);
-
- final int pid = Binder.getCallingPid();
- final int uid = Binder.getCallingUid();
-
- long identity = Binder.clearCallingIdentity();
- try {
-
- // We don't check for MODE_IGNORED here; we will do that when we go to deliver
- // a location.
- checkLocationAccess(pid, uid, packageName, allowedResolutionLevel);
-
- if (intent == null && listener == null) {
- throw new IllegalArgumentException("need either listener or intent");
- } else if (intent != null && listener != null) {
- throw new IllegalArgumentException(
- "cannot register both listener and intent");
- }
-
- mLocationUsageLogger.logLocationApiUsage(
- LocationStatsEnums.USAGE_STARTED,
- LocationStatsEnums.API_REQUEST_LOCATION_UPDATES,
- packageName, request, listener != null, intent != null,
- /* geofence= */ null,
- mAppForegroundHelper.getImportance(uid));
-
- Receiver receiver;
- if (intent != null) {
- receiver = getReceiverLocked(intent, pid, uid, packageName, featureId,
- workSource, hideFromAppOps, listenerIdentifier);
- } else {
- receiver = getReceiverLocked(listener, pid, uid, packageName, featureId,
- workSource, hideFromAppOps, listenerIdentifier);
- }
+ if (receiver != null) {
requestLocationUpdatesLocked(sanitizedRequest, receiver);
- } finally {
- Binder.restoreCallingIdentity(identity);
}
}
}
@@ -2078,28 +1907,27 @@
oldRecord.disposeLocked(false);
}
- int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid);
- if (!manager.isEnabled(userId) && !isSettingsExempt(record)) {
- // Notify the listener that updates are currently disabled - but only if the request
- // does not ignore location settings
- receiver.callProviderEnabledLocked(name, false);
+ long identity = Binder.clearCallingIdentity();
+ try {
+ int userId = UserHandle.getUserId(receiver.mCallerIdentity.uid);
+ if (!manager.isEnabled(userId) && !isSettingsExempt(record)) {
+ // Notify the listener that updates are currently disabled - but only if the request
+ // does not ignore location settings
+ receiver.callProviderEnabledLocked(name, false);
+ }
+
+ applyRequirementsLocked(name);
+
+ // Update the monitoring here just in case multiple location requests were added to the
+ // same receiver (this request may be high power and the initial might not have been).
+ receiver.updateMonitoring(true);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
}
-
- applyRequirementsLocked(name);
-
- // Update the monitoring here just in case multiple location requests were added to the
- // same receiver (this request may be high power and the initial might not have been).
- receiver.updateMonitoring(true);
}
@Override
- public void removeUpdates(ILocationListener listener, PendingIntent intent,
- String packageName) {
- enforceCallingOrSelfPackageName(packageName);
-
- int pid = Binder.getCallingPid();
- int uid = Binder.getCallingUid();
-
+ public void removeUpdates(ILocationListener listener, PendingIntent intent) {
if (intent == null && listener == null) {
throw new IllegalArgumentException("need either listener or intent");
} else if (intent != null && listener != null) {
@@ -2109,17 +1937,13 @@
synchronized (mLock) {
Receiver receiver;
if (intent != null) {
- receiver = getReceiverLocked(intent, pid, uid, packageName, null, null, false, "");
+ receiver = getReceiverLocked(intent, null, null, false);
} else {
- receiver = getReceiverLocked(listener, pid, uid, packageName, null, null, false,
- "");
+ receiver = getReceiverLocked(listener, null, null, false);
}
- long identity = Binder.clearCallingIdentity();
- try {
+ if (receiver != null) {
removeUpdatesLocked(receiver);
- } finally {
- Binder.restoreCallingIdentity(identity);
}
}
}
@@ -2156,30 +1980,21 @@
}
@Override
- public Location getLastLocation(LocationRequest request, String packageName, String featureId) {
+ public Location getLastLocation(LocationRequest request, String packageName,
+ String attributionTag) {
if (request == null) {
request = DEFAULT_LOCATION_REQUEST;
}
- enforceCallingOrSelfLocationPermission();
- enforceCallingOrSelfPackageName(packageName);
+ // unsafe is ok because app ops will verify the package name
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName,
+ attributionTag);
+ identity.enforceLocationPermission(PERMISSION_COARSE);
- int allowedResolutionLevel = getCallerAllowedResolutionLevel();
- if (!reportLocationAccessNoThrow(Binder.getCallingPid(), Binder.getCallingUid(),
- packageName, featureId, allowedResolutionLevel, null)) {
- if (D) {
- Log.d(TAG, "not returning last loc for no op app: " + packageName);
- }
+ if (mSettingsHelper.isLocationPackageBlacklisted(identity.userId, identity.packageName)) {
return null;
}
-
- int userId = UserHandle.getCallingUserId();
-
- if (mSettingsHelper.isLocationPackageBlacklisted(userId, packageName)) {
- return null;
- }
-
- if (!mUserInfoHelper.isCurrentUserId(userId)) {
+ if (!mUserInfoHelper.isCurrentUserId(identity.userId)) {
return null;
}
@@ -2188,42 +2003,28 @@
if (manager == null) {
return null;
}
-
- if (!manager.isEnabled(userId) && !request.isLocationSettingsIgnored()) {
+ if (!manager.isEnabled(identity.userId) && !request.isLocationSettingsIgnored()) {
return null;
}
- Location location;
- if (allowedResolutionLevel < RESOLUTION_LEVEL_FINE) {
- location = manager.getLastCoarseLocation(userId);
- } else {
- location = manager.getLastFineLocation(userId);
- }
- if (location == null) {
+ // appops check should always be right before delivery
+ if (!mAppOpsHelper.noteLocationAccess(identity)) {
return null;
}
- // Don't return stale location to apps with foreground-only location permission.
- String op = resolutionLevelToOpStr(allowedResolutionLevel);
- long locationAgeMs = NANOSECONDS.toMillis(
- SystemClock.elapsedRealtime() - location.getElapsedRealtimeNanos());
- if (locationAgeMs > mSettingsHelper.getMaxLastLocationAgeMs()
- && (mAppOps.unsafeCheckOp(op, Binder.getCallingUid(), packageName)
- == AppOpsManager.MODE_FOREGROUND)) {
- return null;
- }
+ Location location = manager.getLastLocation(identity.userId, identity.permissionLevel);
// make a defensive copy - the client could be in the same process as us
- return new Location(location);
+ return location != null ? new Location(location) : null;
}
}
@Override
public boolean getCurrentLocation(LocationRequest locationRequest,
ICancellationSignal remoteCancellationSignal, ILocationListener listener,
- String packageName, String featureId, String listenerIdentifier) {
+ String packageName, String attributionTag) {
// side effect of validating locationRequest and packageName
- Location lastLocation = getLastLocation(locationRequest, packageName, featureId);
+ Location lastLocation = getLastLocation(locationRequest, packageName, attributionTag);
if (lastLocation != null) {
long locationAgeMs = NANOSECONDS.toMillis(
SystemClock.elapsedRealtimeNanos() - lastLocation.getElapsedRealtimeNanos());
@@ -2246,13 +2047,12 @@
}
}
- requestLocationUpdates(locationRequest, listener, null, packageName, featureId,
- listenerIdentifier);
+ requestLocationUpdates(locationRequest, listener, null, packageName, attributionTag);
CancellationSignal cancellationSignal = CancellationSignal.fromTransport(
remoteCancellationSignal);
if (cancellationSignal != null) {
cancellationSignal.setOnCancelListener(
- () -> removeUpdates(listener, null, packageName));
+ () -> removeUpdates(listener, null));
}
return true;
}
@@ -2265,14 +2065,14 @@
return null;
}
- Location location = gpsManager.getLastFineLocation(UserHandle.getCallingUserId());
+ Location location = gpsManager.getLastLocation(UserHandle.getCallingUserId(),
+ PERMISSION_FINE);
if (location == null) {
return null;
}
long currentNanos = SystemClock.elapsedRealtimeNanos();
- long deltaMs = NANOSECONDS.toMillis(
- currentNanos - location.getElapsedRealtimeNanos());
+ long deltaMs = NANOSECONDS.toMillis(location.getElapsedRealtimeAgeNanos(currentNanos));
return new LocationTime(location.getTime() + deltaMs, currentNanos);
}
}
@@ -2295,32 +2095,27 @@
@Override
public void requestGeofence(LocationRequest request, Geofence geofence, PendingIntent intent,
- String packageName, String featureId, String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
-
- mContext.enforceCallingOrSelfPermission(ACCESS_FINE_LOCATION, null);
- enforceCallingOrSelfPackageName(packageName);
-
- if (request == null) request = DEFAULT_LOCATION_REQUEST;
- int allowedResolutionLevel = getCallerAllowedResolutionLevel();
- if (intent == null) {
- throw new IllegalArgumentException("invalid pending intent: " + null);
+ String packageName, String attributionTag) {
+ if (request == null) {
+ request = DEFAULT_LOCATION_REQUEST;
}
- // Require that caller can manage given document
+
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_COARSE);
+
+ Objects.requireNonNull(intent);
+
boolean callerHasLocationHardwarePermission =
mContext.checkCallingPermission(android.Manifest.permission.LOCATION_HARDWARE)
== PERMISSION_GRANTED;
- LocationRequest sanitizedRequest = createSanitizedRequest(request,
- allowedResolutionLevel,
+ LocationRequest sanitizedRequest = createSanitizedRequest(request, identity,
callerHasLocationHardwarePermission);
if (D) {
Log.d(TAG, "requestGeofence: " + sanitizedRequest + " " + geofence + " " + intent);
}
- // geo-fence manager uses the public location API, need to clear identity
- int uid = Binder.getCallingUid();
- if (UserHandle.getUserId(uid) != UserHandle.USER_SYSTEM) {
+ if (identity.userId != UserHandle.USER_SYSTEM) {
// temporary measure until geofences work for secondary users
Log.w(TAG, "proximity alerts are currently available only to the primary user");
return;
@@ -2334,15 +2129,9 @@
/* hasListener= */ false,
true,
geofence,
- mAppForegroundHelper.getImportance(uid));
+ mAppForegroundHelper.isAppForeground(identity.uid));
- long identity = Binder.clearCallingIdentity();
- try {
- mGeofenceManager.addFence(sanitizedRequest, geofence, intent, allowedResolutionLevel,
- uid, packageName, featureId, listenerIdentifier);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
+ mGeofenceManager.addFence(sanitizedRequest, geofence, intent, identity);
}
@Override
@@ -2350,7 +2139,6 @@
if (intent == null) {
throw new IllegalArgumentException("invalid pending intent: " + null);
}
- enforceCallingOrSelfPackageName(packageName);
if (D) Log.d(TAG, "removeGeofence: " + geofence + " " + intent);
@@ -2362,7 +2150,7 @@
/* hasListener= */ false,
true,
geofence,
- mAppForegroundHelper.getImportance(Binder.getCallingUid()));
+ mAppForegroundHelper.isAppForeground(Binder.getCallingUid()));
// geo-fence manager uses the public location API, need to clear identity
long identity = Binder.clearCallingIdentity();
@@ -2374,26 +2162,27 @@
}
@Override
- public boolean registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
- String featureId) {
- return mGnssManagerService != null && mGnssManagerService.registerGnssStatusCallback(
- listener, packageName, featureId);
+ public void registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
+ String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.registerGnssStatusCallback(listener, packageName, attributionTag);
+ }
}
@Override
public void unregisterGnssStatusCallback(IGnssStatusListener listener) {
- if (mGnssManagerService != null) mGnssManagerService.unregisterGnssStatusCallback(listener);
+ if (mGnssManagerService != null) {
+ mGnssManagerService.unregisterGnssStatusCallback(listener);
+ }
}
@Override
- public boolean addGnssMeasurementsListener(@Nullable GnssRequest request,
- IGnssMeasurementsListener listener,
- String packageName, String featureId,
- String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
-
- return mGnssManagerService != null && mGnssManagerService.addGnssMeasurementsListener(
- request, listener, packageName, featureId, listenerIdentifier);
+ public void addGnssMeasurementsListener(@Nullable GnssRequest request,
+ IGnssMeasurementsListener listener, String packageName, String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.addGnssMeasurementsListener(request, listener, packageName,
+ attributionTag);
+ }
}
@Override
@@ -2414,18 +2203,17 @@
}
@Override
- public long getGnssCapabilities(String packageName) {
- return mGnssManagerService == null ? 0L : mGnssManagerService.getGnssCapabilities(
- packageName);
+ public long getGnssCapabilities() {
+ return mGnssManagerService == null ? GnssCapabilities.INVALID_CAPABILITIES
+ : mGnssManagerService.getGnssCapabilities();
}
@Override
- public boolean addGnssAntennaInfoListener(IGnssAntennaInfoListener listener,
- String packageName, String featureId, String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
-
- return mGnssManagerService != null && mGnssManagerService.addGnssAntennaInfoListener(
- listener, packageName, featureId, listenerIdentifier);
+ public void addGnssAntennaInfoListener(IGnssAntennaInfoListener listener,
+ String packageName, String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.addGnssAntennaInfoListener(listener, packageName, attributionTag);
+ }
}
@Override
@@ -2436,12 +2224,12 @@
}
@Override
- public boolean addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
- String packageName, String featureId, String listenerIdentifier) {
- Objects.requireNonNull(listenerIdentifier);
-
- return mGnssManagerService != null && mGnssManagerService.addGnssNavigationMessageListener(
- listener, packageName, featureId, listenerIdentifier);
+ public void addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
+ String packageName, String attributionTag) {
+ if (mGnssManagerService != null) {
+ mGnssManagerService.addGnssNavigationMessageListener(listener, packageName,
+ attributionTag);
+ }
}
@Override
@@ -2453,29 +2241,27 @@
}
@Override
- public boolean sendExtraCommand(String providerName, String command, Bundle extras) {
- Objects.requireNonNull(providerName);
- Objects.requireNonNull(command);
-
+ public boolean sendExtraCommand(String provider, String command, Bundle extras) {
+ CallerIdentity.enforceCallingOrSelfLocationPermission(mContext, PERMISSION_COARSE);
mContext.enforceCallingOrSelfPermission(
Manifest.permission.ACCESS_LOCATION_EXTRA_COMMANDS, null);
- enforceCallingOrSelfLocationPermission();
+
+ LocationProviderManager manager = getLocationProviderManager(
+ Objects.requireNonNull(provider));
+ if (manager != null) {
+ manager.sendExtraCommand(Binder.getCallingUid(), Binder.getCallingPid(),
+ Objects.requireNonNull(command), extras);
+ }
mLocationUsageLogger.logLocationApiUsage(
LocationStatsEnums.USAGE_STARTED,
LocationStatsEnums.API_SEND_EXTRA_COMMAND,
- providerName);
-
- LocationProviderManager manager = getLocationProviderManager(providerName);
- if (manager != null) {
- manager.sendExtraCommand(Binder.getCallingUid(), Binder.getCallingPid(), command,
- extras);
- }
+ provider);
mLocationUsageLogger.logLocationApiUsage(
LocationStatsEnums.USAGE_ENDED,
LocationStatsEnums.API_SEND_EXTRA_COMMAND,
- providerName);
+ provider);
return true;
}
@@ -2490,16 +2276,40 @@
}
@Override
- public boolean isProviderPackage(String packageName) {
+ public boolean isProviderPackage(String provider, String packageName) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null);
- return mLocalService.isProviderPackage(packageName);
+
+ for (LocationProviderManager manager : mProviderManagers) {
+ if (provider != null && !provider.equals(manager.getName())) {
+ continue;
+ }
+ CallerIdentity identity = manager.getProviderIdentity();
+ if (identity == null) {
+ continue;
+ }
+ if (identity.packageName.equals(packageName)) {
+ return true;
+ }
+ }
+
+ return false;
}
@Override
- public List<String> getProviderPackages(String providerName) {
+ public List<String> getProviderPackages(String provider) {
mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null);
- LocationProviderManager manager = getLocationProviderManager(providerName);
- return manager == null ? Collections.emptyList() : new ArrayList<>(manager.getPackages());
+
+ LocationProviderManager manager = getLocationProviderManager(provider);
+ if (manager == null) {
+ return Collections.emptyList();
+ }
+
+ CallerIdentity identity = manager.getProviderIdentity();
+ if (identity == null) {
+ return Collections.emptyList();
+ }
+
+ return Collections.singletonList(identity.packageName);
}
@Override
@@ -2537,12 +2347,10 @@
@Override
public void setLocationEnabledForUser(boolean enabled, int userId) {
- if (UserHandle.getCallingUserId() != userId) {
- mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS,
- null);
- }
- mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS,
- "Requires WRITE_SECURE_SETTINGS permission");
+ userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
+ userId, false, false, "setLocationEnabledForUser", null);
+
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS, null);
LocationManager.invalidateLocalLocationEnabledCaches();
mSettingsHelper.setLocationEnabled(enabled, userId);
@@ -2557,9 +2365,6 @@
@Override
public boolean isProviderEnabledForUser(String provider, int userId) {
- userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
- userId, false, false, "isProviderEnabledForUser", null);
-
// Fused provider is accessed indirectly via criteria rather than the provider-based APIs,
// so we discourage its use
if (FUSED_PROVIDER.equals(provider)) return false;
@@ -2601,7 +2406,7 @@
}
@GuardedBy("mLock")
- private void handleLocationChangedLocked(LocationProviderManager manager, Location location,
+ private void handleLocationChangedLocked(LocationProviderManager manager, Location fineLocation,
Location coarseLocation) {
if (!mProviderManagers.contains(manager)) {
Log.w(TAG, "received location from unknown provider: " + manager.getName());
@@ -2610,7 +2415,7 @@
// notify passive provider
if (manager != mPassiveManager) {
- mPassiveManager.updateLocation(location);
+ mPassiveManager.updateLocation(fineLocation);
}
long now = SystemClock.elapsedRealtime();
@@ -2624,59 +2429,45 @@
// Broadcast location to all listeners
for (UpdateRecord r : records) {
Receiver receiver = r.mReceiver;
+ CallerIdentity identity = receiver.mCallerIdentity;
boolean receiverDead = false;
- int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid);
- if (!manager.isEnabled(userId) && !isSettingsExempt(r)) {
+ if (!manager.isEnabled(identity.userId) && !isSettingsExempt(r)) {
continue;
}
- if (!mUserInfoHelper.isCurrentUserId(userId)
- && !isProviderPackage(receiver.mCallerIdentity.mPackageName)) {
- if (D) {
- Log.d(TAG, "skipping loc update for background user " + userId
- + " (app: " + receiver.mCallerIdentity.mPackageName + ")");
- }
+ if (!mUserInfoHelper.isCurrentUserId(identity.userId)
+ && !mLocalService.isProvider(null, identity)) {
continue;
}
- if (mSettingsHelper.isLocationPackageBlacklisted(userId,
- receiver.mCallerIdentity.mPackageName)) {
- if (D) {
- Log.d(TAG, "skipping loc update for blacklisted app: " +
- receiver.mCallerIdentity.mPackageName);
- }
+ if (mSettingsHelper.isLocationPackageBlacklisted(identity.userId,
+ identity.packageName)) {
continue;
}
- Location notifyLocation;
- if (receiver.mAllowedResolutionLevel < RESOLUTION_LEVEL_FINE) {
- notifyLocation = coarseLocation; // use coarse location
- } else {
- notifyLocation = location; // use fine location
+ Location location;
+ switch (identity.permissionLevel) {
+ case PERMISSION_COARSE:
+ location = coarseLocation;
+ break;
+ case PERMISSION_FINE:
+ location = fineLocation;
+ break;
+ default:
+ throw new AssertionError();
}
- if (shouldBroadcastSafeLocked(notifyLocation, r.mLastFixBroadcast, r, now)) {
- r.mLastFixBroadcast = notifyLocation;
- // Report location access before delivering location to the client. This will
- // note location delivery to appOps, so it should be called only when a
- // location is really being delivered to the client.
- if (!reportLocationAccessNoThrow(
- receiver.mCallerIdentity.mPid,
- receiver.mCallerIdentity.mUid,
- receiver.mCallerIdentity.mPackageName,
- receiver.mCallerIdentity.mFeatureId,
- receiver.mAllowedResolutionLevel,
- "Location sent to " + receiver.mCallerIdentity.mListenerIdentifier)) {
- if (D) {
- Log.d(TAG, "skipping loc update for no op app: "
- + receiver.mCallerIdentity.mPackageName);
- }
+
+ if (shouldBroadcastSafeLocked(location, r.mLastFixBroadcast, r, now)) {
+ r.mLastFixBroadcast = location;
+
+ // appops check should always be right before delivery
+ if (!mAppOpsHelper.noteLocationAccess(receiver.mCallerIdentity)) {
continue;
}
- if (!receiver.callLocationChangedLocked(notifyLocation)) {
- Log.w(TAG, "RemoteException calling onLocationChanged on "
- + receiver);
+
+ if (!receiver.callLocationChangedLocked(location)) {
receiverDead = true;
}
r.mRealRequest.decrementNumUpdates();
@@ -2724,37 +2515,48 @@
}
@Override
- public String getFromLocation(double latitude, double longitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
+ public void getFromLocation(double latitude, double longitude, int maxResults,
+ GeocoderParams params, IGeocodeListener listener) {
if (mGeocodeProvider != null) {
- return mGeocodeProvider.getFromLocation(latitude, longitude, maxResults,
- params, addrs);
+ mGeocodeProvider.getFromLocation(latitude, longitude, maxResults,
+ params, listener);
+ } else {
+ try {
+ listener.onResults(null, Collections.emptyList());
+ } catch (RemoteException e) {
+ // ignore
+ }
}
- return null;
}
-
@Override
- public String getFromLocationName(String locationName,
+ public void getFromLocationName(String locationName,
double lowerLeftLatitude, double lowerLeftLongitude,
double upperRightLatitude, double upperRightLongitude, int maxResults,
- GeocoderParams params, List<Address> addrs) {
+ GeocoderParams params, IGeocodeListener listener) {
if (mGeocodeProvider != null) {
- return mGeocodeProvider.getFromLocationName(locationName, lowerLeftLatitude,
+ mGeocodeProvider.getFromLocationName(locationName, lowerLeftLatitude,
lowerLeftLongitude, upperRightLatitude, upperRightLongitude,
- maxResults, params, addrs);
+ maxResults, params, listener);
+ } else {
+ try {
+ listener.onResults(null, Collections.emptyList());
+ } catch (RemoteException e) {
+ // ignore
+ }
}
- return null;
}
// Mock Providers
@Override
public void addTestProvider(String provider, ProviderProperties properties,
- String packageName) {
- if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
- != AppOpsManager.MODE_ALLOWED) {
+ String packageName, String attributionTag) {
+ // unsafe is ok because app ops will verify the package name
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName,
+ attributionTag);
+ if (!mAppOpsHelper.noteMockLocationAccess(identity)) {
return;
}
@@ -2770,9 +2572,11 @@
}
@Override
- public void removeTestProvider(String provider, String packageName) {
- if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
- != AppOpsManager.MODE_ALLOWED) {
+ public void removeTestProvider(String provider, String packageName, String attributionTag) {
+ // unsafe is ok because app ops will verify the package name
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName,
+ attributionTag);
+ if (!mAppOpsHelper.noteMockLocationAccess(identity)) {
return;
}
@@ -2790,15 +2594,18 @@
}
@Override
- public void setTestProviderLocation(String provider, Location location, String packageName) {
- Preconditions.checkArgument(location.isComplete(),
- "incomplete location object, missing timestamp or accuracy?");
-
- if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
- != AppOpsManager.MODE_ALLOWED) {
+ public void setTestProviderLocation(String provider, Location location, String packageName,
+ String attributionTag) {
+ // unsafe is ok because app ops will verify the package name
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName,
+ attributionTag);
+ if (!mAppOpsHelper.noteMockLocationAccess(identity)) {
return;
}
+ Preconditions.checkArgument(location.isComplete(),
+ "incomplete location object, missing timestamp or accuracy?");
+
LocationProviderManager manager = getLocationProviderManager(provider);
if (manager == null) {
throw new IllegalArgumentException("provider doesn't exist: " + provider);
@@ -2808,9 +2615,12 @@
}
@Override
- public void setTestProviderEnabled(String provider, boolean enabled, String packageName) {
- if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
- != AppOpsManager.MODE_ALLOWED) {
+ public void setTestProviderEnabled(String provider, boolean enabled, String packageName,
+ String attributionTag) {
+ // unsafe is ok because app ops will verify the package name
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext, packageName,
+ attributionTag);
+ if (!mAppOpsHelper.noteMockLocationAccess(identity)) {
return;
}
@@ -2824,12 +2634,8 @@
@Override
@NonNull
- public List<LocationRequest> getTestProviderCurrentRequests(String provider,
- String packageName) {
- if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
- != AppOpsManager.MODE_ALLOWED) {
- return Collections.emptyList();
- }
+ public List<LocationRequest> getTestProviderCurrentRequests(String provider) {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null);
LocationProviderManager manager = getLocationProviderManager(provider);
if (manager == null) {
@@ -2847,12 +2653,12 @@
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
- synchronized (mLock) {
- if (mGnssManagerService != null && args.length > 0 && args[0].equals("--gnssmetrics")) {
- mGnssManagerService.dump(fd, pw, args);
- return;
- }
+ if (mGnssManagerService != null && args.length > 0 && args[0].equals("--gnssmetrics")) {
+ mGnssManagerService.dump(fd, pw, args);
+ return;
+ }
+ synchronized (mLock) {
ipw.println("Location Manager State:");
ipw.increaseIndent();
ipw.print("Current System Time: "
@@ -2925,37 +2731,42 @@
}
ipw.decreaseIndent();
- synchronized (mLock) {
- if (mGnssManagerService != null) {
- ipw.println("GNSS:");
- ipw.increaseIndent();
- mGnssManagerService.dump(fd, ipw, args);
- ipw.decreaseIndent();
- }
+ if (mGnssManagerService != null) {
+ ipw.println("GNSS Manager:");
+ ipw.increaseIndent();
+ mGnssManagerService.dump(fd, ipw, args);
+ ipw.decreaseIndent();
}
}
private class LocalService extends LocationManagerInternal {
+ LocalService() {}
+
@Override
public boolean isProviderEnabledForUser(@NonNull String provider, int userId) {
- synchronized (mLock) {
- LocationProviderManager manager = getLocationProviderManager(provider);
- if (manager == null) {
- return false;
- }
+ userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(),
+ Binder.getCallingUid(), userId, false, false, "isProviderEnabledForUser", null);
- return manager.isEnabled(userId);
+ LocationProviderManager manager = getLocationProviderManager(provider);
+ if (manager == null) {
+ return false;
}
+
+ return manager.isEnabled(userId);
}
@Override
- public boolean isProviderPackage(String packageName) {
+ public boolean isProvider(String provider, CallerIdentity identity) {
for (LocationProviderManager manager : mProviderManagers) {
- if (manager.getPackages().contains(packageName)) {
+ if (provider != null && !provider.equals(manager.getName())) {
+ continue;
+ }
+ if (identity.equals(manager.getProviderIdentity())) {
return true;
}
}
+
return false;
}
diff --git a/services/core/java/com/android/server/location/LocationManagerServiceUtils.java b/services/core/java/com/android/server/location/LocationManagerServiceUtils.java
new file mode 100644
index 0000000..b9d86c8
--- /dev/null
+++ b/services/core/java/com/android/server/location/LocationManagerServiceUtils.java
@@ -0,0 +1,73 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location;
+
+import android.annotation.NonNull;
+import android.location.util.identity.CallerIdentity;
+import android.os.IBinder;
+import android.os.RemoteException;
+
+import java.util.NoSuchElementException;
+
+/**
+ * Shared utilities for LocationManagerService and GnssManager.
+ */
+public class LocationManagerServiceUtils {
+
+ /**
+ * Skeleton class of listener that can be linked to a binder.
+ */
+ public abstract static class LinkedListenerBase implements IBinder.DeathRecipient {
+ protected final CallerIdentity mCallerIdentity;
+
+ LinkedListenerBase(@NonNull CallerIdentity callerIdentity) {
+ mCallerIdentity = callerIdentity;
+ }
+
+ @Override
+ public String toString() {
+ return mCallerIdentity.toString();
+ }
+
+ public CallerIdentity getCallerIdentity() {
+ return mCallerIdentity;
+ }
+
+ /**
+ * Link listener (i.e. callback) to a binder, so that it will be called upon binder's death.
+ */
+ public boolean linkToListenerDeathNotificationLocked(IBinder binder) {
+ try {
+ binder.linkToDeath(this, 0 /* flags */);
+ return true;
+ } catch (RemoteException e) {
+ return false;
+ }
+ }
+
+ /**
+ * Unlink death listener (i.e. callback) from binder.
+ */
+ public void unlinkFromListenerDeathNotificationLocked(IBinder binder) {
+ try {
+ binder.unlinkToDeath(this, 0 /* flags */);
+ } catch (NoSuchElementException e) {
+ // ignore
+ }
+ }
+ }
+}
diff --git a/services/core/java/com/android/server/location/LocationPermissionUtil.java b/services/core/java/com/android/server/location/LocationPermissionUtil.java
deleted file mode 100644
index 4465f31..0000000
--- a/services/core/java/com/android/server/location/LocationPermissionUtil.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2019 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.location;
-
-import android.content.Context;
-import android.content.pm.PackageManager;
-
-/**
- * Encapsulates utility functions and classes related to location permission checking.
- */
-public final class LocationPermissionUtil {
- /**
- * Returns true if the calling process identified by {@code callerIdentity} is enabled to
- * report location to AppOps service before providing device location identifiable information
- * to its clients. Packages with these permissions must report any reporting of location
- * information to apps, via AppOps.
- *
- * <p>The calling package represented by {@code callerIdentity} is considered a part of the
- * extended Location Manager Service if it has all of the permissions below.
- * <ul>
- * <li>{@link android.Manifest.permission#LOCATION_HARDWARE}
- * <li>{@link android.Manifest.permission#UPDATE_APP_OPS_STATS}
- * </ul>
- *
- * <p>Any package with these permissions, that passes along location information from Android
- * framework to apps, must report to AppOps, similarly to Location Manager Service - i.e.
- * whenever it reports device location or location identifiable information such as
- * GNSS status, GNSS measurements, etc. to its clients.
- */
- public static boolean doesCallerReportToAppOps(Context context, CallerIdentity callerIdentity) {
- return hasPermissionLocationHardware(context, callerIdentity)
- && hasPermissionUpdateAppOpsStats(context, callerIdentity);
- }
-
- private static boolean hasPermissionLocationHardware(Context context,
- CallerIdentity callerIdentity) {
- return context.checkPermission(android.Manifest.permission.LOCATION_HARDWARE,
- callerIdentity.mPid, callerIdentity.mUid) == PackageManager.PERMISSION_GRANTED;
- }
-
- private static boolean hasPermissionUpdateAppOpsStats(Context context,
- CallerIdentity callerIdentity) {
- return context.checkPermission(android.Manifest.permission.UPDATE_APP_OPS_STATS,
- callerIdentity.mPid, callerIdentity.mUid) == PackageManager.PERMISSION_GRANTED;
- }
-
- private LocationPermissionUtil() {}
-}
diff --git a/services/core/java/com/android/server/location/LocationProviderProxy.java b/services/core/java/com/android/server/location/LocationProviderProxy.java
index 87208a7..696b571 100644
--- a/services/core/java/com/android/server/location/LocationProviderProxy.java
+++ b/services/core/java/com/android/server/location/LocationProviderProxy.java
@@ -16,20 +16,16 @@
package com.android.server.location;
-import static android.content.pm.PackageManager.MATCH_SYSTEM_ONLY;
-
import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
import android.annotation.Nullable;
import android.content.ComponentName;
import android.content.Context;
-import android.content.pm.PackageManager;
import android.location.Location;
+import android.location.util.identity.CallerIdentity;
import android.os.Bundle;
import android.os.IBinder;
import android.os.RemoteException;
-import android.util.ArraySet;
-import android.util.Log;
import com.android.internal.annotations.GuardedBy;
import com.android.internal.location.ILocationProvider;
@@ -41,18 +37,12 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.Collections;
-import java.util.List;
/**
* Proxy for ILocationProvider implementations.
*/
public class LocationProviderProxy extends AbstractLocationProvider {
- private static final String TAG = "LocationProviderProxy";
-
- private static final int MAX_ADDITIONAL_PACKAGES = 2;
-
/**
* Creates and registers this proxy. If no suitable service is available for the proxy, returns
* null.
@@ -69,76 +59,13 @@
}
}
- private final ILocationProviderManager.Stub mManager = new ILocationProviderManager.Stub() {
- // executed on binder thread
- @Override
- public void onSetAdditionalProviderPackages(List<String> packageNames) {
- int maxCount = Math.min(MAX_ADDITIONAL_PACKAGES, packageNames.size());
- ArraySet<String> allPackages = new ArraySet<>(maxCount + 1);
- for (String packageName : packageNames) {
- if (packageNames.size() >= maxCount) {
- return;
- }
+ final Object mLock = new Object();
- try {
- mContext.getPackageManager().getPackageInfo(packageName, MATCH_SYSTEM_ONLY);
- allPackages.add(packageName);
- } catch (PackageManager.NameNotFoundException e) {
- Log.w(TAG, mServiceWatcher + " specified unknown additional provider package: "
- + packageName);
- }
- }
-
- synchronized (mLock) {
- if (!mBound) {
- return;
- }
-
- // add the binder package
- ComponentName service = mServiceWatcher.getBoundService().component;
- if (service != null) {
- allPackages.add(service.getPackageName());
- }
-
- setPackageNames(allPackages);
- }
- }
-
- // executed on binder thread
- @Override
- public void onSetAllowed(boolean allowed) {
- synchronized (mLock) {
- if (mBound) {
- setAllowed(allowed);
- }
- }
- }
-
- // executed on binder thread
- @Override
- public void onSetProperties(ProviderProperties properties) {
- synchronized (mLock) {
- if (mBound) {
- setProperties(properties);
- }
- }
- }
-
- // executed on binder thread
- @Override
- public void onReportLocation(Location location) {
- reportLocation(location);
- }
- };
-
- // also used to synchronized any state changes (setEnabled, setProperties, setState, etc)
- private final Object mLock = new Object();
-
- private final Context mContext;
- private final ServiceWatcher mServiceWatcher;
+ final Context mContext;
+ final ServiceWatcher mServiceWatcher;
@GuardedBy("mLock")
- private boolean mBound;
+ Proxy mProxy;
private volatile ProviderRequest mRequest;
@@ -146,13 +73,13 @@
int nonOverlayPackageResId) {
// safe to use direct executor since our locks are not acquired in a code path invoked by
// our owning provider
- super(DIRECT_EXECUTOR, Collections.emptySet());
+ super(DIRECT_EXECUTOR);
mContext = context;
mServiceWatcher = new ServiceWatcher(context, FgThread.getHandler(), action, this::onBind,
this::onUnbind, enableOverlayResId, nonOverlayPackageResId);
- mBound = false;
+ mProxy = null;
mRequest = ProviderRequest.EMPTY_REQUEST;
}
@@ -164,25 +91,19 @@
ILocationProvider provider = ILocationProvider.Stub.asInterface(binder);
synchronized (mLock) {
- mBound = true;
-
- provider.setLocationProviderManager(mManager);
+ mProxy = new Proxy();
+ provider.setLocationProviderManager(mProxy);
ProviderRequest request = mRequest;
if (!request.equals(ProviderRequest.EMPTY_REQUEST)) {
provider.setRequest(request, request.workSource);
}
-
- ComponentName service = mServiceWatcher.getBoundService().component;
- if (service != null) {
- setPackageNames(Collections.singleton(service.getPackageName()));
- }
}
}
private void onUnbind() {
synchronized (mLock) {
- mBound = false;
+ mProxy = null;
setState(State.EMPTY_STATE);
}
}
@@ -208,4 +129,76 @@
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
mServiceWatcher.dump(fd, pw, args);
}
+
+ private class Proxy extends ILocationProviderManager.Stub {
+
+ Proxy() {}
+
+ // executed on binder thread
+ @Override
+ public void onSetFeatureId(String featureId) {
+ synchronized (mLock) {
+ if (mProxy != this) {
+ return;
+ }
+
+ ComponentName service = mServiceWatcher.getBoundService().component;
+ if (service == null) {
+ return;
+ }
+
+ // we don't need to verify the package name because we're getting it straight from
+ // the service watcher
+ CallerIdentity identity = CallerIdentity.fromBinderUnsafe(mContext,
+ service.getPackageName(), featureId);
+ setIdentity(identity);
+ }
+ }
+
+ // executed on binder thread
+ @Override
+ public void onSetProperties(ProviderProperties properties) {
+ synchronized (mLock) {
+ if (mProxy != this) {
+ return;
+ }
+
+ // if no identity is set yet, set it now
+ if (getIdentity() == null) {
+ ComponentName service = mServiceWatcher.getBoundService().component;
+ if (service != null) {
+ // we don't need to verify the package name because we're getting it
+ // straight from the service watcher
+ setIdentity(CallerIdentity.fromBinderUnsafe(mContext,
+ service.getPackageName(), null));
+ }
+ }
+
+ setProperties(properties);
+ }
+ }
+
+ // executed on binder thread
+ @Override
+ public void onSetAllowed(boolean allowed) {
+ synchronized (mLock) {
+ if (mProxy != this) {
+ return;
+ }
+
+ setAllowed(allowed);
+ }
+ }
+
+ // executed on binder thread
+ @Override
+ public void onReportLocation(Location location) {
+ synchronized (mLock) {
+ if (mProxy != this) {
+ return;
+ }
+ reportLocation(location);
+ }
+ }
+ }
}
diff --git a/services/core/java/com/android/server/location/LocationUsageLogger.java b/services/core/java/com/android/server/location/LocationUsageLogger.java
index 93e19df..791c644 100644
--- a/services/core/java/com/android/server/location/LocationUsageLogger.java
+++ b/services/core/java/com/android/server/location/LocationUsageLogger.java
@@ -16,9 +16,8 @@
package com.android.server.location;
-import static com.android.server.LocationManagerService.TAG;
+import static com.android.server.location.LocationManagerService.TAG;
-import android.app.ActivityManager;
import android.location.Geofence;
import android.location.LocationManager;
import android.location.LocationRequest;
@@ -52,7 +51,7 @@
public void logLocationApiUsage(int usageType, int apiInUse,
String packageName, LocationRequest locationRequest,
boolean hasListener, boolean hasIntent,
- Geofence geofence, int activityImportance) {
+ Geofence geofence, boolean foreground) {
try {
if (hitApiUsageLogCap()) {
return;
@@ -85,7 +84,7 @@
isGeofenceNull
? LocationStatsEnums.RADIUS_UNKNOWN
: bucketizeRadius(geofence.getRadius()),
- categorizeActivityImportance(activityImportance));
+ categorizeActivityImportance(foreground));
} catch (Exception e) {
// Swallow exceptions to avoid crashing LMS.
Log.w(TAG, "Failed to log API usage to statsd.", e);
@@ -197,13 +196,9 @@
}
}
- private static int categorizeActivityImportance(int importance) {
- if (importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
+ private static int categorizeActivityImportance(boolean foreground) {
+ if (foreground) {
return LocationStatsEnums.IMPORTANCE_TOP;
- } else if (importance == ActivityManager
- .RunningAppProcessInfo
- .IMPORTANCE_FOREGROUND_SERVICE) {
- return LocationStatsEnums.IMPORTANCE_FORGROUND_SERVICE;
} else {
return LocationStatsEnums.IMPORTANCE_BACKGROUND;
}
diff --git a/services/core/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java
index 5ec06ca..160e641 100644
--- a/services/core/java/com/android/server/location/MockProvider.java
+++ b/services/core/java/com/android/server/location/MockProvider.java
@@ -27,7 +27,6 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.Collections;
/**
* A mock location provider used by LocationManagerService to implement test providers.
@@ -40,7 +39,7 @@
public MockProvider(ProviderProperties properties) {
// using a direct executor is ok because this class has no locks that could deadlock
- super(DIRECT_EXECUTOR, Collections.emptySet());
+ super(DIRECT_EXECUTOR);
setProperties(properties);
}
diff --git a/services/core/java/com/android/server/location/MockableLocationProvider.java b/services/core/java/com/android/server/location/MockableLocationProvider.java
index 0f358e9..54af1c8 100644
--- a/services/core/java/com/android/server/location/MockableLocationProvider.java
+++ b/services/core/java/com/android/server/location/MockableLocationProvider.java
@@ -28,7 +28,6 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.Collections;
import java.util.List;
/**
@@ -48,10 +47,10 @@
*/
public class MockableLocationProvider extends AbstractLocationProvider {
- private final Object mOwnerLock;
+ final Object mOwnerLock;
@GuardedBy("mOwnerLock")
- @Nullable private AbstractLocationProvider mProvider;
+ @Nullable AbstractLocationProvider mProvider;
@GuardedBy("mOwnerLock")
@Nullable private AbstractLocationProvider mRealProvider;
@GuardedBy("mOwnerLock")
@@ -72,7 +71,7 @@
public MockableLocationProvider(Object ownerLock, Listener listener) {
// using a direct executor is acceptable because all inbound calls are delegated to the
// actual provider implementations which will use their own executors
- super(DIRECT_EXECUTOR, Collections.emptySet());
+ super(DIRECT_EXECUTOR);
mOwnerLock = ownerLock;
mRequest = ProviderRequest.EMPTY_REQUEST;
@@ -236,8 +235,12 @@
synchronized (mOwnerLock) {
provider = mProvider;
pw.println("allowed=" + getState().allowed);
- pw.println("properties=" + getState().properties);
- pw.println("packages=" + getState().providerPackageNames);
+ if (getState().identity != null) {
+ pw.println("identity=" + getState().identity);
+ }
+ if (getState().properties != null) {
+ pw.println("properties=" + getState().properties);
+ }
pw.println("request=" + mRequest);
}
@@ -254,7 +257,7 @@
private final AbstractLocationProvider mListenerProvider;
- private ListenerWrapper(AbstractLocationProvider listenerProvider) {
+ ListenerWrapper(AbstractLocationProvider listenerProvider) {
mListenerProvider = listenerProvider;
}
diff --git a/services/core/java/com/android/server/location/PassiveProvider.java b/services/core/java/com/android/server/location/PassiveProvider.java
index 1ba38cc..f37992a 100644
--- a/services/core/java/com/android/server/location/PassiveProvider.java
+++ b/services/core/java/com/android/server/location/PassiveProvider.java
@@ -21,6 +21,7 @@
import android.content.Context;
import android.location.Criteria;
import android.location.Location;
+import android.location.util.identity.CallerIdentity;
import android.os.Bundle;
import com.android.internal.location.ProviderProperties;
@@ -53,7 +54,7 @@
public PassiveProvider(Context context) {
// using a direct executor is ok because this class has no locks that could deadlock
- super(DIRECT_EXECUTOR, context);
+ super(DIRECT_EXECUTOR, CallerIdentity.fromContext(context));
mReportLocation = false;
diff --git a/services/core/java/com/android/server/location/RemoteListenerHelper.java b/services/core/java/com/android/server/location/RemoteListenerHelper.java
deleted file mode 100644
index 11f0685..0000000
--- a/services/core/java/com/android/server/location/RemoteListenerHelper.java
+++ /dev/null
@@ -1,301 +0,0 @@
-/*
- * Copyright (C) 2014 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License
- */
-
-package com.android.server.location;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.AppOpsManager;
-import android.content.Context;
-import android.os.Handler;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.RemoteException;
-import android.util.Log;
-
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Objects;
-
-/**
- * A helper class that handles operations in remote listeners.
- *
- * @param <TRequest> the type of request.
- * @param <TListener> the type of GNSS data listener.
- */
-public abstract class RemoteListenerHelper<TRequest, TListener extends IInterface> {
-
- protected static final int RESULT_SUCCESS = 0;
- protected static final int RESULT_NOT_AVAILABLE = 1;
- protected static final int RESULT_NOT_SUPPORTED = 2;
- protected static final int RESULT_GPS_LOCATION_DISABLED = 3;
- protected static final int RESULT_INTERNAL_ERROR = 4;
- protected static final int RESULT_UNKNOWN = 5;
- protected static final int RESULT_NOT_ALLOWED = 6;
-
- protected final Handler mHandler;
- private final String mTag;
-
- protected final Map<IBinder, IdentifiedListener> mListenerMap = new HashMap<>();
-
- protected final Context mContext;
- protected final AppOpsManager mAppOps;
-
- private volatile boolean mIsRegistered; // must access only on handler thread, or read-only
-
- private boolean mHasIsSupported;
- private boolean mIsSupported;
-
- private int mLastReportedResult = RESULT_UNKNOWN;
-
- protected RemoteListenerHelper(Context context, Handler handler, String name) {
- Objects.requireNonNull(name);
- mHandler = handler;
- mTag = name;
- mContext = context;
- mAppOps = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
- }
-
- // read-only access for a dump() thread assured via volatile
- public boolean isRegistered() {
- return mIsRegistered;
- }
-
- /**
- * Adds GNSS data listener {@code listener} with caller identify {@code callerIdentify}.
- */
- public void addListener(@Nullable TRequest request, @NonNull TListener listener,
- CallerIdentity callerIdentity) {
- Objects.requireNonNull(listener, "Attempted to register a 'null' listener.");
- IBinder binder = listener.asBinder();
- synchronized (mListenerMap) {
- if (mListenerMap.containsKey(binder)) {
- // listener already added
- return;
- }
-
- IdentifiedListener identifiedListener = new IdentifiedListener(request, listener,
- callerIdentity);
- mListenerMap.put(binder, identifiedListener);
-
- // update statuses we already know about, starting from the ones that will never change
- int result;
- if (!isAvailableInPlatform()) {
- result = RESULT_NOT_AVAILABLE;
- } else if (mHasIsSupported && !mIsSupported) {
- result = RESULT_NOT_SUPPORTED;
- } else if (!isGpsEnabled()) {
- // only attempt to register if GPS is enabled, otherwise we will register once GPS
- // becomes available
- result = RESULT_GPS_LOCATION_DISABLED;
- } else if (mHasIsSupported && mIsSupported) {
- tryRegister();
- // initially presume success, possible internal error could follow asynchornously
- result = RESULT_SUCCESS;
- } else {
- // at this point if the supported flag is not set, the notification will be sent
- // asynchronously in the future
- return;
- }
- post(identifiedListener, getHandlerOperation(result));
- }
- }
-
- /**
- * Remove GNSS data listener {@code listener}.
- */
- public void removeListener(@NonNull TListener listener) {
- Objects.requireNonNull(listener, "Attempted to remove a 'null' listener.");
- synchronized (mListenerMap) {
- mListenerMap.remove(listener.asBinder());
- if (mListenerMap.isEmpty()) {
- tryUnregister();
- }
- }
- }
-
- protected abstract boolean isAvailableInPlatform();
- protected abstract boolean isGpsEnabled();
- // must access only on handler thread
- protected abstract int registerWithService();
- protected abstract void unregisterFromService(); // must access only on handler thread
- protected abstract ListenerOperation<TListener> getHandlerOperation(int result);
-
- protected interface ListenerOperation<TListener extends IInterface> {
- void execute(TListener listener, CallerIdentity callerIdentity) throws RemoteException;
- }
-
- protected void foreach(ListenerOperation<TListener> operation) {
- synchronized (mListenerMap) {
- foreachUnsafe(operation);
- }
- }
-
- protected void setSupported(boolean value) {
- synchronized (mListenerMap) {
- mHasIsSupported = true;
- mIsSupported = value;
- }
- }
-
- protected void tryUpdateRegistrationWithService() {
- synchronized (mListenerMap) {
- if (!isGpsEnabled()) {
- tryUnregister();
- return;
- }
- if (mListenerMap.isEmpty()) {
- return;
- }
- tryRegister();
- }
- }
-
- protected void updateResult() {
- synchronized (mListenerMap) {
- int newResult = calculateCurrentResultUnsafe();
- if (mLastReportedResult == newResult) {
- return;
- }
- foreachUnsafe(getHandlerOperation(newResult));
- mLastReportedResult = newResult;
- }
- }
-
- protected boolean hasPermission(Context context, CallerIdentity callerIdentity) {
- if (LocationPermissionUtil.doesCallerReportToAppOps(context, callerIdentity)) {
- // The caller is identified as a location provider that will report location
- // access to AppOps. Skip noteOp but do checkOp to check for location permission.
- return mAppOps.checkOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.mUid,
- callerIdentity.mPackageName) == AppOpsManager.MODE_ALLOWED;
- }
-
- return mAppOps.noteOpNoThrow(AppOpsManager.OP_FINE_LOCATION, callerIdentity.mUid,
- callerIdentity.mPackageName, callerIdentity.mFeatureId,
- "Location sent to " + callerIdentity.mListenerIdentifier)
- == AppOpsManager.MODE_ALLOWED;
- }
-
- protected void logPermissionDisabledEventNotReported(String tag, String packageName,
- String event) {
- if (Log.isLoggable(tag, Log.DEBUG)) {
- Log.d(tag, "Location permission disabled. Skipping " + event + " reporting for app: "
- + packageName);
- }
- }
-
- private void foreachUnsafe(ListenerOperation<TListener> operation) {
- for (IdentifiedListener identifiedListener : mListenerMap.values()) {
- post(identifiedListener, operation);
- }
- }
-
- private void post(IdentifiedListener identifiedListener,
- ListenerOperation<TListener> operation) {
- if (operation != null) {
- mHandler.post(new HandlerRunnable(identifiedListener, operation));
- }
- }
-
- private void tryRegister() {
- mHandler.post(new Runnable() {
- int registrationState = RESULT_INTERNAL_ERROR;
- @Override
- public void run() {
- if (!mIsRegistered) {
- registrationState = registerWithService();
- mIsRegistered = registrationState == RESULT_SUCCESS;
- }
- if (!mIsRegistered) {
- // post back a failure
- mHandler.post(() -> {
- synchronized (mListenerMap) {
- foreachUnsafe(getHandlerOperation(registrationState));
- }
- });
- }
- }
- });
- }
-
- private void tryUnregister() {
- mHandler.post(() -> {
- if (!mIsRegistered) {
- return;
- }
- unregisterFromService();
- mIsRegistered = false;
- }
- );
- }
-
- private int calculateCurrentResultUnsafe() {
- // update statuses we already know about, starting from the ones that will never change
- if (!isAvailableInPlatform()) {
- return RESULT_NOT_AVAILABLE;
- }
- if (!mHasIsSupported || mListenerMap.isEmpty()) {
- // we'll update once we have a supported status available
- return RESULT_UNKNOWN;
- }
- if (!mIsSupported) {
- return RESULT_NOT_SUPPORTED;
- }
- if (!isGpsEnabled()) {
- return RESULT_GPS_LOCATION_DISABLED;
- }
- return RESULT_SUCCESS;
- }
-
- protected class IdentifiedListener {
- @Nullable private final TRequest mRequest;
- private final TListener mListener;
- private final CallerIdentity mCallerIdentity;
-
- private IdentifiedListener(@Nullable TRequest request, @NonNull TListener listener,
- CallerIdentity callerIdentity) {
- mListener = listener;
- mRequest = request;
- mCallerIdentity = callerIdentity;
- }
-
- @Nullable
- protected TRequest getRequest() {
- return mRequest;
- }
- }
-
- private class HandlerRunnable implements Runnable {
- private final IdentifiedListener mIdentifiedListener;
- private final ListenerOperation<TListener> mOperation;
-
- private HandlerRunnable(IdentifiedListener identifiedListener,
- ListenerOperation<TListener> operation) {
- mIdentifiedListener = identifiedListener;
- mOperation = operation;
- }
-
- @Override
- public void run() {
- try {
- mOperation.execute(mIdentifiedListener.mListener,
- mIdentifiedListener.mCallerIdentity);
- } catch (RemoteException e) {
- Log.v(mTag, "Error in monitored listener.", e);
- }
- }
- }
-}
diff --git a/services/core/java/com/android/server/location/SettingsHelper.java b/services/core/java/com/android/server/location/SettingsHelper.java
index 5fe21bd..7cb3d8a 100644
--- a/services/core/java/com/android/server/location/SettingsHelper.java
+++ b/services/core/java/com/android/server/location/SettingsHelper.java
@@ -16,19 +16,17 @@
package com.android.server.location;
-import static android.location.LocationManager.FUSED_PROVIDER;
-import static android.location.LocationManager.PASSIVE_PROVIDER;
+import static android.provider.Settings.Global.ENABLE_GNSS_RAW_MEAS_FULL_TRACKING;
import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS;
import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_PACKAGE_WHITELIST;
import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS;
import static android.provider.Settings.Global.LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST;
-import static android.provider.Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS;
import static android.provider.Settings.Secure.LOCATION_COARSE_ACCURACY_M;
import static android.provider.Settings.Secure.LOCATION_MODE;
import static android.provider.Settings.Secure.LOCATION_MODE_OFF;
-import static com.android.server.LocationManagerService.D;
-import static com.android.server.LocationManagerService.TAG;
+import static com.android.server.location.LocationManagerService.D;
+import static com.android.server.location.LocationManagerService.TAG;
import android.app.ActivityManager;
import android.content.Context;
@@ -92,13 +90,13 @@
private static final long DEFAULT_BACKGROUND_THROTTLE_INTERVAL_MS = 30 * 60 * 1000;
private static final long DEFAULT_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS =
30 * 60 * 1000;
- private static final long DEFAULT_MAX_LAST_LOCATION_AGE_MS = 20 * 60 * 1000;
private static final float DEFAULT_COARSE_LOCATION_ACCURACY_M = 2000.0f;
private final Context mContext;
private final IntegerSecureSetting mLocationMode;
private final LongGlobalSetting mBackgroundThrottleIntervalMs;
+ private final BooleanGlobalSetting mGnssMeasurementFullTracking;
private final StringListCachedSecureSetting mLocationPackageBlacklist;
private final StringListCachedSecureSetting mLocationPackageWhitelist;
private final StringSetCachedGlobalSetting mBackgroundThrottlePackageWhitelist;
@@ -111,6 +109,8 @@
mLocationMode = new IntegerSecureSetting(context, LOCATION_MODE, handler);
mBackgroundThrottleIntervalMs = new LongGlobalSetting(context,
LOCATION_BACKGROUND_THROTTLE_INTERVAL_MS, handler);
+ mGnssMeasurementFullTracking = new BooleanGlobalSetting(context,
+ ENABLE_GNSS_RAW_MEAS_FULL_TRACKING, handler);
mLocationPackageBlacklist = new StringListCachedSecureSetting(context,
LOCATION_PACKAGE_BLACKLIST, handler);
mLocationPackageWhitelist = new StringListCachedSecureSetting(context,
@@ -247,6 +247,30 @@
}
/**
+ * Retrieve the gnss measurements full tracking enabled setting.
+ */
+ public boolean isGnssMeasurementsFullTrackingEnabled() {
+ return mGnssMeasurementFullTracking.getValue(false);
+ }
+
+ /**
+ * Add a listener for changes to the background throttle package whitelist. Callbacks occur on
+ * an unspecified thread.
+ */
+ public void addOnGnssMeasurementsFullTrackingEnabledChangedListener(
+ GlobalSettingChangedListener listener) {
+ mGnssMeasurementFullTracking.addListener(listener);
+ }
+
+ /**
+ * Remove a listener for changes to the background throttle package whitelist.
+ */
+ public void removeOnGnssMeasurementsFullTrackingEnabledChangedListener(
+ GlobalSettingChangedListener listener) {
+ mGnssMeasurementFullTracking.removeListener(listener);
+ }
+
+ /**
* Retrieve the ignore settings package whitelist.
*/
public Set<String> getIgnoreSettingsPackageWhitelist() {
@@ -285,21 +309,6 @@
}
/**
- * Retrieve maximum age of the last location.
- */
- public long getMaxLastLocationAgeMs() {
- long identity = Binder.clearCallingIdentity();
- try {
- return Settings.Global.getLong(
- mContext.getContentResolver(),
- LOCATION_LAST_LOCATION_MAX_AGE_MILLIS,
- DEFAULT_MAX_LAST_LOCATION_AGE_MS);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- /**
* Retrieve the accuracy for coarsening location, ie, the grid size used for snap-to-grid
* coarsening.
*/
@@ -316,29 +325,6 @@
}
/**
- * Set a value for the deprecated LOCATION_PROVIDERS_ALLOWED setting. This is used purely for
- * backwards compatibility for old clients, and may be removed in the future.
- */
- public void setLocationProviderAllowed(String provider, boolean enabled, int userId) {
- // fused and passive provider never get public updates for legacy reasons
- if (FUSED_PROVIDER.equals(provider) || PASSIVE_PROVIDER.equals(provider)) {
- return;
- }
-
- long identity = Binder.clearCallingIdentity();
- try {
- // update LOCATION_PROVIDERS_ALLOWED for best effort backwards compatibility
- Settings.Secure.putStringForUser(
- mContext.getContentResolver(),
- Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
- (enabled ? "+" : "-") + provider,
- userId);
- } finally {
- Binder.restoreCallingIdentity(identity);
- }
- }
-
- /**
* Dump info for debugging.
*/
public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -398,7 +384,7 @@
@GuardedBy("this")
private boolean mRegistered;
- private ObservingSetting(Handler handler) {
+ ObservingSetting(Handler handler) {
super(handler);
mListeners = new CopyOnWriteArrayList<>();
}
@@ -442,13 +428,13 @@
private final Context mContext;
private final String mSettingName;
- private IntegerSecureSetting(Context context, String settingName, Handler handler) {
+ IntegerSecureSetting(Context context, String settingName, Handler handler) {
super(handler);
mContext = context;
mSettingName = settingName;
}
- private void register() {
+ void register() {
register(mContext, Settings.Secure.getUriFor(mSettingName));
}
@@ -473,7 +459,7 @@
@GuardedBy("this")
private List<String> mCachedValue;
- private StringListCachedSecureSetting(Context context, String settingName,
+ StringListCachedSecureSetting(Context context, String settingName,
Handler handler) {
super(handler);
mContext = context;
@@ -527,12 +513,38 @@
}
}
+ private static class BooleanGlobalSetting extends ObservingSetting {
+
+ private final Context mContext;
+ private final String mSettingName;
+
+ BooleanGlobalSetting(Context context, String settingName, Handler handler) {
+ super(handler);
+ mContext = context;
+ mSettingName = settingName;
+ }
+
+ public void register() {
+ register(mContext, Settings.Global.getUriFor(mSettingName));
+ }
+
+ public boolean getValue(boolean defaultValue) {
+ long identity = Binder.clearCallingIdentity();
+ try {
+ return Settings.Global.getInt(mContext.getContentResolver(), mSettingName,
+ defaultValue ? 1 : 0) != 0;
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+ }
+
private static class LongGlobalSetting extends ObservingSetting {
private final Context mContext;
private final String mSettingName;
- private LongGlobalSetting(Context context, String settingName, Handler handler) {
+ LongGlobalSetting(Context context, String settingName, Handler handler) {
super(handler);
mContext = context;
mSettingName = settingName;
@@ -564,7 +576,7 @@
@GuardedBy("this")
private ArraySet<String> mCachedValue;
- private StringSetCachedGlobalSetting(Context context, String settingName,
+ StringSetCachedGlobalSetting(Context context, String settingName,
Supplier<ArraySet<String>> baseValuesSupplier, Handler handler) {
super(handler);
mContext = context;
diff --git a/services/core/java/com/android/server/location/UserInfoHelper.java b/services/core/java/com/android/server/location/UserInfoHelper.java
index 28f3f47..a3dcc40 100644
--- a/services/core/java/com/android/server/location/UserInfoHelper.java
+++ b/services/core/java/com/android/server/location/UserInfoHelper.java
@@ -18,8 +18,8 @@
import static android.os.UserManager.DISALLOW_SHARE_LOCATION;
-import static com.android.server.LocationManagerService.D;
-import static com.android.server.LocationManagerService.TAG;
+import static com.android.server.location.LocationManagerService.D;
+import static com.android.server.location.LocationManagerService.TAG;
import android.annotation.IntDef;
import android.annotation.Nullable;
diff --git a/services/core/java/com/android/server/location/gnss/GnssListenerManager.java b/services/core/java/com/android/server/location/gnss/GnssListenerManager.java
new file mode 100644
index 0000000..e4c8315
--- /dev/null
+++ b/services/core/java/com/android/server/location/gnss/GnssListenerManager.java
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location.gnss;
+
+import android.annotation.Nullable;
+import android.location.LocationManagerInternal;
+import android.location.util.identity.CallerIdentity;
+import android.location.util.listeners.AbstractListenerManager;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.IInterface;
+import android.os.Process;
+import android.os.RemoteException;
+import android.util.ArraySet;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.LocalServices;
+import com.android.server.location.AppForegroundHelper;
+import com.android.server.location.AppOpsHelper;
+import com.android.server.location.SettingsHelper;
+import com.android.server.location.UserInfoHelper;
+import com.android.server.location.util.listeners.IdentifiedRegistration;
+
+import java.util.Objects;
+
+/**
+ * Manager for all GNSS related listeners. This class handles deactivating listeners that do not
+ * belong to the current user, that do not have the appropriate permissions, or that are not
+ * currently in the foreground. It will also disable listeners if the GNSS provider is disabled.
+ * Listeners must be registered with the associated IBinder as the key, if the IBinder dies, the
+ * registration will automatically be removed.
+ *
+ * @param <TRequest> request type
+ * @param <TListener> listener type
+ * @param <TMergedRequest> merged request type
+ */
+public abstract class GnssListenerManager<TRequest, TListener extends IInterface, TMergedRequest>
+ extends AbstractListenerManager<IBinder, TRequest, TListener, GnssListenerManager<TRequest,
+ TListener, TMergedRequest>.GnssRegistration, TMergedRequest> {
+
+ /**
+ * Registration object for GNSS listeners.
+ */
+ protected class GnssRegistration extends
+ IdentifiedRegistration<TRequest, TListener> implements Binder.DeathRecipient {
+
+ private volatile @Nullable IBinder mKey;
+
+ @GuardedBy("this")
+ private boolean mAppOpsAllowed;
+
+ @GuardedBy("this")
+ private boolean mForeground;
+
+ @GuardedBy("this")
+ private boolean mActive;
+
+ protected GnssRegistration(@Nullable TRequest request, CallerIdentity callerIdentity,
+ TListener listener) {
+ super(request, callerIdentity, listener);
+ mKey = listener.asBinder();
+ }
+
+ /**
+ * Returns true if this registration is currently in the foreground.
+ */
+ public synchronized boolean isForeground() {
+ return mForeground;
+ }
+
+ synchronized boolean isActive() {
+ return mActive;
+ }
+
+ @Override
+ protected final boolean onRegister() {
+ try {
+ Objects.requireNonNull(mKey).linkToDeath(this, 0);
+ } catch (RemoteException e) {
+ mKey = null;
+ return false;
+ }
+
+ mAppOpsAllowed = mAppOpsHelper.checkLocationAccess(getIdentity());
+ mForeground = mAppForegroundHelper.isAppForeground(getIdentity().uid);
+ onActiveChanged();
+
+ return true;
+ }
+
+ @Override
+ protected void onUnregister() {
+ IBinder key = mKey;
+ if (key != null) {
+ mKey = null;
+ key.unlinkToDeath(this, 0);
+ }
+ }
+
+ boolean onUserChanged(int userId) {
+ return getIdentity().userId == userId;
+ }
+
+ boolean onLocationEnabledChanged(int userId) {
+ if (userId == getIdentity().userId) {
+ return onActiveChanged();
+ }
+
+ return false;
+ }
+
+ boolean onBackgroundThrottlePackageWhitelistChanged() {
+ return onActiveChanged();
+ }
+
+ boolean onAppOpsChanged(String packageName) {
+ if (getIdentity().packageName.equals(packageName)) {
+ boolean appOpsAllowed = mAppOpsHelper.checkLocationAccess(getIdentity());
+ synchronized (this) {
+ if (appOpsAllowed != mAppOpsAllowed) {
+ mAppOpsAllowed = appOpsAllowed;
+ return onActiveChanged();
+ }
+ }
+ }
+
+ return false;
+ }
+
+ boolean onForegroundChanged(int uid, boolean foreground) {
+ if (getIdentity().uid == uid) {
+ synchronized (this) {
+ if (foreground != mForeground) {
+ mForeground = foreground;
+ return onActiveChanged();
+ }
+ }
+ }
+
+ return false;
+ }
+
+ private boolean onActiveChanged() {
+ synchronized (this) {
+ // TODO: we should be checking if the gps provider is enabled, not location
+ boolean active = mAppOpsAllowed
+ && (mForeground || isBackgroundRestrictionExempt(getIdentity()))
+ && mUserInfoHelper.isCurrentUserId(getIdentity().userId)
+ && mSettingsHelper.isLocationEnabled(getIdentity().userId);
+ if (active != mActive) {
+ mActive = active;
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ private boolean isBackgroundRestrictionExempt(CallerIdentity identity) {
+ if (identity.uid == Process.SYSTEM_UID) {
+ return true;
+ }
+
+ if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains(
+ identity.packageName)) {
+ return true;
+ }
+
+ return mLocationManagerInternal.isProvider(null, identity);
+ }
+
+ @Override
+ public void binderDied() {
+ IBinder key = mKey;
+ if (key != null) {
+ removeListener(key, this);
+ }
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder builder = new StringBuilder();
+ builder.append(getIdentity());
+
+ ArraySet<String> flags = new ArraySet<>(2);
+ if (!mForeground) {
+ flags.add("bg");
+ }
+ if (!mAppOpsAllowed) {
+ flags.add("na");
+ }
+ if (!flags.isEmpty()) {
+ builder.append(" ").append(flags);
+ }
+
+ if (getRequest() != null) {
+ builder.append(" ").append(getRequest());
+ }
+ return builder.toString();
+ }
+ }
+
+ protected final UserInfoHelper mUserInfoHelper;
+ protected final SettingsHelper mSettingsHelper;
+ protected final AppOpsHelper mAppOpsHelper;
+ protected final AppForegroundHelper mAppForegroundHelper;
+ protected final LocationManagerInternal mLocationManagerInternal;
+
+ private final UserInfoHelper.UserListener mUserChangedListener = this::onUserChanged;
+ private final SettingsHelper.UserSettingChangedListener mLocationEnabledChangedListener =
+ this::onLocationEnabledChanged;
+ private final SettingsHelper.GlobalSettingChangedListener
+ mBackgroundThrottlePackageWhitelistChangedListener =
+ this::onBackgroundThrottlePackageWhitelistChanged;
+ private final AppOpsHelper.LocationAppOpListener mAppOpsChangedListener = this::onAppOpsChanged;
+ private final AppForegroundHelper.AppForegroundListener mAppForegroundChangedListener =
+ this::onAppForegroundChanged;
+
+ protected GnssListenerManager(UserInfoHelper userInfoHelper, SettingsHelper settingsHelper,
+ AppOpsHelper appOpsHelper, AppForegroundHelper appForegroundHelper) {
+ mUserInfoHelper = userInfoHelper;
+ mSettingsHelper = settingsHelper;
+ mAppOpsHelper = appOpsHelper;
+ mAppForegroundHelper = appForegroundHelper;
+ mLocationManagerInternal = Objects.requireNonNull(
+ LocalServices.getService(LocationManagerInternal.class));
+ }
+
+ /**
+ * Adds a listener with the given identity.
+ */
+ protected void addListener(CallerIdentity identity, TListener listener) {
+ addListener(null, identity, listener);
+ }
+
+ /**
+ * Adds a listener with the given identity and request.
+ */
+ protected void addListener(TRequest request, CallerIdentity identity, TListener listener) {
+ addRegistration(listener.asBinder(), new GnssRegistration(request, identity, listener));
+ }
+
+ /**
+ * Removes the given listener.
+ */
+ public void removeListener(TListener listener) {
+ removeRegistration(listener.asBinder());
+ }
+
+ void removeListener(IBinder key, GnssRegistration registration) {
+ removeRegistration(key, registration);
+ }
+
+ @Override
+ protected boolean isActive(GnssRegistration registration) {
+ // we don't have an easy listener for provider enabled status changes available, so we
+ // check it every time, which should be pretty cheap
+ return registration.isActive();
+ }
+
+ @Override
+ protected void onRegister() {
+ mUserInfoHelper.addListener(mUserChangedListener);
+ mSettingsHelper.addOnLocationEnabledChangedListener(mLocationEnabledChangedListener);
+ mSettingsHelper.addOnBackgroundThrottlePackageWhitelistChangedListener(
+ mBackgroundThrottlePackageWhitelistChangedListener);
+ mAppOpsHelper.addListener(mAppOpsChangedListener);
+ mAppForegroundHelper.addListener(mAppForegroundChangedListener);
+ }
+
+ @Override
+ protected void onUnregister() {
+ mUserInfoHelper.removeListener(mUserChangedListener);
+ mSettingsHelper.removeOnLocationEnabledChangedListener(mLocationEnabledChangedListener);
+ mSettingsHelper.removeOnBackgroundThrottlePackageWhitelistChangedListener(
+ mBackgroundThrottlePackageWhitelistChangedListener);
+ mAppOpsHelper.removeListener(mAppOpsChangedListener);
+ mAppForegroundHelper.removeListener(mAppForegroundChangedListener);
+ }
+
+ private void onUserChanged(int userId, int change) {
+ if (change == UserInfoHelper.UserListener.USER_SWITCHED) {
+ updateRegistrations(registration -> registration.onUserChanged(userId));
+ }
+ }
+
+ private void onLocationEnabledChanged(int userId) {
+ updateRegistrations(registration -> registration.onLocationEnabledChanged(userId));
+ }
+
+ private void onBackgroundThrottlePackageWhitelistChanged() {
+ updateRegistrations(GnssRegistration::onBackgroundThrottlePackageWhitelistChanged);
+ }
+
+ private void onAppOpsChanged(String packageName) {
+ updateRegistrations(registration -> registration.onAppOpsChanged(packageName));
+ }
+
+ private void onAppForegroundChanged(int uid, boolean foreground) {
+ updateRegistrations(registration -> registration.onForegroundChanged(uid, foreground));
+ }
+
+ /**
+ * May be overridden by subclasses to provide extra debug information.
+ */
+ protected boolean isServiceSupported() {
+ return true;
+ }
+
+ @Override
+ protected String serviceStateToString() {
+ if (!isServiceSupported()) {
+ return "unsupported";
+ }
+
+ return super.serviceStateToString();
+ }
+}
diff --git a/services/core/java/com/android/server/location/gnss/GnssManagerService.java b/services/core/java/com/android/server/location/gnss/GnssManagerService.java
index b57c261..4d38c29 100644
--- a/services/core/java/com/android/server/location/gnss/GnssManagerService.java
+++ b/services/core/java/com/android/server/location/gnss/GnssManagerService.java
@@ -16,15 +16,12 @@
package com.android.server.location.gnss;
-import static android.app.AppOpsManager.OP_FINE_LOCATION;
import static android.location.LocationManager.GPS_PROVIDER;
+import static android.location.util.identity.CallerIdentity.PERMISSION_FINE;
import android.Manifest;
-import android.annotation.NonNull;
import android.annotation.Nullable;
-import android.app.AppOpsManager;
import android.content.Context;
-import android.location.GnssCapabilities;
import android.location.GnssMeasurementCorrections;
import android.location.GnssRequest;
import android.location.IBatchedLocationCallback;
@@ -36,14 +33,9 @@
import android.location.INetInitiatedListener;
import android.location.Location;
import android.location.LocationManagerInternal;
+import android.location.util.identity.CallerIdentity;
import android.os.Binder;
-import android.os.IBinder;
-import android.os.IInterface;
-import android.os.Process;
import android.os.RemoteException;
-import android.os.UserHandle;
-import android.stats.location.LocationStatsEnums;
-import android.util.ArrayMap;
import android.util.Log;
import com.android.internal.annotations.GuardedBy;
@@ -51,10 +43,8 @@
import com.android.internal.util.IndentingPrintWriter;
import com.android.internal.util.Preconditions;
import com.android.server.LocalServices;
-import com.android.server.LocationManagerServiceUtils.LinkedListener;
-import com.android.server.LocationManagerServiceUtils.LinkedListenerBase;
import com.android.server.location.AppForegroundHelper;
-import com.android.server.location.CallerIdentity;
+import com.android.server.location.AppOpsHelper;
import com.android.server.location.GnssAntennaInfoProvider;
import com.android.server.location.GnssBatchingProvider;
import com.android.server.location.GnssCapabilitiesProvider;
@@ -62,22 +52,22 @@
import com.android.server.location.GnssMeasurementCorrectionsProvider;
import com.android.server.location.GnssMeasurementsProvider;
import com.android.server.location.GnssNavigationMessageProvider;
-import com.android.server.location.GnssStatusListenerHelper;
+import com.android.server.location.GnssStatusProvider;
import com.android.server.location.LocationUsageLogger;
-import com.android.server.location.RemoteListenerHelper;
import com.android.server.location.SettingsHelper;
+import com.android.server.location.UserInfoHelper;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.List;
-import java.util.Map;
-import java.util.function.Consumer;
-import java.util.function.Function;
/** Manages Gnss providers and related Gnss functions for LocationManagerService. */
public class GnssManagerService {
- private static final String TAG = "GnssManagerService";
+ public static final String TAG = "GnssManager";
+ public static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
+
+ private static final String FEATURE_ID = "GnssService";
public static boolean isGnssSupported() {
return GnssLocationProvider.isSupported();
@@ -85,11 +75,12 @@
private final Context mContext;
private final SettingsHelper mSettingsHelper;
+ private final AppOpsHelper mAppOpsHelper;
private final AppForegroundHelper mAppForegroundHelper;
- private final LocationUsageLogger mLocationUsageLogger;
+ private final LocationManagerInternal mLocationManagerInternal;
private final GnssLocationProvider mGnssLocationProvider;
- private final GnssStatusListenerHelper mGnssStatusProvider;
+ private final GnssStatusProvider mGnssStatusProvider;
private final GnssMeasurementsProvider mGnssMeasurementsProvider;
private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider;
private final GnssAntennaInfoProvider mGnssAntennaInfoProvider;
@@ -101,59 +92,40 @@
private final INetInitiatedListener mNetInitiatedListener;
private final IGpsGeofenceHardware mGpsGeofenceProxy;
- @GuardedBy("mGnssMeasurementsListeners")
- private final ArrayMap<IBinder, LinkedListener<GnssRequest, IGnssMeasurementsListener>>
- mGnssMeasurementsListeners = new ArrayMap<>();
-
- @GuardedBy("mGnssAntennaInfoListeners")
- private final ArrayMap<IBinder,
- LinkedListener<Void, IGnssAntennaInfoListener>>
- mGnssAntennaInfoListeners = new ArrayMap<>();
-
- @GuardedBy("mGnssNavigationMessageListeners")
- private final ArrayMap<IBinder, LinkedListener<Void, IGnssNavigationMessageListener>>
- mGnssNavigationMessageListeners = new ArrayMap<>();
-
- @GuardedBy("mGnssStatusListeners")
- private final ArrayMap<IBinder, LinkedListener<Void, IGnssStatusListener>>
- mGnssStatusListeners = new ArrayMap<>();
-
- @GuardedBy("this")
- @Nullable private LocationManagerInternal mLocationManagerInternal;
- @GuardedBy("this")
- @Nullable private AppOpsManager mAppOpsManager;
-
private final Object mGnssBatchingLock = new Object();
@GuardedBy("mGnssBatchingLock")
- @Nullable private IBatchedLocationCallback mGnssBatchingCallback;
-
+ private @Nullable IBatchedLocationCallback mGnssBatchingCallback;
@GuardedBy("mGnssBatchingLock")
- @Nullable
- private LinkedListener<Void, IBatchedLocationCallback> mGnssBatchingDeathCallback;
-
+ private @Nullable CallerIdentity mGnssBatchingIdentity;
+ @GuardedBy("mGnssBatchingLock")
+ private @Nullable Binder.DeathRecipient mGnssBatchingDeathRecipient;
@GuardedBy("mGnssBatchingLock")
private boolean mGnssBatchingInProgress = false;
- public GnssManagerService(Context context, SettingsHelper settingsHelper,
+ public GnssManagerService(Context context, UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger) {
- this(context, settingsHelper, appForegroundHelper, locationUsageLogger, null);
+ this(context, userInfoHelper, settingsHelper, appOpsHelper, appForegroundHelper,
+ locationUsageLogger, null);
}
- // Can use this constructor to inject GnssLocationProvider for testing
@VisibleForTesting
- GnssManagerService(Context context, SettingsHelper settingsHelper,
+ GnssManagerService(Context context, UserInfoHelper userInfoHelper,
+ SettingsHelper settingsHelper, AppOpsHelper appOpsHelper,
AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger,
GnssLocationProvider gnssLocationProvider) {
Preconditions.checkState(isGnssSupported());
- mContext = context;
+ mContext = context.createFeatureContext(FEATURE_ID);
mSettingsHelper = settingsHelper;
+ mAppOpsHelper = appOpsHelper;
mAppForegroundHelper = appForegroundHelper;
- mLocationUsageLogger = locationUsageLogger;
+ mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class);
if (gnssLocationProvider == null) {
- gnssLocationProvider = new GnssLocationProvider(mContext);
+ gnssLocationProvider = new GnssLocationProvider(mContext, userInfoHelper,
+ mSettingsHelper, mAppOpsHelper, mAppForegroundHelper, locationUsageLogger);
}
mGnssLocationProvider = gnssLocationProvider;
@@ -173,17 +145,9 @@
/** Called when system is ready. */
public synchronized void onSystemReady() {
- if (mLocationManagerInternal != null) {
- return;
- }
-
+ mAppOpsHelper.onSystemReady();
mSettingsHelper.onSystemReady();
mAppForegroundHelper.onSystemReady();
-
- mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class);
- mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
-
- mAppForegroundHelper.addListener(this::onAppForegroundChanged);
}
/** Retrieve the GnssLocationProvider. */
@@ -215,11 +179,7 @@
* Get GNSS hardware capabilities. The capabilities returned are a bitfield as described in
* {@link android.location.GnssCapabilities}.
*/
- public long getGnssCapabilities(String packageName) {
- if (!checkLocationAppOp(packageName)) {
- return GnssCapabilities.INVALID_CAPABILITIES;
- }
-
+ public long getGnssCapabilities() {
return mGnssCapabilitiesProvider.getGnssCapabilities();
}
@@ -227,12 +187,7 @@
* Get size of GNSS batch (GNSS location results are batched together for power savings).
*/
public int getGnssBatchSize(String packageName) {
- mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
-
- if (!checkLocationAppOp(packageName)) {
- return 0;
- }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
synchronized (mGnssBatchingLock) {
return mGnssBatchingProvider.getBatchSize();
@@ -243,11 +198,12 @@
* Starts GNSS batch collection. GNSS positions are collected in a batch before being delivered
* as a collection.
*/
- public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName) {
- mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
+ public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName,
+ String attributionTag) {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
- if (!checkLocationAppOp(packageName)) {
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ if (!mAppOpsHelper.checkLocationAccess(identity)) {
return false;
}
@@ -267,32 +223,29 @@
* Adds a GNSS batching callback for delivering GNSS location batch results.
*/
public boolean addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName,
- @Nullable String featureId, @NonNull String listenerIdentity) {
- mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
+ @Nullable String attributionTag) {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
- if (!checkLocationAppOp(packageName)) {
- return false;
- }
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_FINE);
- CallerIdentity callerIdentity =
- new CallerIdentity(Binder.getCallingUid(), Binder.getCallingPid(), packageName,
- featureId, listenerIdentity);
synchronized (mGnssBatchingLock) {
- mGnssBatchingCallback = callback;
- mGnssBatchingDeathCallback =
- new LinkedListener<>(
- /* request= */ null,
- callback,
- "BatchedLocationCallback",
- callerIdentity,
- (IBatchedLocationCallback listener) -> {
- stopGnssBatch();
- removeGnssBatchingCallback();
- });
+ Binder.DeathRecipient deathRecipient = () -> {
+ synchronized (mGnssBatchingLock) {
+ stopGnssBatch();
+ removeGnssBatchingCallback();
+ }
+ };
- return mGnssBatchingDeathCallback.linkToListenerDeathNotificationLocked(
- callback.asBinder());
+ try {
+ callback.asBinder().linkToDeath(mGnssBatchingDeathRecipient, 0);
+ mGnssBatchingCallback = callback;
+ mGnssBatchingIdentity = identity;
+ mGnssBatchingDeathRecipient = deathRecipient;
+ return true;
+ } catch (RemoteException e) {
+ return false;
+ }
}
}
@@ -302,12 +255,7 @@
* @param packageName name of requesting package
*/
public void flushGnssBatch(String packageName) {
- mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
-
- if (!checkLocationAppOp(packageName)) {
- return;
- }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
synchronized (mGnssBatchingLock) {
mGnssBatchingProvider.flush();
@@ -318,13 +266,17 @@
* Removes GNSS batching callback.
*/
public void removeGnssBatchingCallback() {
- mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE, null);
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
synchronized (mGnssBatchingLock) {
- mGnssBatchingDeathCallback.unlinkFromListenerDeathNotificationLocked(
- mGnssBatchingCallback.asBinder());
+ if (mGnssBatchingCallback == null) {
+ return;
+ }
+
+ mGnssBatchingCallback.asBinder().unlinkToDeath(mGnssBatchingDeathRecipient, 0);
mGnssBatchingCallback = null;
- mGnssBatchingDeathCallback = null;
+ mGnssBatchingIdentity = null;
+ mGnssBatchingDeathRecipient = null;
}
}
@@ -332,7 +284,7 @@
* Stop GNSS batch collection.
*/
public boolean stopGnssBatch() {
- mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE, null);
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
synchronized (mGnssBatchingLock) {
mGnssBatchingInProgress = false;
@@ -340,197 +292,37 @@
}
}
- private void onAppForegroundChanged(int uid, boolean foreground) {
- synchronized (mGnssMeasurementsListeners) {
- updateListenersOnForegroundChangedLocked(
- mGnssMeasurementsListeners,
- mGnssMeasurementsProvider,
- IGnssMeasurementsListener.Stub::asInterface,
- uid,
- foreground);
- }
- synchronized (mGnssNavigationMessageListeners) {
- updateListenersOnForegroundChangedLocked(
- mGnssNavigationMessageListeners,
- mGnssNavigationMessageProvider,
- IGnssNavigationMessageListener.Stub::asInterface,
- uid,
- foreground);
- }
- synchronized (mGnssStatusListeners) {
- updateListenersOnForegroundChangedLocked(
- mGnssStatusListeners,
- mGnssStatusProvider,
- IGnssStatusListener.Stub::asInterface,
- uid,
- foreground);
- }
- synchronized (mGnssAntennaInfoListeners) {
- updateListenersOnForegroundChangedLocked(
- mGnssAntennaInfoListeners,
- mGnssAntennaInfoProvider,
- IGnssAntennaInfoListener.Stub::asInterface,
- uid,
- foreground);
- }
- }
-
- private <TRequest, TListener extends IInterface> void updateListenersOnForegroundChangedLocked(
- Map<IBinder, LinkedListener<TRequest, TListener>> gnssDataListeners,
- RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
- Function<IBinder, TListener> mapBinderToListener,
- int uid,
- boolean foreground) {
- for (Map.Entry<IBinder, LinkedListener<TRequest, TListener>> entry :
- gnssDataListeners.entrySet()) {
- LinkedListener<TRequest, TListener> linkedListener = entry.getValue();
- CallerIdentity callerIdentity = linkedListener.getCallerIdentity();
- TRequest request = linkedListener.getRequest();
- if (callerIdentity.mUid != uid) {
- continue;
- }
-
- TListener listener = mapBinderToListener.apply(entry.getKey());
- if (foreground || isThrottlingExempt(callerIdentity)) {
- gnssDataProvider.addListener(request, listener, callerIdentity);
- } else {
- gnssDataProvider.removeListener(listener);
- }
- }
- }
-
- private <TListener extends IInterface, TRequest> boolean addGnssDataListenerLocked(
- @Nullable TRequest request,
- TListener listener,
- String packageName,
- @Nullable String featureId,
- @NonNull String listenerIdentifier,
- RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
- ArrayMap<IBinder,
- LinkedListener<TRequest, TListener>> gnssDataListeners,
- Consumer<TListener> binderDeathCallback) {
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
-
- if (!checkLocationAppOp(packageName)) {
- return false;
- }
-
- CallerIdentity callerIdentity = new CallerIdentity(Binder.getCallingUid(),
- Binder.getCallingPid(), packageName, featureId, listenerIdentifier);
- LinkedListener<TRequest, TListener> linkedListener = new LinkedListener<>(request, listener,
- listenerIdentifier, callerIdentity, binderDeathCallback);
- IBinder binder = listener.asBinder();
- if (!linkedListener.linkToListenerDeathNotificationLocked(binder)) {
- return false;
- }
-
- gnssDataListeners.put(binder, linkedListener);
- if (gnssDataProvider == mGnssMeasurementsProvider
- || gnssDataProvider == mGnssStatusProvider) {
- mLocationUsageLogger.logLocationApiUsage(
- LocationStatsEnums.USAGE_STARTED,
- gnssDataProvider == mGnssMeasurementsProvider
- ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
- : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
- packageName,
- /* LocationRequest= */ null,
- /* hasListener= */ true,
- /* hasIntent= */ false,
- /* geofence= */ null,
- mAppForegroundHelper.getImportance(callerIdentity.mUid));
- }
- if (mAppForegroundHelper.isAppForeground(callerIdentity.mUid)
- || isThrottlingExempt(callerIdentity)) {
- gnssDataProvider.addListener(request, listener, callerIdentity);
- }
- return true;
- }
-
- private <TRequest, TListener extends IInterface> void removeGnssDataListenerLocked(
- TListener listener,
- RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
- ArrayMap<IBinder, LinkedListener<TRequest, TListener>> gnssDataListeners) {
- if (gnssDataProvider == null) {
- Log.e(
- TAG,
- "Can not remove GNSS data listener. GNSS data provider "
- + "not available.");
- return;
- }
-
- IBinder binder = listener.asBinder();
- LinkedListener<TRequest, TListener> linkedListener =
- gnssDataListeners.remove(binder);
- if (linkedListener == null) {
- return;
- }
- if (gnssDataProvider == mGnssMeasurementsProvider
- || gnssDataProvider == mGnssStatusProvider) {
- mLocationUsageLogger.logLocationApiUsage(
- LocationStatsEnums.USAGE_ENDED,
- gnssDataProvider == mGnssMeasurementsProvider
- ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
- : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
- linkedListener.getCallerIdentity().mPackageName,
- /* LocationRequest= */ null,
- /* hasListener= */ true,
- /* hasIntent= */ false,
- /* geofence= */ null,
- mAppForegroundHelper.getImportance(Binder.getCallingUid()));
- }
- linkedListener.unlinkFromListenerDeathNotificationLocked(binder);
- gnssDataProvider.removeListener(listener);
- }
-
/**
* Registers listener for GNSS status changes.
*/
- public boolean registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
- @Nullable String featureId) {
- synchronized (mGnssStatusListeners) {
- return addGnssDataListenerLocked(
- /* request= */ null,
- listener,
- packageName,
- featureId,
- "Gnss status",
- mGnssStatusProvider,
- mGnssStatusListeners,
- this::unregisterGnssStatusCallback);
- }
+ public void registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
+ @Nullable String attributionTag) {
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_FINE);
+
+ mGnssStatusProvider.addListener(identity, listener);
}
/**
* Unregisters listener for GNSS status changes.
*/
public void unregisterGnssStatusCallback(IGnssStatusListener listener) {
- synchronized (mGnssStatusListeners) {
- removeGnssDataListenerLocked(listener, mGnssStatusProvider, mGnssStatusListeners);
- }
+ mGnssStatusProvider.removeListener(listener);
}
/**
* Adds a GNSS measurements listener.
*/
- public boolean addGnssMeasurementsListener(@Nullable GnssRequest request,
- IGnssMeasurementsListener listener, String packageName,
- @Nullable String featureId,
- @NonNull String listenerIdentifier) {
- if (request != null && request.isFullTracking()) {
- mContext.enforceCallingOrSelfPermission(android.Manifest.permission.LOCATION_HARDWARE,
- null);
+ public void addGnssMeasurementsListener(GnssRequest request, IGnssMeasurementsListener listener,
+ String packageName, @Nullable String attributionTag) {
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_FINE);
+
+ if (request.isFullTracking()) {
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
}
- synchronized (mGnssMeasurementsListeners) {
- return addGnssDataListenerLocked(
- request,
- listener,
- packageName,
- featureId,
- listenerIdentifier,
- mGnssMeasurementsProvider,
- mGnssMeasurementsListeners,
- this::removeGnssMeasurementsListener);
- }
+
+ mGnssMeasurementsProvider.addListener(request, identity, listener);
}
/**
@@ -538,12 +330,8 @@
*/
public void injectGnssMeasurementCorrections(
GnssMeasurementCorrections measurementCorrections, String packageName) {
- mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
- mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
-
- if (!checkLocationAppOp(packageName)) {
- return;
- }
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.LOCATION_HARDWARE, null);
+ mContext.enforceCallingOrSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
mGnssMeasurementCorrectionsProvider.injectGnssMeasurementCorrections(
measurementCorrections);
@@ -553,10 +341,7 @@
* Removes a GNSS measurements listener.
*/
public void removeGnssMeasurementsListener(IGnssMeasurementsListener listener) {
- synchronized (mGnssMeasurementsListeners) {
- removeGnssDataListenerLocked(listener, mGnssMeasurementsProvider,
- mGnssMeasurementsListeners);
- }
+ mGnssMeasurementsProvider.removeListener(listener);
}
/**
@@ -564,22 +349,13 @@
*
* @param listener called when GNSS antenna info is received
* @param packageName name of requesting package
- * @return true if listener is successfully added, false otherwise
*/
- public boolean addGnssAntennaInfoListener(
- IGnssAntennaInfoListener listener, String packageName,
- @Nullable String featureId, @NonNull String listenerIdentifier) {
- synchronized (mGnssAntennaInfoListeners) {
- return addGnssDataListenerLocked(
- /* request= */ null,
- listener,
- packageName,
- featureId,
- listenerIdentifier,
- mGnssAntennaInfoProvider,
- mGnssAntennaInfoListeners,
- this::removeGnssAntennaInfoListener);
- }
+ public void addGnssAntennaInfoListener(IGnssAntennaInfoListener listener, String packageName,
+ @Nullable String attributionTag) {
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_FINE);
+
+ mGnssAntennaInfoProvider.addListener(identity, listener);
}
/**
@@ -588,39 +364,25 @@
* @param listener called when GNSS antenna info is received
*/
public void removeGnssAntennaInfoListener(IGnssAntennaInfoListener listener) {
- synchronized (mGnssAntennaInfoListeners) {
- removeGnssDataListenerLocked(
- listener, mGnssAntennaInfoProvider, mGnssAntennaInfoListeners);
- }
+ mGnssAntennaInfoProvider.removeListener(listener);
}
/**
* Adds a GNSS navigation message listener.
*/
- public boolean addGnssNavigationMessageListener(
- IGnssNavigationMessageListener listener, String packageName,
- @Nullable String featureId, @NonNull String listenerIdentifier) {
- synchronized (mGnssNavigationMessageListeners) {
- return addGnssDataListenerLocked(
- /* request= */ null,
- listener,
- packageName,
- featureId,
- listenerIdentifier,
- mGnssNavigationMessageProvider,
- mGnssNavigationMessageListeners,
- this::removeGnssNavigationMessageListener);
- }
+ public void addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
+ String packageName, @Nullable String attributionTag) {
+ CallerIdentity identity = CallerIdentity.fromBinder(mContext, packageName, attributionTag);
+ identity.enforceLocationPermission(PERMISSION_FINE);
+
+ mGnssNavigationMessageProvider.addListener(identity, listener);
}
/**
* Removes a GNSS navigation message listener.
*/
public void removeGnssNavigationMessageListener(IGnssNavigationMessageListener listener) {
- synchronized (mGnssNavigationMessageListeners) {
- removeGnssDataListenerLocked(
- listener, mGnssNavigationMessageProvider, mGnssNavigationMessageListeners);
- }
+ mGnssNavigationMessageProvider.removeListener(listener);
}
/**
@@ -638,54 +400,29 @@
* Report location results to GNSS batching listener.
*/
public void onReportLocation(List<Location> locations) {
- IBatchedLocationCallback gnssBatchingCallback;
- LinkedListener<Void, IBatchedLocationCallback> gnssBatchingDeathCallback;
+ IBatchedLocationCallback callback;
+ CallerIdentity identity;
synchronized (mGnssBatchingLock) {
- gnssBatchingCallback = mGnssBatchingCallback;
- gnssBatchingDeathCallback = mGnssBatchingDeathCallback;
+ callback = mGnssBatchingCallback;
+ identity = mGnssBatchingIdentity;
}
- if (gnssBatchingCallback == null || gnssBatchingDeathCallback == null) {
+ if (callback == null || identity == null) {
return;
}
- int userId = UserHandle.getUserId(gnssBatchingDeathCallback.getCallerIdentity().mUid);
- if (!mLocationManagerInternal.isProviderEnabledForUser(GPS_PROVIDER, userId)) {
+ if (!mLocationManagerInternal.isProviderEnabledForUser(GPS_PROVIDER, identity.userId)) {
Log.w(TAG, "reportLocationBatch() called without user permission");
return;
}
try {
- gnssBatchingCallback.onLocationBatch(locations);
+ callback.onLocationBatch(locations);
} catch (RemoteException e) {
- Log.e(TAG, "reportLocationBatch() failed", e);
+ // ignore
}
}
- private boolean isThrottlingExempt(CallerIdentity callerIdentity) {
- if (callerIdentity.mUid == Process.SYSTEM_UID) {
- return true;
- }
-
- if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains(
- callerIdentity.mPackageName)) {
- return true;
- }
-
- synchronized (this) {
- Preconditions.checkState(mLocationManagerInternal != null);
- }
- return mLocationManagerInternal.isProviderPackage(callerIdentity.mPackageName);
- }
-
- private boolean checkLocationAppOp(String packageName) {
- synchronized (this) {
- Preconditions.checkState(mAppOpsManager != null);
- }
- return mAppOpsManager.checkOp(OP_FINE_LOCATION, Binder.getCallingUid(), packageName)
- == AppOpsManager.MODE_ALLOWED;
- }
-
/**
* Dump info for debugging.
*/
@@ -699,31 +436,24 @@
return;
}
- ipw.println("GnssMeasurement Listeners:");
+ ipw.println("Antenna Info Provider:");
ipw.increaseIndent();
- synchronized (mGnssMeasurementsListeners) {
- for (LinkedListenerBase listener : mGnssMeasurementsListeners.values()) {
- ipw.println(listener);
- }
- }
+ mGnssAntennaInfoProvider.dump(fd, ipw, args);
ipw.decreaseIndent();
- ipw.println("GnssNavigationMessage Listeners:");
+ ipw.println("Measurement Provider:");
ipw.increaseIndent();
- synchronized (mGnssNavigationMessageListeners) {
- for (LinkedListenerBase listener : mGnssNavigationMessageListeners.values()) {
- ipw.println(listener);
- }
- }
+ mGnssMeasurementsProvider.dump(fd, ipw, args);
ipw.decreaseIndent();
- ipw.println("GnssStatus Listeners:");
+ ipw.println("Navigation Message Provider:");
ipw.increaseIndent();
- synchronized (mGnssStatusListeners) {
- for (LinkedListenerBase listener : mGnssStatusListeners.values()) {
- ipw.println(listener);
- }
- }
+ mGnssNavigationMessageProvider.dump(fd, ipw, args);
+ ipw.decreaseIndent();
+
+ ipw.println("Status Provider:");
+ ipw.increaseIndent();
+ mGnssStatusProvider.dump(fd, ipw, args);
ipw.decreaseIndent();
synchronized (mGnssBatchingLock) {
diff --git a/services/core/java/com/android/server/location/util/listeners/IdentifiedRegistration.java b/services/core/java/com/android/server/location/util/listeners/IdentifiedRegistration.java
new file mode 100644
index 0000000..132be23
--- /dev/null
+++ b/services/core/java/com/android/server/location/util/listeners/IdentifiedRegistration.java
@@ -0,0 +1,69 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location.util.listeners;
+
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
+
+import android.annotation.Nullable;
+import android.location.util.identity.CallerIdentity;
+import android.location.util.listeners.AbstractListenerManager;
+import android.os.Process;
+
+import com.android.server.FgThread;
+
+import java.util.Objects;
+import java.util.concurrent.Executor;
+
+/**
+ * A listener manager for system server side implementations where client callers are identified via
+ * {@link CallerIdentity}. Listener callbacks going to other processes will be run on a direct
+ * executor, listener callbacks going to the same process will be run asynchronously.
+ *
+ * @param <TRequest> request type
+ * @param <TListener> listener type
+ */
+public class IdentifiedRegistration<TRequest, TListener> extends
+ AbstractListenerManager.Registration<TRequest, TListener> {
+
+ private static Executor chooseExecutor(CallerIdentity identity) {
+ // if a client is in the same process as us, binder calls will execute synchronously and
+ // we shouldn't run callbacks directly since they might be run under lock and deadlock
+ if (identity.pid == Process.myPid()) {
+ // there's a slight loophole here for pending intents - pending intent callbacks can
+ // always be run on the direct executor since they're always asynchronous, but honestly
+ // you shouldn't be using pending intent callbacks within the same process anyways
+ return FgThread.getExecutor();
+ } else {
+ return DIRECT_EXECUTOR;
+ }
+ }
+
+ private final CallerIdentity mCallerIdentity;
+
+ protected IdentifiedRegistration(@Nullable TRequest request, CallerIdentity callerIdentity,
+ TListener listener) {
+ super(request, chooseExecutor(callerIdentity), listener);
+ mCallerIdentity = Objects.requireNonNull(callerIdentity);
+ }
+
+ /**
+ * Returns the listener identity.
+ */
+ public CallerIdentity getIdentity() {
+ return mCallerIdentity;
+ }
+}
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
index 52750f3..2cb89b3 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/KeySyncTask.java
@@ -168,8 +168,7 @@
if (mCredentialType == LockPatternUtils.CREDENTIAL_TYPE_NONE) {
// Application keys for the user will not be available for sync.
Log.w(TAG, "Credentials are not set for user " + mUserId);
- if (generation < PlatformKeyManager.MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED
- || mUserId != UserHandle.USER_SYSTEM) {
+ if (generation < PlatformKeyManager.MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED) {
// Only invalidate keys with legacy protection param.
mPlatformKeyManager.invalidatePlatformKey(mUserId, generation);
}
@@ -178,8 +177,7 @@
if (isCustomLockScreen()) {
Log.w(TAG, "Unsupported credential type " + mCredentialType + " for user " + mUserId);
// Keys will be synced when user starts using non custom screen lock.
- if (generation < PlatformKeyManager.MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED
- || mUserId != UserHandle.USER_SYSTEM) {
+ if (generation < PlatformKeyManager.MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED) {
mRecoverableKeyStoreDb.invalidateKeysForUserIdOnCustomScreenLock(mUserId);
}
return;
diff --git a/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java b/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
index 0761cde..cb5ca85b 100644
--- a/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
+++ b/services/core/java/com/android/server/locksettings/recoverablekeystore/PlatformKeyManager.java
@@ -67,7 +67,7 @@
* @hide
*/
public class PlatformKeyManager {
- static final int MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED = 1000000;
+ static final int MIN_GENERATION_ID_FOR_UNLOCKED_DEVICE_REQUIRED = 1001000;
private static final String TAG = "PlatformKeyManager";
private static final String KEY_ALGORITHM = "AES";
@@ -434,21 +434,7 @@
if (userId == UserHandle.USER_SYSTEM) {
decryptionKeyProtection.setUnlockedDeviceRequired(true);
} else {
- // With setUnlockedDeviceRequired, KeyStore thinks that device is locked .
- decryptionKeyProtection.setUserAuthenticationRequired(true);
- decryptionKeyProtection.setUserAuthenticationValidityDurationSeconds(
- USER_AUTHENTICATION_VALIDITY_DURATION_SECONDS);
- // Bind decryption key to secondary profile lock screen secret.
- long secureUserId = getGateKeeperService().getSecureUserId(userId);
- // TODO(b/124095438): Propagate this failure instead of silently failing.
- if (secureUserId == GateKeeper.INVALID_SECURE_USER_ID) {
- Log.e(TAG, "No SID available for user " + userId);
- return;
- }
- decryptionKeyProtection
- .setBoundToSpecificSecureUserId(secureUserId)
- // Ignore caller uid which always belongs to the primary profile.
- .setCriticalToDeviceEncryption(true);
+ // Don't set protection params to prevent losing key.
}
// Store decryption key first since it is more likely to fail.
mKeyStore.setEntry(
diff --git a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
index caf2914..b1985e2 100644
--- a/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
+++ b/services/core/java/com/android/server/net/NetworkPolicyManagerService.java
@@ -1868,8 +1868,11 @@
mNetIdToSubId.put(state.network.netId, parseSubId(state));
}
if (state.networkInfo != null && state.networkInfo.isConnected()) {
+ // Policies matched by NPMS only match by subscriber ID or by ssid. Thus subtype
+ // in the object created here is never used and its value doesn't matter, so use
+ // NETWORK_TYPE_UNKNOWN.
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
- true);
+ true, TelephonyManager.NETWORK_TYPE_UNKNOWN /* subType */);
identified.put(state, ident);
}
}
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 10136b3..ff4407a 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -27,6 +27,8 @@
import static android.content.pm.PackageManager.PERMISSION_GRANTED;
import static android.net.ConnectivityManager.ACTION_TETHER_STATE_CHANGED;
import static android.net.ConnectivityManager.isNetworkTypeMobile;
+import static android.net.NetworkIdentity.COMBINE_SUBTYPE_ENABLED;
+import static android.net.NetworkIdentity.SUBTYPE_COMBINED;
import static android.net.NetworkStack.checkNetworkStackPermission;
import static android.net.NetworkStats.DEFAULT_NETWORK_ALL;
import static android.net.NetworkStats.IFACE_ALL;
@@ -45,6 +47,7 @@
import static android.net.NetworkStatsHistory.FIELD_ALL;
import static android.net.NetworkTemplate.buildTemplateMobileWildcard;
import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
+import static android.net.NetworkTemplate.getCollapsedRatType;
import static android.net.TrafficStats.KB_IN_BYTES;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.os.Trace.TRACE_TAG_NETWORK;
@@ -64,6 +67,9 @@
import static android.provider.Settings.Global.NETSTATS_UID_TAG_DELETE_AGE;
import static android.provider.Settings.Global.NETSTATS_UID_TAG_PERSIST_BYTES;
import static android.provider.Settings.Global.NETSTATS_UID_TAG_ROTATE_AGE;
+import static android.telephony.PhoneStateListener.LISTEN_NONE;
+import static android.telephony.PhoneStateListener.LISTEN_SERVICE_STATE;
+import static android.telephony.TelephonyManager.NETWORK_TYPE_UNKNOWN;
import static android.text.format.DateUtils.DAY_IN_MILLIS;
import static android.text.format.DateUtils.HOUR_IN_MILLIS;
import static android.text.format.DateUtils.MINUTE_IN_MILLIS;
@@ -109,6 +115,7 @@
import android.os.DropBoxManager;
import android.os.Environment;
import android.os.Handler;
+import android.os.HandlerExecutor;
import android.os.HandlerThread;
import android.os.IBinder;
import android.os.INetworkManagementService;
@@ -125,6 +132,8 @@
import android.provider.Settings.Global;
import android.service.NetworkInterfaceProto;
import android.service.NetworkStatsServiceDumpProto;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
import android.telephony.SubscriptionPlan;
import android.telephony.TelephonyManager;
import android.text.format.DateUtils;
@@ -157,6 +166,7 @@
import java.util.HashSet;
import java.util.List;
import java.util.Objects;
+import java.util.concurrent.Executor;
import java.util.concurrent.Semaphore;
import java.util.concurrent.TimeUnit;
@@ -173,6 +183,7 @@
private static final int MSG_PERFORM_POLL = 1;
// Perform polling, persist network, and register the global alert again.
private static final int MSG_PERFORM_POLL_REGISTER_ALERT = 2;
+ private static final int MSG_UPDATE_IFACES = 3;
/** Flags to control detail level of poll event. */
private static final int FLAG_PERSIST_NETWORK = 0x1;
@@ -280,6 +291,11 @@
@GuardedBy("mStatsLock")
private Network[] mDefaultNetworks = new Network[0];
+ /** Last states of all networks sent from ConnectivityService. */
+ @GuardedBy("mStatsLock")
+ @Nullable
+ private NetworkState[] mLastNetworkStates = null;
+
private final DropBoxNonMonotonicObserver mNonMonotonicObserver =
new DropBoxNonMonotonicObserver();
@@ -355,6 +371,12 @@
performPoll(FLAG_PERSIST_ALL);
break;
}
+ case MSG_UPDATE_IFACES: {
+ // If no cached states, ignore.
+ if (mLastNetworkStates == null) break;
+ updateIfaces(mDefaultNetworks, mLastNetworkStates, mActiveIface);
+ break;
+ }
case MSG_PERFORM_POLL_REGISTER_ALERT: {
performPoll(FLAG_PERSIST_NETWORK);
registerGlobalAlert();
@@ -407,6 +429,7 @@
final HandlerThread handlerThread = mDeps.makeHandlerThread();
handlerThread.start();
mHandler = new NetworkStatsHandler(handlerThread.getLooper());
+ mPhoneListener = new NetworkTypeListener(new HandlerExecutor(mHandler));
}
/**
@@ -486,6 +509,12 @@
mAlarmManager.setInexactRepeating(AlarmManager.ELAPSED_REALTIME, currentRealtime,
mSettings.getPollInterval(), pollIntent);
+ // TODO: listen to changes from all subscriptions.
+ // watch for networkType changes
+ if (!COMBINE_SUBTYPE_ENABLED) {
+ mTeleManager.listen(mPhoneListener, LISTEN_SERVICE_STATE);
+ }
+
registerGlobalAlert();
}
@@ -506,6 +535,10 @@
mContext.unregisterReceiver(mUserReceiver);
mContext.unregisterReceiver(mShutdownReceiver);
+ if (!COMBINE_SUBTYPE_ENABLED) {
+ mTeleManager.listen(mPhoneListener, LISTEN_NONE);
+ }
+
final long currentTime = mClock.millis();
// persist any pending stats
@@ -1156,6 +1189,38 @@
}
};
+ /**
+ * Receiver that watches for {@link TelephonyManager} changes, such as
+ * transitioning between Radio Access Technology(RAT) types.
+ */
+ @NonNull
+ private final NetworkTypeListener mPhoneListener;
+
+ class NetworkTypeListener extends PhoneStateListener {
+ private volatile int mLastCollapsedRatType = NETWORK_TYPE_UNKNOWN;
+
+ NetworkTypeListener(@NonNull Executor executor) {
+ super(executor);
+ }
+
+ @Override
+ public void onServiceStateChanged(@NonNull ServiceState ss) {
+ final int networkType = ss.getDataNetworkType();
+ final int collapsedRatType = getCollapsedRatType(networkType);
+ if (collapsedRatType == mLastCollapsedRatType) return;
+
+ if (LOGD) {
+ Log.d(TAG, "subtype changed for mobile: "
+ + mLastCollapsedRatType + " -> " + collapsedRatType);
+ }
+ // Protect service from frequently updating. Remove pending messages if any.
+ mHandler.removeMessages(MSG_UPDATE_IFACES);
+ mLastCollapsedRatType = collapsedRatType;
+ mHandler.sendMessageDelayed(
+ mHandler.obtainMessage(MSG_UPDATE_IFACES), mSettings.getPollDelay());
+ }
+ }
+
private void updateIfaces(
Network[] defaultNetworks,
NetworkState[] networkStates,
@@ -1177,7 +1242,8 @@
* they are combined under a single {@link NetworkIdentitySet}.
*/
@GuardedBy("mStatsLock")
- private void updateIfacesLocked(Network[] defaultNetworks, NetworkState[] states) {
+ private void updateIfacesLocked(@Nullable Network[] defaultNetworks,
+ @NonNull NetworkState[] states) {
if (!mSystemReady) return;
if (LOGV) Slog.v(TAG, "updateIfacesLocked()");
@@ -1197,13 +1263,16 @@
mDefaultNetworks = defaultNetworks;
}
+ mLastNetworkStates = states;
+
final ArraySet<String> mobileIfaces = new ArraySet<>();
for (NetworkState state : states) {
if (state.networkInfo.isConnected()) {
final boolean isMobile = isNetworkTypeMobile(state.networkInfo.getType());
final boolean isDefault = ArrayUtils.contains(mDefaultNetworks, state.network);
+ final int subType = getSubTypeForState(state);
final NetworkIdentity ident = NetworkIdentity.buildNetworkIdentity(mContext, state,
- isDefault);
+ isDefault, subType);
// Traffic occurring on the base interface is always counted for
// both total usage and UID details.
@@ -1264,6 +1333,22 @@
mMobileIfaces = mobileIfaces.toArray(new String[mobileIfaces.size()]);
}
+ /**
+ * If combine subtype is not enabled. For networks with {@code TRANSPORT_CELLULAR}, get
+ * subType that obtained through {@link PhoneStateListener}. Otherwise, return 0 given that
+ * other networks with different transport types do not actually fill this value.
+ */
+ private int getSubTypeForState(@NonNull NetworkState state) {
+ if (COMBINE_SUBTYPE_ENABLED) return SUBTYPE_COMBINED;
+
+ if (!state.networkCapabilities.hasTransport(NetworkCapabilities.TRANSPORT_CELLULAR)) {
+ return 0;
+ }
+
+ // TODO: return different subType for different subscriptions.
+ return mPhoneListener.mLastCollapsedRatType;
+ }
+
private static <K> NetworkIdentitySet findOrCreateNetworkIdentitySet(
ArrayMap<K, NetworkIdentitySet> map, K key) {
NetworkIdentitySet ident = map.get(key);
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 20ad87a..7003905 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -85,6 +85,9 @@
import static android.service.notification.NotificationListenerService.REASON_TIMEOUT;
import static android.service.notification.NotificationListenerService.REASON_UNAUTOBUNDLED;
import static android.service.notification.NotificationListenerService.REASON_USER_STOPPED;
+import static android.service.notification.NotificationListenerService.Ranking.RANKING_DEMOTED;
+import static android.service.notification.NotificationListenerService.Ranking.RANKING_PROMOTED;
+import static android.service.notification.NotificationListenerService.Ranking.RANKING_UNCHANGED;
import static android.service.notification.NotificationListenerService.TRIM_FULL;
import static android.service.notification.NotificationListenerService.TRIM_LIGHT;
import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
@@ -8344,6 +8347,9 @@
record.isInterruptive(),
record.isConversation(),
record.getShortcutInfo(),
+ record.getRankingScore() == 0
+ ? RANKING_UNCHANGED
+ : (record.getRankingScore() > 0 ? RANKING_PROMOTED : RANKING_DEMOTED),
record.getNotification().isBubbleNotification()
);
rankings.add(ranking);
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index 1b271a7..1d5c304 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -47,6 +47,7 @@
import android.content.pm.ParceledListSlice;
import android.content.pm.ResolveInfo;
import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutQueryWrapper;
import android.content.pm.ShortcutServiceInternal;
import android.content.pm.ShortcutServiceInternal.ShortcutChangeListener;
import android.content.pm.UserInfo;
@@ -698,13 +699,19 @@
}
@Override
- public ParceledListSlice getShortcuts(String callingPackage, long changedSince,
- String packageName, List shortcutIds, List<LocusId> locusIds,
- ComponentName componentName, int flags, UserHandle targetUser) {
+ public ParceledListSlice getShortcuts(@NonNull final String callingPackage,
+ @NonNull final ShortcutQueryWrapper query, @NonNull final UserHandle targetUser) {
ensureShortcutPermission(callingPackage);
if (!canAccessProfile(targetUser.getIdentifier(), "Cannot get shortcuts")) {
return new ParceledListSlice<>(Collections.EMPTY_LIST);
}
+
+ final long changedSince = query.getChangedSince();
+ final String packageName = query.getPackage();
+ final List<String> shortcutIds = query.getShortcutIds();
+ final List<LocusId> locusIds = query.getLocusIds();
+ final ComponentName componentName = query.getActivity();
+ final int flags = query.getQueryFlags();
if (shortcutIds != null && packageName == null) {
throw new IllegalArgumentException(
"To query by shortcut ID, package name must also be set");
@@ -723,16 +730,17 @@
}
@Override
- public void registerShortcutChangeCallback(String callingPackage, long changedSince,
- String packageName, List shortcutIds, List<LocusId> locusIds,
- ComponentName componentName, int flags, IShortcutChangeCallback callback) {
+ public void registerShortcutChangeCallback(@NonNull final String callingPackage,
+ @NonNull final ShortcutQueryWrapper query,
+ @NonNull final IShortcutChangeCallback callback) {
+
ensureShortcutPermission(callingPackage);
- if (shortcutIds != null && packageName == null) {
+ if (query.getShortcutIds() != null && query.getPackage() == null) {
throw new IllegalArgumentException(
"To query by shortcut ID, package name must also be set");
}
- if (locusIds != null && packageName == null) {
+ if (query.getLocusIds() != null && query.getPackage() == null) {
throw new IllegalArgumentException(
"To query by locus ID, package name must also be set");
}
@@ -744,10 +752,7 @@
user = null;
}
- // TODO: When ShortcutQueryWrapper (ag/10323729) is available, pass that directly.
- ShortcutChangeHandler.QueryInfo query = new ShortcutChangeHandler.QueryInfo(
- changedSince, packageName, shortcutIds, locusIds, componentName, flags, user);
- mShortcutChangeHandler.addShortcutChangeCallback(callback, query);
+ mShortcutChangeHandler.addShortcutChangeCallback(callback, query, user);
}
@Override
@@ -1081,9 +1086,11 @@
new RemoteCallbackList<>();
public synchronized void addShortcutChangeCallback(IShortcutChangeCallback callback,
- QueryInfo query) {
+ ShortcutQueryWrapper query, UserHandle user) {
mCallbacks.unregister(callback);
- mCallbacks.register(callback, query);
+ mCallbacks.register(callback, new QueryInfo(query.getChangedSince(),
+ query.getPackage(), query.getShortcutIds(), query.getLocusIds(),
+ query.getActivity(), query.getQueryFlags(), user));
}
public synchronized void removeShortcutChangeCallback(
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index 24ebd32..0c7a135 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -17317,11 +17317,13 @@
// and whether there are any web-nav filters that fit the profile for running
// a verification pass now.
if (needToVerify) {
+ final boolean needsVerification = needsNetworkVerificationLPr(packageName);
final int verificationId = mIntentFilterVerificationToken++;
for (ParsedActivity a : activities) {
for (ParsedIntentInfo filter : a.getIntents()) {
- if (filter.handlesWebUris(true)
- && needsNetworkVerificationLPr(a.getPackageName())) {
+ // Run verification against hosts mentioned in any web-nav intent filter,
+ // even if the filter matches non-web schemes as well
+ if (needsVerification && filter.handlesWebUris(false)) {
if (DEBUG_DOMAIN_VERIFICATION) Slog.d(TAG,
"Verification needed for IntentFilter:" + filter.toString());
mIntentFilterVerifier.addOneIntentFilterVerification(
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 8280a61..cefa841 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -41,10 +41,8 @@
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentSender;
-import android.content.pm.CrossProfileAppsInternal;
import android.content.pm.PackageManager;
import android.content.pm.PackageManager.NameNotFoundException;
-import android.content.pm.PackageManagerInternal;
import android.content.pm.ShortcutServiceInternal;
import android.content.pm.UserInfo;
import android.content.pm.UserInfo.UserInfoFlag;
@@ -261,8 +259,6 @@
/** Installs system packages based on user-type. */
private final UserSystemPackageInstaller mSystemPackageInstaller;
- private PackageManagerInternal mPmInternal;
- private CrossProfileAppsInternal mCrossProfileAppsInternal;
private DevicePolicyManagerInternal mDevicePolicyManagerInternal;
/**
@@ -3770,6 +3766,19 @@
void finishRemoveUser(final @UserIdInt int userId) {
if (DBG) Slog.i(LOG_TAG, "finishRemoveUser " + userId);
+
+ UserInfo user;
+ synchronized (mUsersLock) {
+ user = getUserInfoLU(userId);
+ }
+ if (user != null && user.preCreated) {
+ Slog.i(LOG_TAG, "Removing a precreated user with user id: " + userId);
+ // Don't want to fire ACTION_USER_REMOVED, so cleanup the state and exit early.
+ LocalServices.getService(ActivityTaskManagerInternal.class).onUserStopped(userId);
+ removeUserState(userId);
+ return;
+ }
+
// Let other services shutdown any activity and clean up their state before completely
// wiping the user's system directory and removing from the user list
long ident = Binder.clearCallingIdentity();
@@ -5133,23 +5142,6 @@
}
}
- /** Retrieves the internal package manager interface. */
- private PackageManagerInternal getPackageManagerInternal() {
- // Don't need to synchonize; worst-case scenario LocalServices will be called twice.
- if (mPmInternal == null) {
- mPmInternal = LocalServices.getService(PackageManagerInternal.class);
- }
- return mPmInternal;
- }
-
- /** Retrieve the internal cross profile apps interface. */
- private CrossProfileAppsInternal getCrossProfileAppsInternal() {
- if (mCrossProfileAppsInternal == null) {
- mCrossProfileAppsInternal = LocalServices.getService(CrossProfileAppsInternal.class);
- }
- return mCrossProfileAppsInternal;
- }
-
/** Returns the internal device policy manager interface. */
private DevicePolicyManagerInternal getDevicePolicyManagerInternal() {
if (mDevicePolicyManagerInternal == null) {
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 8d3f32a..17fbfe6 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -714,19 +714,6 @@
restriction = UserManager.DISALLOW_SHARE_LOCATION;
break;
- case android.provider.Settings.Secure.LOCATION_PROVIDERS_ALLOWED:
- if (mUserManager.hasUserRestriction(
- UserManager.DISALLOW_CONFIG_LOCATION, UserHandle.of(userId))
- && callingUid != Process.SYSTEM_UID) {
- return true;
- } else if (value != null && value.startsWith("-")) {
- // See SettingsProvider.updateLocationProvidersAllowedLocked. "-" is to disable
- // a provider, which should be allowed even if the user restriction is set.
- return false;
- }
- restriction = UserManager.DISALLOW_SHARE_LOCATION;
- break;
-
case android.provider.Settings.Secure.INSTALL_NON_MARKET_APPS:
if ("0".equals(value)) {
return false;
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index b50c22e..8882650 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -59,6 +59,7 @@
import com.android.internal.annotations.GuardedBy;
import com.android.internal.util.DumpUtils;
import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.Preconditions;
import com.android.server.LocalServices;
import com.android.server.PackageWatchdog;
import com.android.server.SystemConfig;
@@ -69,6 +70,10 @@
import java.io.File;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
import java.security.SecureRandom;
import java.time.Instant;
import java.time.temporal.ChronoUnit;
@@ -79,20 +84,43 @@
import java.util.List;
import java.util.Random;
import java.util.Set;
-import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executor;
-import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.TimeUnit;
+import java.util.function.Supplier;
/**
* Implementation of service that manages APK level rollbacks.
*
* Threading model:
*
+ * Each method falls into one of the 3 categories:
* - @AnyThread annotates thread-safe methods.
* - @WorkerThread annotates methods that should be called from the handler thread only.
+ * - @ExtThread annotates methods that should never be called from the handler thread.
+ *
+ * Runtime checks that enforce thread annotations:
+ * - #assertInWorkerThread checks a method is called from the handler thread only. The handler
+ * thread is where we handle state changes. By having all state changes in the same thread, each
+ * method can run to complete without worrying about state changes in-between locks. It also
+ * allows us to remove the use of lock and reduce the chance of deadlock.
+ * - #assertNotInWorkerThread checks a method is never called from the handler thread. These methods
+ * are intended for external entities and should never change internal states directly. Instead
+ * they should dispatch tasks to the handler to make state changes. Violation will fail
+ * #assertInWorkerThread. #assertNotInWorkerThread and #assertInWorkerThread are
+ * mutually-exclusive to ensure @WorkerThread methods and @ExtThread ones never call into each
+ * other.
*/
class RollbackManagerServiceImpl extends IRollbackManager.Stub {
+ /**
+ * Denotes that the annotated methods is intended for external entities and should be called on
+ * an external thread. By 'external' we mean any thread that is not the handler thread.
+ */
+ @Retention(RetentionPolicy.SOURCE)
+ @Target({ElementType.METHOD})
+ private @interface ExtThread {
+ }
private static final String TAG = "RollbackManager";
private static final boolean LOCAL_LOGV = Log.isLoggable(TAG, Log.VERBOSE);
@@ -101,32 +129,26 @@
private static final long DEFAULT_ROLLBACK_LIFETIME_DURATION_MILLIS =
TimeUnit.DAYS.toMillis(14);
- // Lock used to synchronize accesses to in-memory rollback data
- // structures. By convention, methods with the suffix "Locked" require
- // mLock is held when they are called.
- private final Object mLock = new Object();
-
- // No need for guarding with lock because value is only accessed in handler thread
- // and the value will be written on boot complete. Initialization here happens before
- // handler threads are running so that's fine.
+ // Accessed on the handler thread only.
private long mRollbackLifetimeDurationInMillis = DEFAULT_ROLLBACK_LIFETIME_DURATION_MILLIS;
private static final long HANDLER_THREAD_TIMEOUT_DURATION_MILLIS =
TimeUnit.MINUTES.toMillis(10);
// Used for generating rollback IDs.
+ // Accessed on the handler thread only.
private final Random mRandom = new SecureRandom();
- // Set of allocated rollback ids
- @GuardedBy("mLock")
+ // Set of allocated rollback ids.
+ // Accessed on the handler thread only.
private final SparseBooleanArray mAllocatedRollbackIds = new SparseBooleanArray();
// The list of all rollbacks, including available and committed rollbacks.
- @GuardedBy("mLock")
+ // Accessed on the handler thread only.
private final List<Rollback> mRollbacks;
// Apk sessions from a staged session with no matching rollback.
- @GuardedBy("mLock")
+ // Accessed on the handler thread only.
private final IntArray mOrphanedApkSessionIds = new IntArray();
private final RollbackStore mRollbackStore;
@@ -146,7 +168,7 @@
// This field stores the difference in Millis between the uptime (millis since device
// has booted) and current time (device wall clock) - it's used to update rollback
// timestamps when the time is changed, by the user or by change of timezone.
- // No need for guarding with lock because value is only accessed in handler thread.
+ // Accessed on the handler thread only.
private long mRelativeBootTime = calculateRelativeBootTime();
RollbackManagerServiceImpl(Context context) {
@@ -162,19 +184,17 @@
mAppDataRollbackHelper = new AppDataRollbackHelper(mInstaller);
// Load rollback data from device storage.
- synchronized (mLock) {
- mRollbacks = mRollbackStore.loadRollbacks();
- if (!context.getPackageManager().isDeviceUpgrading()) {
- for (Rollback rollback : mRollbacks) {
- mAllocatedRollbackIds.put(rollback.info.getRollbackId(), true);
- }
- } else {
- // Delete rollbacks when build fingerprint has changed.
- for (Rollback rollback : mRollbacks) {
- rollback.delete(mAppDataRollbackHelper);
- }
- mRollbacks.clear();
+ mRollbacks = mRollbackStore.loadRollbacks();
+ if (!context.getPackageManager().isDeviceUpgrading()) {
+ for (Rollback rollback : mRollbacks) {
+ mAllocatedRollbackIds.put(rollback.info.getRollbackId(), true);
}
+ } else {
+ // Delete rollbacks when build fingerprint has changed.
+ for (Rollback rollback : mRollbacks) {
+ rollback.delete(mAppDataRollbackHelper);
+ }
+ mRollbacks.clear();
}
// Kick off and start monitoring the handler thread.
@@ -198,6 +218,8 @@
mContext.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ assertInWorkerThread();
+
if (Intent.ACTION_PACKAGE_ENABLE_ROLLBACK.equals(intent.getAction())) {
int token = intent.getIntExtra(
PackageManagerInternal.EXTRA_ENABLE_ROLLBACK_TOKEN, -1);
@@ -207,6 +229,7 @@
queueSleepIfNeeded();
getHandler().post(() -> {
+ assertInWorkerThread();
boolean success = enableRollback(sessionId);
int ret = PackageManagerInternal.ENABLE_ROLLBACK_SUCCEEDED;
if (!success) {
@@ -232,18 +255,18 @@
mContext.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ assertInWorkerThread();
+
if (Intent.ACTION_CANCEL_ENABLE_ROLLBACK.equals(intent.getAction())) {
int sessionId = intent.getIntExtra(
PackageManagerInternal.EXTRA_ENABLE_ROLLBACK_SESSION_ID, -1);
if (LOCAL_LOGV) {
Slog.v(TAG, "broadcast=ACTION_CANCEL_ENABLE_ROLLBACK id=" + sessionId);
}
- synchronized (mLock) {
- Rollback rollback = getRollbackForSessionLocked(sessionId);
- if (rollback != null && rollback.isEnabling()) {
- mRollbacks.remove(rollback);
- rollback.delete(mAppDataRollbackHelper);
- }
+ Rollback rollback = getRollbackForSession(sessionId);
+ if (rollback != null && rollback.isEnabling()) {
+ mRollbacks.remove(rollback);
+ rollback.delete(mAppDataRollbackHelper);
}
}
}
@@ -253,6 +276,8 @@
mContext.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ assertInWorkerThread();
+
if (Intent.ACTION_USER_ADDED.equals(intent.getAction())) {
final int newUserId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, -1);
if (newUserId == -1) {
@@ -266,6 +291,32 @@
registerTimeChangeReceiver();
}
+ private <U> U awaitResult(Supplier<U> supplier) {
+ assertNotInWorkerThread();
+ try {
+ return CompletableFuture.supplyAsync(supplier, mExecutor).get();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void awaitResult(Runnable runnable) {
+ assertNotInWorkerThread();
+ try {
+ CompletableFuture.runAsync(runnable, mExecutor).get();
+ } catch (InterruptedException | ExecutionException e) {
+ throw new RuntimeException(e);
+ }
+ }
+
+ private void assertInWorkerThread() {
+ Preconditions.checkState(mHandlerThread.getLooper().isCurrentThread());
+ }
+
+ private void assertNotInWorkerThread() {
+ Preconditions.checkState(!mHandlerThread.getLooper().isCurrentThread());
+ }
+
@AnyThread
private void registerUserCallbacks(UserHandle user) {
Context context = getContextAsUser(user);
@@ -284,6 +335,8 @@
context.registerReceiver(new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ assertInWorkerThread();
+
String action = intent.getAction();
if (Intent.ACTION_PACKAGE_REPLACED.equals(action)) {
String packageName = intent.getData().getSchemeSpecificPart();
@@ -295,8 +348,7 @@
if (Intent.ACTION_PACKAGE_FULLY_REMOVED.equals(action)) {
String packageName = intent.getData().getSchemeSpecificPart();
if (LOCAL_LOGV) {
- Slog.v(TAG, "broadcast=ACTION_PACKAGE_FULLY_REMOVED"
- + " pkg=" + packageName);
+ Slog.v(TAG, "broadcast=ACTION_PACKAGE_FULLY_REMOVED pkg=" + packageName);
}
onPackageFullyRemoved(packageName);
}
@@ -304,10 +356,13 @@
}, filter, null, getHandler());
}
+ @ExtThread
@Override
public ParceledListSlice getAvailableRollbacks() {
+ assertNotInWorkerThread();
enforceManageRollbacks("getAvailableRollbacks");
- synchronized (mLock) {
+ return awaitResult(() -> {
+ assertInWorkerThread();
List<RollbackInfo> rollbacks = new ArrayList<>();
for (int i = 0; i < mRollbacks.size(); ++i) {
Rollback rollback = mRollbacks.get(i);
@@ -316,14 +371,17 @@
}
}
return new ParceledListSlice<>(rollbacks);
- }
+ });
}
+ @ExtThread
@Override
public ParceledListSlice<RollbackInfo> getRecentlyCommittedRollbacks() {
+ assertNotInWorkerThread();
enforceManageRollbacks("getRecentlyCommittedRollbacks");
- synchronized (mLock) {
+ return awaitResult(() -> {
+ assertInWorkerThread();
List<RollbackInfo> rollbacks = new ArrayList<>();
for (int i = 0; i < mRollbacks.size(); ++i) {
Rollback rollback = mRollbacks.get(i);
@@ -332,12 +390,14 @@
}
}
return new ParceledListSlice<>(rollbacks);
- }
+ });
}
+ @ExtThread
@Override
public void commitRollback(int rollbackId, ParceledListSlice causePackages,
String callerPackageName, IntentSender statusReceiver) {
+ assertNotInWorkerThread();
enforceManageRollbacks("commitRollback");
final int callingUid = Binder.getCallingUid();
@@ -354,17 +414,15 @@
final BroadcastReceiver timeChangeIntentReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
+ assertInWorkerThread();
final long oldRelativeBootTime = mRelativeBootTime;
mRelativeBootTime = calculateRelativeBootTime();
final long timeDifference = mRelativeBootTime - oldRelativeBootTime;
- synchronized (mLock) {
- Iterator<Rollback> iter = mRollbacks.iterator();
- while (iter.hasNext()) {
- Rollback rollback = iter.next();
- rollback.setTimestamp(
- rollback.getTimestamp().plusMillis(timeDifference));
- }
+ Iterator<Rollback> iter = mRollbacks.iterator();
+ while (iter.hasNext()) {
+ Rollback rollback = iter.next();
+ rollback.setTimestamp(rollback.getTimestamp().plusMillis(timeDifference));
}
}
};
@@ -387,6 +445,7 @@
@WorkerThread
private void commitRollbackInternal(int rollbackId, List<VersionedPackage> causePackages,
String callerPackageName, IntentSender statusReceiver) {
+ assertInWorkerThread();
Slog.i(TAG, "commitRollback id=" + rollbackId + " caller=" + callerPackageName);
Rollback rollback = getRollbackForId(rollbackId);
@@ -399,57 +458,60 @@
rollback.commit(mContext, causePackages, callerPackageName, statusReceiver);
}
+ @ExtThread
@Override
public void reloadPersistedData() {
+ assertNotInWorkerThread();
mContext.enforceCallingOrSelfPermission(
Manifest.permission.TEST_MANAGE_ROLLBACKS,
"reloadPersistedData");
- CountDownLatch latch = new CountDownLatch(1);
- getHandler().post(() -> {
- synchronized (mLock) {
- mRollbacks.clear();
- mRollbacks.addAll(mRollbackStore.loadRollbacks());
- }
- latch.countDown();
+ awaitResult(() -> {
+ assertInWorkerThread();
+ mRollbacks.clear();
+ mRollbacks.addAll(mRollbackStore.loadRollbacks());
});
+ }
- try {
- latch.await();
- } catch (InterruptedException ie) {
- throw new IllegalStateException("RollbackManagerHandlerThread interrupted");
+ @WorkerThread
+ private void expireRollbackForPackageInternal(String packageName) {
+ assertInWorkerThread();
+ Iterator<Rollback> iter = mRollbacks.iterator();
+ while (iter.hasNext()) {
+ Rollback rollback = iter.next();
+ if (rollback.includesPackage(packageName)) {
+ iter.remove();
+ rollback.delete(mAppDataRollbackHelper);
+ }
}
}
+ @ExtThread
@Override
public void expireRollbackForPackage(String packageName) {
+ assertNotInWorkerThread();
mContext.enforceCallingOrSelfPermission(
Manifest.permission.TEST_MANAGE_ROLLBACKS,
"expireRollbackForPackage");
- synchronized (mLock) {
- Iterator<Rollback> iter = mRollbacks.iterator();
- while (iter.hasNext()) {
- Rollback rollback = iter.next();
- if (rollback.includesPackage(packageName)) {
- iter.remove();
- rollback.delete(mAppDataRollbackHelper);
- }
- }
- }
+ awaitResult(() -> expireRollbackForPackageInternal(packageName));
}
+ @ExtThread
@Override
public void blockRollbackManager(long millis) {
+ assertNotInWorkerThread();
mContext.enforceCallingOrSelfPermission(
Manifest.permission.TEST_MANAGE_ROLLBACKS,
"blockRollbackManager");
getHandler().post(() -> {
+ assertInWorkerThread();
mSleepDuration.addLast(millis);
});
}
@WorkerThread
private void queueSleepIfNeeded() {
+ assertInWorkerThread();
if (mSleepDuration.size() == 0) {
return;
}
@@ -458,6 +520,7 @@
return;
}
getHandler().post(() -> {
+ assertInWorkerThread();
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
@@ -466,35 +529,29 @@
});
}
+ @ExtThread
void onUnlockUser(int userId) {
+ assertNotInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "onUnlockUser id=" + userId);
}
// In order to ensure that no package begins running while a backup or restore is taking
// place, onUnlockUser must remain blocked until all pending backups and restores have
// completed.
- CountDownLatch latch = new CountDownLatch(1);
- getHandler().post(() -> {
+ awaitResult(() -> {
+ assertInWorkerThread();
final List<Rollback> rollbacks;
- synchronized (mLock) {
- rollbacks = new ArrayList<>(mRollbacks);
- }
+ rollbacks = new ArrayList<>(mRollbacks);
for (int i = 0; i < rollbacks.size(); i++) {
Rollback rollback = rollbacks.get(i);
rollback.commitPendingBackupAndRestoreForUser(userId, mAppDataRollbackHelper);
}
-
- latch.countDown();
-
- destroyCeSnapshotsForExpiredRollbacks(userId);
});
- try {
- latch.await();
- } catch (InterruptedException ie) {
- throw new IllegalStateException("RollbackManagerHandlerThread interrupted");
- }
+ getHandler().post(() -> {
+ destroyCeSnapshotsForExpiredRollbacks(userId);
+ });
}
@WorkerThread
@@ -508,6 +565,7 @@
@WorkerThread
private void updateRollbackLifetimeDurationInMillis() {
+ assertInWorkerThread();
mRollbackLifetimeDurationInMillis = DeviceConfig.getLong(
DeviceConfig.NAMESPACE_ROLLBACK_BOOT,
RollbackManager.PROPERTY_ROLLBACK_LIFETIME_MILLIS,
@@ -523,6 +581,7 @@
mExecutor, properties -> updateRollbackLifetimeDurationInMillis());
getHandler().post(() -> {
+ assertInWorkerThread();
updateRollbackLifetimeDurationInMillis();
runExpiration();
@@ -531,32 +590,30 @@
List<Rollback> enabling = new ArrayList<>();
List<Rollback> restoreInProgress = new ArrayList<>();
Set<String> apexPackageNames = new HashSet<>();
- synchronized (mLock) {
- Iterator<Rollback> iter = mRollbacks.iterator();
- while (iter.hasNext()) {
- Rollback rollback = iter.next();
- if (!rollback.isStaged()) {
- // We only care about staged rollbacks here
- continue;
- }
-
- PackageInstaller.SessionInfo session = mContext.getPackageManager()
- .getPackageInstaller().getSessionInfo(rollback.getStagedSessionId());
- if (session == null || session.isStagedSessionFailed()) {
- iter.remove();
- rollback.delete(mAppDataRollbackHelper);
- continue;
- }
-
- if (session.isStagedSessionApplied()) {
- if (rollback.isEnabling()) {
- enabling.add(rollback);
- } else if (rollback.isRestoreUserDataInProgress()) {
- restoreInProgress.add(rollback);
- }
- }
- apexPackageNames.addAll(rollback.getApexPackageNames());
+ Iterator<Rollback> iter = mRollbacks.iterator();
+ while (iter.hasNext()) {
+ Rollback rollback = iter.next();
+ if (!rollback.isStaged()) {
+ // We only care about staged rollbacks here
+ continue;
}
+
+ PackageInstaller.SessionInfo session = mContext.getPackageManager()
+ .getPackageInstaller().getSessionInfo(rollback.getStagedSessionId());
+ if (session == null || session.isStagedSessionFailed()) {
+ iter.remove();
+ rollback.delete(mAppDataRollbackHelper);
+ continue;
+ }
+
+ if (session.isStagedSessionApplied()) {
+ if (rollback.isEnabling()) {
+ enabling.add(rollback);
+ } else if (rollback.isRestoreUserDataInProgress()) {
+ restoreInProgress.add(rollback);
+ }
+ }
+ apexPackageNames.addAll(rollback.getApexPackageNames());
}
for (Rollback rollback : enabling) {
@@ -575,9 +632,7 @@
onPackageReplaced(apexPackageName);
}
- synchronized (mLock) {
- mOrphanedApkSessionIds.clear();
- }
+ mOrphanedApkSessionIds.clear();
mPackageHealthObserver.onBootCompletedAsync();
});
@@ -590,21 +645,20 @@
*/
@WorkerThread
private void onPackageReplaced(String packageName) {
+ assertInWorkerThread();
// TODO: Could this end up incorrectly deleting a rollback for a
// package that is about to be installed?
long installedVersion = getInstalledPackageVersion(packageName);
- synchronized (mLock) {
- Iterator<Rollback> iter = mRollbacks.iterator();
- while (iter.hasNext()) {
- Rollback rollback = iter.next();
- // TODO: Should we remove rollbacks in the ENABLING state here?
- if ((rollback.isEnabling() || rollback.isAvailable())
- && rollback.includesPackageWithDifferentVersion(packageName,
- installedVersion)) {
- iter.remove();
- rollback.delete(mAppDataRollbackHelper);
- }
+ Iterator<Rollback> iter = mRollbacks.iterator();
+ while (iter.hasNext()) {
+ Rollback rollback = iter.next();
+ // TODO: Should we remove rollbacks in the ENABLING state here?
+ if ((rollback.isEnabling() || rollback.isAvailable())
+ && rollback.includesPackageWithDifferentVersion(packageName,
+ installedVersion)) {
+ iter.remove();
+ rollback.delete(mAppDataRollbackHelper);
}
}
}
@@ -615,7 +669,8 @@
*/
@WorkerThread
private void onPackageFullyRemoved(String packageName) {
- expireRollbackForPackage(packageName);
+ assertInWorkerThread();
+ expireRollbackForPackageInternal(packageName);
}
/**
@@ -643,27 +698,24 @@
// Schedules future expiration as appropriate.
@WorkerThread
private void runExpiration() {
+ assertInWorkerThread();
Instant now = Instant.now();
Instant oldest = null;
- synchronized (mLock) {
- Iterator<Rollback> iter = mRollbacks.iterator();
- while (iter.hasNext()) {
- Rollback rollback = iter.next();
- if (!rollback.isAvailable()) {
- continue;
+ Iterator<Rollback> iter = mRollbacks.iterator();
+ while (iter.hasNext()) {
+ Rollback rollback = iter.next();
+ if (!rollback.isAvailable()) {
+ continue;
+ }
+ Instant rollbackTimestamp = rollback.getTimestamp();
+ if (!now.isBefore(rollbackTimestamp.plusMillis(mRollbackLifetimeDurationInMillis))) {
+ if (LOCAL_LOGV) {
+ Slog.v(TAG, "runExpiration id=" + rollback.info.getRollbackId());
}
- Instant rollbackTimestamp = rollback.getTimestamp();
- if (!now.isBefore(
- rollbackTimestamp
- .plusMillis(mRollbackLifetimeDurationInMillis))) {
- if (LOCAL_LOGV) {
- Slog.v(TAG, "runExpiration id=" + rollback.info.getRollbackId());
- }
- iter.remove();
- rollback.delete(mAppDataRollbackHelper);
- } else if (oldest == null || oldest.isAfter(rollbackTimestamp)) {
- oldest = rollbackTimestamp;
- }
+ iter.remove();
+ rollback.delete(mAppDataRollbackHelper);
+ } else if (oldest == null || oldest.isAfter(rollbackTimestamp)) {
+ oldest = rollbackTimestamp;
}
}
@@ -706,6 +758,7 @@
*/
@WorkerThread
private boolean enableRollback(int sessionId) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "enableRollback sessionId=" + sessionId);
}
@@ -726,36 +779,29 @@
// Check to see if this is the apk session for a staged session with
// rollback enabled.
- synchronized (mLock) {
- for (int i = 0; i < mRollbacks.size(); ++i) {
- Rollback rollback = mRollbacks.get(i);
- if (rollback.getApkSessionId() == parentSession.getSessionId()) {
- // This is the apk session for a staged session with rollback enabled. We do
- // not need to create a new rollback for this session.
- return true;
- }
+ for (int i = 0; i < mRollbacks.size(); ++i) {
+ Rollback rollback = mRollbacks.get(i);
+ if (rollback.getApkSessionId() == parentSession.getSessionId()) {
+ // This is the apk session for a staged session with rollback enabled. We do
+ // not need to create a new rollback for this session.
+ return true;
}
}
// Check to see if this is the apk session for a staged session for which rollback was
// cancelled.
- synchronized (mLock) {
- if (mOrphanedApkSessionIds.indexOf(parentSession.getSessionId()) != -1) {
- Slog.w(TAG, "Not enabling rollback for apk as no matching staged session "
- + "rollback exists");
- return false;
- }
+ if (mOrphanedApkSessionIds.indexOf(parentSession.getSessionId()) != -1) {
+ Slog.w(TAG, "Not enabling rollback for apk as no matching staged session "
+ + "rollback exists");
+ return false;
}
- Rollback newRollback;
- synchronized (mLock) {
- // See if we already have a Rollback that contains this package
- // session. If not, create a new Rollback for the parent session
- // that we will use for all the packages in the session.
- newRollback = getRollbackForSessionLocked(packageSession.getSessionId());
- if (newRollback == null) {
- newRollback = createNewRollbackLocked(parentSession);
- }
+ // See if we already have a Rollback that contains this package
+ // session. If not, create a new Rollback for the parent session
+ // that we will use for all the packages in the session.
+ Rollback newRollback = getRollbackForSession(packageSession.getSessionId());
+ if (newRollback == null) {
+ newRollback = createNewRollback(parentSession);
}
return enableRollbackForPackageSession(newRollback, packageSession);
@@ -771,6 +817,7 @@
@WorkerThread
private boolean enableRollbackForPackageSession(Rollback rollback,
PackageInstaller.SessionInfo session) {
+ assertInWorkerThread();
// TODO: Don't attempt to enable rollback for split installs.
final int installFlags = session.installFlags;
if ((installFlags & PackageManager.INSTALL_ENABLE_ROLLBACK) == 0) {
@@ -857,15 +904,18 @@
appInfo.splitSourceDirs, session.rollbackDataPolicy);
}
+ @ExtThread
@Override
public void snapshotAndRestoreUserData(String packageName, int[] userIds, int appId,
long ceDataInode, String seInfo, int token) {
+ assertNotInWorkerThread();
if (Binder.getCallingUid() != Process.SYSTEM_UID) {
throw new SecurityException(
"snapshotAndRestoreUserData may only be called by the system.");
}
getHandler().post(() -> {
+ assertInWorkerThread();
snapshotUserDataInternal(packageName, userIds);
restoreUserDataInternal(packageName, userIds, appId, seInfo);
// When this method is called as part of the install flow, a positive token number is
@@ -880,60 +930,55 @@
@WorkerThread
private void snapshotUserDataInternal(String packageName, int[] userIds) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "snapshotUserData pkg=" + packageName
+ " users=" + Arrays.toString(userIds));
}
- synchronized (mLock) {
- for (int i = 0; i < mRollbacks.size(); i++) {
- Rollback rollback = mRollbacks.get(i);
- rollback.snapshotUserData(packageName, userIds, mAppDataRollbackHelper);
- }
+ for (int i = 0; i < mRollbacks.size(); i++) {
+ Rollback rollback = mRollbacks.get(i);
+ rollback.snapshotUserData(packageName, userIds, mAppDataRollbackHelper);
}
}
@WorkerThread
private void restoreUserDataInternal(
String packageName, int[] userIds, int appId, String seInfo) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "restoreUserData pkg=" + packageName
+ " users=" + Arrays.toString(userIds));
}
- synchronized (mLock) {
- for (int i = 0; i < mRollbacks.size(); ++i) {
- Rollback rollback = mRollbacks.get(i);
- if (rollback.restoreUserDataForPackageIfInProgress(
- packageName, userIds, appId, seInfo, mAppDataRollbackHelper)) {
- return;
- }
+ for (int i = 0; i < mRollbacks.size(); ++i) {
+ Rollback rollback = mRollbacks.get(i);
+ if (rollback.restoreUserDataForPackageIfInProgress(
+ packageName, userIds, appId, seInfo, mAppDataRollbackHelper)) {
+ return;
}
}
}
+ @ExtThread
@Override
public int notifyStagedSession(int sessionId) {
+ assertNotInWorkerThread();
if (Binder.getCallingUid() != Process.SYSTEM_UID) {
throw new SecurityException("notifyStagedSession may only be called by the system.");
}
- final LinkedBlockingQueue<Integer> result = new LinkedBlockingQueue<>();
// NOTE: We post this runnable on the RollbackManager's binder thread because we'd prefer
// to preserve the invariant that all operations that modify state happen there.
- getHandler().post(() -> {
+ return awaitResult(() -> {
+ assertInWorkerThread();
PackageInstaller installer = mContext.getPackageManager().getPackageInstaller();
final PackageInstaller.SessionInfo session = installer.getSessionInfo(sessionId);
if (session == null) {
Slog.e(TAG, "No matching install session for: " + sessionId);
- result.offer(-1);
- return;
+ return -1;
}
- Rollback newRollback;
- synchronized (mLock) {
- newRollback = createNewRollbackLocked(session);
- }
-
+ Rollback newRollback = createNewRollback(session);
if (!session.isMultiPackage()) {
if (!enableRollbackForPackageSession(newRollback, session)) {
Slog.e(TAG, "Unable to enable rollback for session: " + sessionId);
@@ -954,42 +999,36 @@
}
if (!completeEnableRollback(newRollback)) {
- result.offer(-1);
+ return -1;
} else {
- result.offer(newRollback.info.getRollbackId());
+ return newRollback.info.getRollbackId();
}
});
-
- try {
- return result.take();
- } catch (InterruptedException ie) {
- Slog.e(TAG, "Interrupted while waiting for notifyStagedSession response");
- return -1;
- }
}
+ @ExtThread
@Override
public void notifyStagedApkSession(int originalSessionId, int apkSessionId) {
+ assertNotInWorkerThread();
if (Binder.getCallingUid() != Process.SYSTEM_UID) {
throw new SecurityException("notifyStagedApkSession may only be called by the system.");
}
getHandler().post(() -> {
+ assertInWorkerThread();
Rollback rollback = null;
- synchronized (mLock) {
- for (int i = 0; i < mRollbacks.size(); ++i) {
- Rollback candidate = mRollbacks.get(i);
- if (candidate.getStagedSessionId() == originalSessionId) {
- rollback = candidate;
- break;
- }
+ for (int i = 0; i < mRollbacks.size(); ++i) {
+ Rollback candidate = mRollbacks.get(i);
+ if (candidate.getStagedSessionId() == originalSessionId) {
+ rollback = candidate;
+ break;
}
- if (rollback == null) {
- // Did not find rollback matching originalSessionId.
- Slog.e(TAG, "notifyStagedApkSession did not find rollback for session "
- + originalSessionId
- + ". Adding orphaned apk session " + apkSessionId);
- mOrphanedApkSessionIds.add(apkSessionId);
- }
+ }
+ if (rollback == null) {
+ // Did not find rollback matching originalSessionId.
+ Slog.e(TAG, "notifyStagedApkSession did not find rollback for session "
+ + originalSessionId
+ + ". Adding orphaned apk session " + apkSessionId);
+ mOrphanedApkSessionIds.add(apkSessionId);
}
if (rollback != null) {
@@ -1100,29 +1139,25 @@
@Override
public void onFinished(int sessionId, boolean success) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "SessionCallback.onFinished id=" + sessionId + " success=" + success);
}
if (success) {
- Rollback rollback;
- synchronized (mLock) {
- rollback = getRollbackForSessionLocked(sessionId);
- }
+ Rollback rollback = getRollbackForSession(sessionId);
if (rollback != null && !rollback.isStaged() && rollback.isEnabling()
&& rollback.notifySessionWithSuccess()
&& completeEnableRollback(rollback)) {
makeRollbackAvailable(rollback);
}
} else {
- synchronized (mLock) {
- Rollback rollback = getRollbackForSessionLocked(sessionId);
- if (rollback != null && rollback.isEnabling()) {
- Slog.w(TAG, "Delete rollback id=" + rollback.info.getRollbackId()
- + " for failed session id=" + sessionId);
- mRollbacks.remove(rollback);
- rollback.delete(mAppDataRollbackHelper);
- }
+ Rollback rollback = getRollbackForSession(sessionId);
+ if (rollback != null && rollback.isEnabling()) {
+ Slog.w(TAG, "Delete rollback id=" + rollback.info.getRollbackId()
+ + " for failed session id=" + sessionId);
+ mRollbacks.remove(rollback);
+ rollback.delete(mAppDataRollbackHelper);
}
}
}
@@ -1137,6 +1172,7 @@
*/
@WorkerThread
private boolean completeEnableRollback(Rollback rollback) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "completeEnableRollback id=" + rollback.info.getRollbackId());
}
@@ -1170,6 +1206,7 @@
@WorkerThread
@GuardedBy("rollback.getLock")
private void makeRollbackAvailable(Rollback rollback) {
+ assertInWorkerThread();
if (LOCAL_LOGV) {
Slog.v(TAG, "makeRollbackAvailable id=" + rollback.info.getRollbackId());
}
@@ -1190,12 +1227,11 @@
*/
@WorkerThread
private Rollback getRollbackForId(int rollbackId) {
- synchronized (mLock) {
- for (int i = 0; i < mRollbacks.size(); ++i) {
- Rollback rollback = mRollbacks.get(i);
- if (rollback.info.getRollbackId() == rollbackId) {
- return rollback;
- }
+ assertInWorkerThread();
+ for (int i = 0; i < mRollbacks.size(); ++i) {
+ Rollback rollback = mRollbacks.get(i);
+ if (rollback.info.getRollbackId() == rollbackId) {
+ return rollback;
}
}
@@ -1203,8 +1239,8 @@
}
@WorkerThread
- @GuardedBy("mLock")
- private int allocateRollbackIdLocked() {
+ private int allocateRollbackId() {
+ assertInWorkerThread();
int n = 0;
int rollbackId;
do {
@@ -1218,18 +1254,21 @@
throw new IllegalStateException("Failed to allocate rollback ID");
}
+ @ExtThread
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+ assertNotInWorkerThread();
if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
- synchronized (mLock) {
+ awaitResult(() -> {
+ assertInWorkerThread();
for (Rollback rollback : mRollbacks) {
rollback.dump(ipw);
}
ipw.println();
PackageWatchdog.getInstance(mContext).dump(ipw);
- }
+ });
}
@AnyThread
@@ -1249,9 +1288,9 @@
* and adds it to {@link #mRollbacks}.
*/
@WorkerThread
- @GuardedBy("mLock")
- private Rollback createNewRollbackLocked(PackageInstaller.SessionInfo parentSession) {
- int rollbackId = allocateRollbackIdLocked();
+ private Rollback createNewRollback(PackageInstaller.SessionInfo parentSession) {
+ assertInWorkerThread();
+ int rollbackId = allocateRollbackId();
final int userId;
if (parentSession.getUser() == UserHandle.ALL) {
userId = UserHandle.USER_SYSTEM;
@@ -1259,7 +1298,6 @@
userId = parentSession.getUser().getIdentifier();
}
String installerPackageName = parentSession.getInstallerPackageName();
- final Rollback rollback;
int parentSessionId = parentSession.getSessionId();
if (LOCAL_LOGV) {
@@ -1267,13 +1305,14 @@
+ " user=" + userId + " installer=" + installerPackageName);
}
- int[] packageSessionIds;
+ final int[] packageSessionIds;
if (parentSession.isMultiPackage()) {
packageSessionIds = parentSession.getChildSessionIds();
} else {
packageSessionIds = new int[]{parentSessionId};
}
+ final Rollback rollback;
if (parentSession.isStaged()) {
rollback = mRollbackStore.createStagedRollback(rollbackId, parentSessionId, userId,
installerPackageName, packageSessionIds);
@@ -1291,9 +1330,9 @@
* Returns null if not found.
*/
@WorkerThread
- @GuardedBy("mLock")
@Nullable
- private Rollback getRollbackForSessionLocked(int sessionId) {
+ private Rollback getRollbackForSession(int sessionId) {
+ assertInWorkerThread();
// We expect mRollbacks to be a very small list; linear search should be plenty fast.
for (int i = 0; i < mRollbacks.size(); ++i) {
Rollback rollback = mRollbacks.get(i);
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
index d88dccb..35329ff 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerInternal.java
@@ -137,4 +137,10 @@
/** @see com.android.internal.statusbar.IStatusBar#hideToast(String, IBinder) */
void hideToast(String packageName, IBinder token);
+
+ /**
+ * @see com.android.internal.statusbar.IStatusBar#requestWindowMagnificationConnection(boolean
+ * request)
+ */
+ void requestWindowMagnificationConnection(boolean request);
}
diff --git a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
index 78ef68c..9a2a88f 100644
--- a/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
+++ b/services/core/java/com/android/server/statusbar/StatusBarManagerService.java
@@ -520,6 +520,15 @@
} catch (RemoteException ex) { }
}
}
+
+ @Override
+ public void requestWindowMagnificationConnection(boolean request) {
+ if (mBar != null) {
+ try {
+ mBar.requestWindowMagnificationConnection(request);
+ } catch (RemoteException ex) { }
+ }
+ }
};
private final GlobalActionsProvider mGlobalActionsProvider = new GlobalActionsProvider() {
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index c4545fa..384badc 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -252,10 +252,10 @@
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.Bitmap;
-import android.graphics.GraphicBuffer;
import android.graphics.PixelFormat;
import android.graphics.Point;
import android.graphics.Rect;
+import android.hardware.HardwareBuffer;
import android.net.Uri;
import android.os.Binder;
import android.os.Build;
@@ -3733,7 +3733,7 @@
case ANIM_THUMBNAIL_SCALE_UP:
case ANIM_THUMBNAIL_SCALE_DOWN:
final boolean scaleUp = (animationType == ANIM_THUMBNAIL_SCALE_UP);
- final GraphicBuffer buffer = pendingOptions.getThumbnail();
+ final HardwareBuffer buffer = pendingOptions.getThumbnail();
displayContent.mAppTransition.overridePendingAppTransitionThumb(buffer,
pendingOptions.getStartX(), pendingOptions.getStartY(),
pendingOptions.getOnAnimationStartListener(),
@@ -5909,7 +5909,7 @@
if (!isAnimating(PARENTS)) {
return;
}
- final GraphicBuffer thumbnailHeader =
+ final HardwareBuffer thumbnailHeader =
getDisplayContent().mAppTransition.getAppTransitionThumbnailHeader(task);
if (thumbnailHeader == null) {
ProtoLog.d(WM_DEBUG_APP_TRANSITIONS, "No thumbnail header bitmap for: %s", task);
@@ -5940,7 +5940,7 @@
final int thumbnailDrawableRes = task.mUserId == mWmService.mCurrentUserId
? R.drawable.ic_account_circle
: R.drawable.ic_corp_badge;
- final GraphicBuffer thumbnail =
+ final HardwareBuffer thumbnail =
getDisplayContent().mAppTransition
.createCrossProfileAppsThumbnail(thumbnailDrawableRes, frame);
if (thumbnail == null) {
@@ -5955,7 +5955,7 @@
mThumbnail.startAnimation(transaction, animation, new Point(frame.left, frame.top));
}
- private Animation loadThumbnailAnimation(GraphicBuffer thumbnailHeader) {
+ private Animation loadThumbnailAnimation(HardwareBuffer thumbnailHeader) {
final DisplayInfo displayInfo = mDisplayContent.getDisplayInfo();
// If this is a multi-window scenario, we use the windows frame as
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index f86aeb2..b667550 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -93,11 +93,11 @@
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
-import android.graphics.GraphicBuffer;
import android.graphics.Path;
import android.graphics.Picture;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
+import android.hardware.HardwareBuffer;
import android.os.Binder;
import android.os.Debug;
import android.os.Handler;
@@ -374,7 +374,7 @@
setAppTransitionState(APP_STATE_TIMEOUT);
}
- GraphicBuffer getAppTransitionThumbnailHeader(WindowContainer container) {
+ HardwareBuffer getAppTransitionThumbnailHeader(WindowContainer container) {
AppTransitionAnimationSpec spec = mNextAppTransitionAnimationsSpecs.get(
container.hashCode());
if (spec == null) {
@@ -813,7 +813,7 @@
}
private void putDefaultNextAppTransitionCoordinates(int left, int top, int width, int height,
- GraphicBuffer buffer) {
+ HardwareBuffer buffer) {
mDefaultNextAppTransitionAnimationSpec = new AppTransitionAnimationSpec(-1 /* taskId */,
buffer, new Rect(left, top, left + width, top + height));
}
@@ -1039,7 +1039,7 @@
* Creates an overlay with a background color and a thumbnail for the cross profile apps
* animation.
*/
- GraphicBuffer createCrossProfileAppsThumbnail(
+ HardwareBuffer createCrossProfileAppsThumbnail(
@DrawableRes int thumbnailDrawableRes, Rect frame) {
final int width = frame.width();
final int height = frame.height();
@@ -1059,7 +1059,7 @@
drawable.draw(canvas);
picture.endRecording();
- return Bitmap.createBitmap(picture).createGraphicBufferHandle();
+ return Bitmap.createBitmap(picture).getHardwareBuffer();
}
Animation createCrossProfileAppsThumbnailAnimationLocked(Rect appRect) {
@@ -1074,7 +1074,8 @@
* when a thumbnail is specified with the pending animation override.
*/
Animation createThumbnailAspectScaleAnimationLocked(Rect appRect, @Nullable Rect contentInsets,
- GraphicBuffer thumbnailHeader, WindowContainer container, int uiMode, int orientation) {
+ HardwareBuffer thumbnailHeader, WindowContainer container, int uiMode,
+ int orientation) {
Animation a;
final int thumbWidthI = thumbnailHeader.getWidth();
final float thumbWidth = thumbWidthI > 0 ? thumbWidthI : 1;
@@ -1436,7 +1437,7 @@
* when a thumbnail is specified with the pending animation override.
*/
Animation createThumbnailScaleAnimationLocked(int appWidth, int appHeight, int transit,
- GraphicBuffer thumbnailHeader) {
+ HardwareBuffer thumbnailHeader) {
Animation a;
getDefaultNextAppTransitionStartRect(mTmpRect);
final int thumbWidthI = thumbnailHeader.getWidth();
@@ -1481,7 +1482,7 @@
int transit, WindowContainer container) {
final int appWidth = containingFrame.width();
final int appHeight = containingFrame.height();
- final GraphicBuffer thumbnailHeader = getAppTransitionThumbnailHeader(container);
+ final HardwareBuffer thumbnailHeader = getAppTransitionThumbnailHeader(container);
Animation a;
getDefaultNextAppTransitionStartRect(mTmpRect);
final int thumbWidthI = thumbnailHeader != null ? thumbnailHeader.getWidth() : appWidth;
@@ -1865,7 +1866,7 @@
}
}
- void overridePendingAppTransitionThumb(GraphicBuffer srcThumb, int startX, int startY,
+ void overridePendingAppTransitionThumb(HardwareBuffer srcThumb, int startX, int startY,
IRemoteCallback startedCallback, boolean scaleUp) {
if (canOverridePendingAppTransition()) {
clear();
@@ -1878,8 +1879,9 @@
}
}
- void overridePendingAppTransitionAspectScaledThumb(GraphicBuffer srcThumb, int startX, int startY,
- int targetWidth, int targetHeight, IRemoteCallback startedCallback, boolean scaleUp) {
+ void overridePendingAppTransitionAspectScaledThumb(HardwareBuffer srcThumb, int startX,
+ int startY, int targetWidth, int targetHeight, IRemoteCallback startedCallback,
+ boolean scaleUp) {
if (canOverridePendingAppTransition()) {
clear();
mNextAppTransitionType = scaleUp ? NEXT_TRANSIT_TYPE_THUMBNAIL_ASPECT_SCALE_UP
diff --git a/services/core/java/com/android/server/wm/WindowContainerThumbnail.java b/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
index 90e3be7..f602726 100644
--- a/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
+++ b/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
@@ -28,9 +28,9 @@
import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
import static com.android.server.wm.WindowManagerService.MAX_ANIMATION_DURATION;
-import android.graphics.GraphicBuffer;
import android.graphics.PixelFormat;
import android.graphics.Point;
+import android.hardware.HardwareBuffer;
import android.os.Process;
import android.util.proto.ProtoOutputStream;
import android.view.Surface;
@@ -60,7 +60,7 @@
private final boolean mRelative;
WindowContainerThumbnail(Supplier<Surface> surfaceFactory, Transaction t,
- WindowContainer container, GraphicBuffer thumbnailHeader) {
+ WindowContainer container, HardwareBuffer thumbnailHeader) {
this(surfaceFactory, t, container, thumbnailHeader, false /* relative */);
}
@@ -72,12 +72,12 @@
* relative to it) or not.
*/
WindowContainerThumbnail(Supplier<Surface> surfaceFactory, Transaction t,
- WindowContainer container, GraphicBuffer thumbnailHeader, boolean relative) {
+ WindowContainer container, HardwareBuffer thumbnailHeader, boolean relative) {
this(t, container, thumbnailHeader, relative, surfaceFactory.get(), null);
}
WindowContainerThumbnail(Transaction t, WindowContainer container,
- GraphicBuffer thumbnailHeader, boolean relative, Surface drawSurface,
+ HardwareBuffer thumbnailHeader, boolean relative, Surface drawSurface,
SurfaceAnimator animator) {
mWindowContainer = container;
mRelative = relative;
@@ -109,7 +109,7 @@
// Transfer the thumbnail to the surface
drawSurface.copyFrom(mSurfaceControl);
- drawSurface.attachAndQueueBuffer(thumbnailHeader);
+ drawSurface.attachAndQueueBufferWithColorSpace(thumbnailHeader, null);
drawSurface.release();
t.show(mSurfaceControl);
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 7400d17..4439fc2 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -908,7 +908,7 @@
private void setShadowRenderer() {
mRenderShadowsInCompositor = Settings.Global.getInt(mContext.getContentResolver(),
- DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR, 1) != 0;
+ DEVELOPMENT_RENDER_SHADOWS_IN_COMPOSITOR, 0) != 0;
}
PowerManager mPowerManager;
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index 3617570..ab7a240 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -57,6 +57,7 @@
import static android.view.WindowManager.LayoutParams.SOFT_INPUT_MASK_ADJUST;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_HIDE_NON_SYSTEM_OVERLAY_WINDOWS;
import static android.view.WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
+import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA;
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_MEDIA_OVERLAY;
@@ -3216,6 +3217,7 @@
// These are the windows that by default are shown to all users. However, to
// protect against spoofing, check permissions below.
+ case TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY:
case TYPE_APPLICATION_STARTING:
case TYPE_BOOT_PROGRESS:
case TYPE_DISPLAY_OVERLAY:
@@ -5161,13 +5163,14 @@
@Override
boolean shouldMagnify() {
- if (mAttrs.type == TYPE_INPUT_METHOD ||
- mAttrs.type == TYPE_INPUT_METHOD_DIALOG ||
- mAttrs.type == TYPE_MAGNIFICATION_OVERLAY ||
- mAttrs.type == TYPE_NAVIGATION_BAR ||
+ if (mAttrs.type == TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY
+ || mAttrs.type == TYPE_INPUT_METHOD
+ || mAttrs.type == TYPE_INPUT_METHOD_DIALOG
+ || mAttrs.type == TYPE_MAGNIFICATION_OVERLAY
+ || mAttrs.type == TYPE_NAVIGATION_BAR
// It's tempting to wonder: Have we forgotten the rounded corners overlay?
// worry not: it's a fake TYPE_NAVIGATION_BAR_PANEL
- mAttrs.type == TYPE_NAVIGATION_BAR_PANEL) {
+ || mAttrs.type == TYPE_NAVIGATION_BAR_PANEL) {
return false;
}
return true;
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index 74982c6..d63cb20 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -26,6 +26,7 @@
"stats/SubsystemSleepStatePuller.cpp",
"com_android_server_adb_AdbDebuggingManager.cpp",
"com_android_server_am_BatteryStatsService.cpp",
+ "com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp",
"com_android_server_connectivity_Vpn.cpp",
"com_android_server_ConsumerIrService.cpp",
"com_android_server_devicepolicy_CryptoTestHelper.cpp",
@@ -88,6 +89,7 @@
shared_libs: [
"libadb_pairing_server",
"libadb_pairing_connection",
+ "libandroid",
"libandroid_runtime",
"libandroidfw",
"libaudioclient",
@@ -103,6 +105,7 @@
"libkeystore_binder",
"libmtp",
"libnativehelper",
+ "libnativewindow",
"libutils",
"libui",
"libinput",
@@ -141,6 +144,7 @@
"android.hardware.gnss@2.1",
"android.hardware.gnss.measurement_corrections@1.0",
"android.hardware.gnss.visibility_control@1.0",
+ "android.hardware.graphics.bufferqueue@1.0",
"android.hardware.input.classifier@1.0",
"android.hardware.ir@1.0",
"android.hardware.light@2.0",
@@ -157,6 +161,7 @@
"android.hardware.vibrator@1.2",
"android.hardware.vibrator@1.3",
"android.hardware.vr@1.0",
+ "android.hidl.token@1.0-utils",
"android.frameworks.schedulerservice@1.0",
"android.frameworks.sensorservice@1.0",
"android.frameworks.stats@1.0",
diff --git a/services/core/jni/com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp b/services/core/jni/com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp
new file mode 100644
index 0000000..51ce482
--- /dev/null
+++ b/services/core/jni/com_android_server_biometrics_SurfaceToNativeHandleConverter.cpp
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#define LOG_TAG "SurfaceToNativeHandleConverter"
+
+#include <nativehelper/JNIHelp.h>
+#include "jni.h"
+
+#include <android/native_window_jni.h>
+#include <android_os_NativeHandle.h>
+#include <gui/IGraphicBufferProducer.h>
+#include <gui/Surface.h>
+#include <gui/bufferqueue/1.0/WGraphicBufferProducer.h>
+
+namespace android {
+
+namespace {
+constexpr int WINDOW_HAL_TOKEN_SIZE_MAX = 256;
+
+native_handle_t* convertHalTokenToNativeHandle(const HalToken& halToken) {
+ // We attempt to store halToken in the ints of the native_handle_t after its
+ // size. The first int stores the size of the token. We store this in an int
+ // to avoid alignment issues where size_t and int do not have the same
+ // alignment.
+ size_t nhDataByteSize = halToken.size();
+ if (nhDataByteSize > WINDOW_HAL_TOKEN_SIZE_MAX) {
+ // The size of the token isn't reasonable..
+ return nullptr;
+ }
+ size_t numInts = ceil(nhDataByteSize / sizeof(int)) + 1;
+
+ // We don't check for overflow, whether numInts can fit in an int, since we
+ // expect WINDOW_HAL_TOKEN_SIZE_MAX to be a reasonable limit.
+ // create a native_handle_t with 0 numFds and numInts number of ints.
+ native_handle_t* nh = native_handle_create(0, numInts);
+ if (!nh) {
+ return nullptr;
+ }
+ // Store the size of the token in the first int.
+ nh->data[0] = nhDataByteSize;
+ memcpy(&(nh->data[1]), halToken.data(), nhDataByteSize);
+ return nh;
+}
+} // namespace
+
+using ::android::sp;
+
+static jobject convertSurfaceToNativeHandle(JNIEnv* env, jobject /* clazz */,
+ jobject previewSurface) {
+ if (previewSurface == nullptr) {
+ return nullptr;
+ }
+ ANativeWindow* previewAnw = ANativeWindow_fromSurface(env, previewSurface);
+ sp<Surface> surface = static_cast<Surface*>(previewAnw);
+ sp<IGraphicBufferProducer> igbp = surface->getIGraphicBufferProducer();
+ sp<HGraphicBufferProducer> hgbp = new TWGraphicBufferProducer<HGraphicBufferProducer>(igbp);
+ HalToken halToken;
+ createHalToken(hgbp, &halToken);
+ native_handle_t* native_handle = convertHalTokenToNativeHandle(halToken);
+ return JNativeHandle::MakeJavaNativeHandleObj(env, native_handle);
+}
+
+static const JNINativeMethod method_table[] = {
+ {"convertSurfaceToNativeHandle", "(Landroid/view/Surface;)Landroid/os/NativeHandle;",
+ reinterpret_cast<void*>(convertSurfaceToNativeHandle)},
+};
+
+int register_android_server_FingerprintService(JNIEnv* env) {
+ return jniRegisterNativeMethods(env,
+ "com/android/server/biometrics/fingerprint/FingerprintService",
+ method_table, NELEM(method_table));
+}
+
+int register_android_server_FaceService(JNIEnv* env) {
+ return jniRegisterNativeMethods(env, "com/android/server/biometrics/face/FaceService",
+ method_table, NELEM(method_table));
+}
+
+}; // namespace android
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index eb486fe..cc1aef9 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -61,6 +61,8 @@
int register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(JNIEnv* env);
int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
int register_android_server_AdbDebuggingManager(JNIEnv* env);
+int register_android_server_FingerprintService(JNIEnv* env);
+int register_android_server_FaceService(JNIEnv* env);
};
using namespace android;
@@ -115,5 +117,7 @@
register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(env);
register_android_server_stats_pull_StatsPullAtomService(env);
register_android_server_AdbDebuggingManager(env);
+ register_android_server_FingerprintService(env);
+ register_android_server_FaceService(env);
return JNI_VERSION_1_4;
}
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 4151e20..4da0091 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -28,6 +28,7 @@
#include <androidfw/ZipFileRO.h>
#include <androidfw/ZipUtils.h>
#include <binder/BinderService.h>
+#include <binder/Nullable.h>
#include <binder/ParcelFileDescriptor.h>
#include <binder/Status.h>
#include <sys/stat.h>
@@ -1083,7 +1084,7 @@
return false;
}
FileSystemControlParcel fsControlParcel;
- fsControlParcel.incremental = IncrementalFileSystemControlParcel();
+ fsControlParcel.incremental = aidl::make_nullable<IncrementalFileSystemControlParcel>();
fsControlParcel.incremental->cmd.reset(base::unique_fd(::dup(ifs.control.cmd)));
fsControlParcel.incremental->pendingReads.reset(
base::unique_fd(::dup(ifs.control.pendingReads)));
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index d1a1955..6998999 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -111,6 +111,7 @@
import com.android.server.inputmethod.MultiClientInputMethodManagerService;
import com.android.server.integrity.AppIntegrityManagerService;
import com.android.server.lights.LightsService;
+import com.android.server.location.LocationManagerService;
import com.android.server.media.MediaResourceMonitorService;
import com.android.server.media.MediaRouterService;
import com.android.server.media.MediaSessionService;
@@ -288,6 +289,8 @@
"com.android.server.DeviceIdleController";
private static final String BLOB_STORE_MANAGER_SERVICE_CLASS =
"com.android.server.blob.BlobStoreManagerService";
+ private static final String APP_SEARCH_MANAGER_SERVICE_CLASS =
+ "com.android.server.appsearch.AppSearchManagerService";
private static final String TETHERING_CONNECTOR_CLASS = "android.net.ITetheringConnector";
@@ -2170,6 +2173,10 @@
mSystemServiceManager.startBootPhase(t, SystemService.PHASE_DEVICE_SPECIFIC_SERVICES_READY);
t.traceEnd();
+ t.traceBegin("AppSearchManagerService");
+ mSystemServiceManager.startService(APP_SEARCH_MANAGER_SERVICE_CLASS);
+ t.traceEnd();
+
ConcurrentUtils.waitForFutureNoInterrupt(mBlobStoreServiceStart,
START_BLOB_STORE_SERVICE);
diff --git a/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java b/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java
deleted file mode 100644
index 76f7ad6..0000000
--- a/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.server.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.platform.test.annotations.Presubmit;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-/**
- * Unit tests for {@link GnssAntennaInfoProvider}.
- */
-@RunWith(RobolectricTestRunner.class)
-@Presubmit
-public class GnssAntennaInfoProviderTest {
- @Mock
- private GnssAntennaInfoProvider.GnssAntennaInfoProviderNative mMockNative;
- private GnssAntennaInfoProvider mTestProvider;
-
- /** Setup. */
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mMockNative.startAntennaInfoListening()).thenReturn(true);
- when(mMockNative.stopAntennaInfoListening()).thenReturn(true);
-
- mTestProvider = new GnssAntennaInfoProvider(RuntimeEnvironment.application,
- new Handler(Looper.myLooper()), mMockNative) {
- @Override
- public boolean isGpsEnabled() {
- return true;
- }
- };
- }
-
- /**
- * Test that registerWithService calls the native startAntennaInfoListening method.
- */
- @Test
- public void register_nativeStarted() {
- mTestProvider.registerWithService();
- verify(mMockNative, times(1)).startAntennaInfoListening();
- }
-
- /**
- * Test that unregisterFromService calls the native stopAntennaInfoListening method.
- */
- @Test
- public void unregister_nativeStopped() {
- mTestProvider.registerWithService();
- mTestProvider.unregisterFromService();
- verify(mMockNative, times(1)).stopAntennaInfoListening();
- }
-
- /**
- * Test that GnssAntennaInfoProvider.isAntennaInfoSupported() returns the result of the
- * native isAntennaInfoSupported method.
- */
- @Test
- public void isSupported_nativeIsSupported() {
- when(mMockNative.isAntennaInfoSupported()).thenReturn(true);
- assertThat(mTestProvider.isAvailableInPlatform()).isTrue();
-
- when(mMockNative.isAntennaInfoSupported()).thenReturn(false);
- assertThat(mTestProvider.isAvailableInPlatform()).isFalse();
- }
-}
diff --git a/services/robotests/src/com/android/server/location/GnssMeasurementsProviderTest.java b/services/robotests/src/com/android/server/location/GnssMeasurementsProviderTest.java
deleted file mode 100644
index b349b67..0000000
--- a/services/robotests/src/com/android/server/location/GnssMeasurementsProviderTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-package com.android.server.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.ArgumentMatchers.anyBoolean;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.platform.test.annotations.Presubmit;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-/**
- * Unit tests for {@link GnssMeasurementsProvider}.
- */
-@RunWith(RobolectricTestRunner.class)
-@Presubmit
-public class GnssMeasurementsProviderTest {
- @Mock
- private GnssMeasurementsProvider.GnssMeasurementProviderNative mMockNative;
- private GnssMeasurementsProvider mTestProvider;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mMockNative.startMeasurementCollection(anyBoolean())).thenReturn(true);
- when(mMockNative.stopMeasurementCollection()).thenReturn(true);
-
- mTestProvider = new GnssMeasurementsProvider(RuntimeEnvironment.application,
- new Handler(Looper.myLooper()), mMockNative) {
- @Override
- public boolean isGpsEnabled() {
- return true;
- }
- };
- }
-
- @Test
- public void register_nativeStarted() {
- mTestProvider.registerWithService();
- verify(mMockNative).startMeasurementCollection(anyBoolean());
- }
-
- @Test
- public void unregister_nativeStopped() {
- mTestProvider.registerWithService();
- mTestProvider.unregisterFromService();
- verify(mMockNative).stopMeasurementCollection();
- }
-
- @Test
- public void isSupported_nativeIsSupported() {
- when(mMockNative.isMeasurementSupported()).thenReturn(true);
- assertThat(mTestProvider.isAvailableInPlatform()).isTrue();
-
- when(mMockNative.isMeasurementSupported()).thenReturn(false);
- assertThat(mTestProvider.isAvailableInPlatform()).isFalse();
- }
-
- @Test
- public void register_resume_started() {
- mTestProvider.registerWithService();
- mTestProvider.resumeIfStarted();
- verify(mMockNative, times(2)).startMeasurementCollection(anyBoolean());
- }
-
- @Test
- public void unregister_resume_notStarted() {
- mTestProvider.registerWithService();
- mTestProvider.unregisterFromService();
- mTestProvider.resumeIfStarted();
- verify(mMockNative, times(1)).startMeasurementCollection(anyBoolean());
- }
-}
diff --git a/services/robotests/src/com/android/server/location/GnssNavigationMessageProviderTest.java b/services/robotests/src/com/android/server/location/GnssNavigationMessageProviderTest.java
deleted file mode 100644
index aa2a96e..0000000
--- a/services/robotests/src/com/android/server/location/GnssNavigationMessageProviderTest.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.android.server.location;
-
-import static com.google.common.truth.Truth.assertThat;
-
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
-
-import android.os.Handler;
-import android.os.Looper;
-import android.platform.test.annotations.Presubmit;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-import org.robolectric.RobolectricTestRunner;
-import org.robolectric.RuntimeEnvironment;
-
-/**
- * Unit tests for {@link GnssNavigationMessageProvider}.
- */
-@RunWith(RobolectricTestRunner.class)
-@Presubmit
-public class GnssNavigationMessageProviderTest {
- @Mock
- private GnssNavigationMessageProvider.GnssNavigationMessageProviderNative mMockNative;
- private GnssNavigationMessageProvider mTestProvider;
-
- @Before
- public void setUp() {
- MockitoAnnotations.initMocks(this);
- when(mMockNative.startNavigationMessageCollection()).thenReturn(true);
- when(mMockNative.stopNavigationMessageCollection()).thenReturn(true);
-
- mTestProvider = new GnssNavigationMessageProvider(RuntimeEnvironment.application,
- new Handler(Looper.myLooper()), mMockNative) {
- @Override
- public boolean isGpsEnabled() {
- return true;
- }
- };
- }
-
- @Test
- public void register_nativeStarted() {
- mTestProvider.registerWithService();
- verify(mMockNative).startNavigationMessageCollection();
- }
-
- @Test
- public void unregister_nativeStopped() {
- mTestProvider.registerWithService();
- mTestProvider.unregisterFromService();
- verify(mMockNative).stopNavigationMessageCollection();
- }
-
- @Test
- public void isSupported_nativeIsSupported() {
- when(mMockNative.isNavigationMessageSupported()).thenReturn(true);
- assertThat(mTestProvider.isAvailableInPlatform()).isTrue();
-
- when(mMockNative.isNavigationMessageSupported()).thenReturn(false);
- assertThat(mTestProvider.isAvailableInPlatform()).isFalse();
- }
-
- @Test
- public void register_resume_started() {
- mTestProvider.registerWithService();
- mTestProvider.resumeIfStarted();
- verify(mMockNative, times(2)).startNavigationMessageCollection();
- }
-
- @Test
- public void unregister_resume_notStarted() {
- mTestProvider.registerWithService();
- mTestProvider.unregisterFromService();
- mTestProvider.resumeIfStarted();
- verify(mMockNative, times(1)).startNavigationMessageCollection();
- }
-}
diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp
index ff34ebd..caa3bdb 100644
--- a/services/tests/mockingservicestests/Android.bp
+++ b/services/tests/mockingservicestests/Android.bp
@@ -29,6 +29,8 @@
"platform-test-annotations",
"truth-prebuilt",
"testables",
+ // TODO: remove once Android migrates to JUnit 4.12, which provides assertThrows
+ "testng",
],
libs: [
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java b/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java
new file mode 100644
index 0000000..3bbcf21
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/AppOpsHelperTest.java
@@ -0,0 +1,228 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.location;
+
+import static android.app.AppOpsManager.MODE_ALLOWED;
+import static android.app.AppOpsManager.MODE_IGNORED;
+import static android.app.AppOpsManager.OP_COARSE_LOCATION;
+import static android.app.AppOpsManager.OP_FINE_LOCATION;
+import static android.app.AppOpsManager.OP_MOCK_LOCATION;
+import static android.app.AppOpsManager.OP_MONITOR_HIGH_POWER_LOCATION;
+import static android.app.AppOpsManager.OP_MONITOR_LOCATION;
+import static android.location.util.identity.CallerIdentity.PERMISSION_COARSE;
+import static android.location.util.identity.CallerIdentity.PERMISSION_FINE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.isNull;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import android.app.AppOpsManager;
+import android.content.Context;
+import android.location.util.identity.CallerIdentity;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AppOpsHelperTest {
+
+ private static final long TIMEOUT_MS = 5000;
+
+ @Mock private Context mContext;
+ @Mock private AppOpsManager mAppOps;
+
+ private List<AppOpsManager.OnOpChangedInternalListener> mListeners = new ArrayList<>();
+
+ private AppOpsHelper mHelper;
+
+ @Before
+ public void setUp() {
+ initMocks(this);
+
+ doReturn(mAppOps).when(mContext).getSystemService(AppOpsManager.class);
+ doAnswer(invocation -> mListeners.add(invocation.getArgument(3))).when(mAppOps)
+ .startWatchingMode(
+ eq(AppOpsManager.OP_COARSE_LOCATION),
+ isNull(),
+ eq(AppOpsManager.WATCH_FOREGROUND_CHANGES),
+ any(AppOpsManager.OnOpChangedInternalListener.class));
+
+ mHelper = new AppOpsHelper(mContext);
+ mHelper.onSystemReady();
+ }
+
+ private void sendAppOp(String packageName) {
+ for (AppOpsManager.OnOpChangedInternalListener listener : mListeners) {
+ listener.onOpChanged(AppOpsManager.OP_COARSE_LOCATION, packageName);
+ }
+ }
+
+ @Test
+ public void testListener() {
+ AppOpsHelper.LocationAppOpListener listener = mock(
+ AppOpsHelper.LocationAppOpListener.class);
+ mHelper.addListener(listener);
+
+ sendAppOp("mypackage1");
+ verify(listener, timeout(TIMEOUT_MS)).onAppOpsChanged("mypackage1");
+
+ sendAppOp("mypackage2");
+ verify(listener, timeout(TIMEOUT_MS)).onAppOpsChanged("mypackage2");
+ }
+
+ @Test
+ public void testCheckLocationAccess() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).checkOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"));
+ assertThat(mHelper.checkLocationAccess(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).checkOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"));
+ assertThat(mHelper.checkLocationAccess(identity)).isFalse();
+
+ identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_COARSE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).checkOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"));
+ assertThat(mHelper.checkLocationAccess(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).checkOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"));
+ assertThat(mHelper.checkLocationAccess(identity)).isFalse();
+ }
+
+ @Test
+ public void testNoteLocationAccess() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).noteOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"),
+ eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.noteLocationAccess(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).noteOpNoThrow(eq(OP_FINE_LOCATION), eq(1000), eq("mypackage"),
+ eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.noteLocationAccess(identity)).isFalse();
+
+
+ identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_COARSE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).noteOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"),
+ eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.noteLocationAccess(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).noteOpNoThrow(eq(OP_COARSE_LOCATION), eq(1000), eq("mypackage"),
+ eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.noteLocationAccess(identity)).isFalse();
+ }
+
+ @Test
+ public void testStartLocationMonitoring() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).startOpNoThrow(eq(OP_MONITOR_LOCATION), eq(1000), eq("mypackage"),
+ eq(false), eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.startLocationMonitoring(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).startOpNoThrow(eq(OP_MONITOR_LOCATION), eq(1000), eq("mypackage"),
+ eq(false), eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.startLocationMonitoring(identity)).isFalse();
+ }
+
+ @Test
+ public void testStartHighPowerLocationMonitoring() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).startOpNoThrow(eq(OP_MONITOR_HIGH_POWER_LOCATION), eq(1000),
+ eq("mypackage"),
+ eq(false), eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.startHighPowerLocationMonitoring(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).startOpNoThrow(eq(OP_MONITOR_HIGH_POWER_LOCATION), eq(1000),
+ eq("mypackage"),
+ eq(false), eq("myfeature"), nullable(String.class));
+ assertThat(mHelper.startHighPowerLocationMonitoring(identity)).isFalse();
+ }
+
+ @Test
+ public void testStopLocationMonitoring() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ mHelper.stopLocationMonitoring(identity);
+ verify(mAppOps).finishOp(OP_MONITOR_LOCATION, 1000, "mypackage", "myfeature");
+ }
+
+ @Test
+ public void testStopHighPowerLocationMonitoring() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ mHelper.stopHighPowerLocationMonitoring(identity);
+ verify(mAppOps).finishOp(OP_MONITOR_HIGH_POWER_LOCATION, 1000, "mypackage", "myfeature");
+ }
+
+ @Test
+ public void testNoteMockLocationAccess() {
+ CallerIdentity identity = CallerIdentity.forTest(1000, 1000, "mypackage", "myfeature",
+ PERMISSION_FINE);
+
+ doReturn(MODE_ALLOWED).when(
+ mAppOps).noteOp(eq(OP_MOCK_LOCATION), eq(1000), eq("mypackage"), eq("myfeature"),
+ nullable(String.class));
+ assertThat(mHelper.noteMockLocationAccess(identity)).isTrue();
+
+ doReturn(MODE_IGNORED).when(
+ mAppOps).noteOp(eq(OP_MOCK_LOCATION), eq(1000), eq("mypackage"), eq("myfeature"),
+ nullable(String.class));
+ assertThat(mHelper.noteMockLocationAccess(identity)).isFalse();
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java b/services/tests/mockingservicestests/src/com/android/server/location/MockableLocationProviderTest.java
similarity index 80%
rename from services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java
rename to services/tests/mockingservicestests/src/com/android/server/location/MockableLocationProviderTest.java
index 9b076e8..6bfe566 100644
--- a/services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/MockableLocationProviderTest.java
@@ -35,21 +35,18 @@
import com.android.internal.location.ProviderProperties;
import com.android.internal.location.ProviderRequest;
import com.android.server.location.test.FakeProvider;
+import com.android.server.location.test.ProviderListenerCapture;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
-import java.util.LinkedList;
-import java.util.List;
-
@Presubmit
@SmallTest
@RunWith(AndroidJUnit4.class)
public class MockableLocationProviderTest {
- private Object mLock;
- private ListenerCapture mListener;
+ private ProviderListenerCapture mListener;
private AbstractLocationProvider mRealProvider;
private MockProvider mMockProvider;
@@ -58,8 +55,8 @@
@Before
public void setUp() {
- mLock = new Object();
- mListener = new ListenerCapture();
+ Object lock = new Object();
+ mListener = new ProviderListenerCapture(lock);
mRealProvider = spy(new FakeProvider());
mMockProvider = spy(new MockProvider(new ProviderProperties(
@@ -71,9 +68,10 @@
true,
true,
Criteria.POWER_LOW,
- Criteria.ACCURACY_FINE)));
+ Criteria.ACCURACY_FINE)
+ ));
- mProvider = new MockableLocationProvider(mLock, mListener);
+ mProvider = new MockableLocationProvider(lock, mListener);
mProvider.setRealProvider(mRealProvider);
}
@@ -170,34 +168,4 @@
mMockProvider.reportLocation(mockLocation);
assertThat(mListener.getNextLocation()).isEqualTo(mockLocation);
}
-
- private class ListenerCapture implements AbstractLocationProvider.Listener {
-
- private final LinkedList<AbstractLocationProvider.State> mNewStates = new LinkedList<>();
- private final LinkedList<Location> mLocations = new LinkedList<>();
-
- @Override
- public void onStateChanged(AbstractLocationProvider.State oldState,
- AbstractLocationProvider.State newState) {
- assertThat(Thread.holdsLock(mLock)).isTrue();
- mNewStates.add(newState);
- }
-
- private AbstractLocationProvider.State getNextNewState() {
- return mNewStates.poll();
- }
-
- @Override
- public void onReportLocation(Location location) {
- assertThat(Thread.holdsLock(mLock)).isTrue();
- mLocations.add(location);
- }
-
- private Location getNextLocation() {
- return mLocations.poll();
- }
-
- @Override
- public void onReportLocation(List<Location> locations) {}
- }
}
diff --git a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
similarity index 83%
rename from services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
rename to services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
index a99c982..a8635d8 100644
--- a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
@@ -27,7 +27,9 @@
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.after;
import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.timeout;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@@ -53,6 +55,7 @@
import android.location.INetInitiatedListener;
import android.location.Location;
import android.location.LocationManagerInternal;
+import android.location.util.identity.CallerIdentity;
import android.os.Handler;
import android.os.IBinder;
import android.os.IInterface;
@@ -61,6 +64,7 @@
import com.android.server.LocalServices;
import com.android.server.location.AppForegroundHelper;
+import com.android.server.location.AppOpsHelper;
import com.android.server.location.GnssAntennaInfoProvider;
import com.android.server.location.GnssAntennaInfoProvider.GnssAntennaInfoProviderNative;
import com.android.server.location.GnssBatchingProvider;
@@ -71,9 +75,10 @@
import com.android.server.location.GnssMeasurementsProvider.GnssMeasurementProviderNative;
import com.android.server.location.GnssNavigationMessageProvider;
import com.android.server.location.GnssNavigationMessageProvider.GnssNavigationMessageProviderNative;
-import com.android.server.location.GnssStatusListenerHelper;
+import com.android.server.location.GnssStatusProvider;
import com.android.server.location.LocationUsageLogger;
import com.android.server.location.SettingsHelper;
+import com.android.server.location.UserInfoHelper;
import org.junit.After;
import org.junit.Before;
@@ -85,7 +90,7 @@
import org.mockito.invocation.InvocationOnMock;
import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
/**
@@ -93,6 +98,9 @@
*/
public class GnssManagerServiceTest {
+ private static final long TIMEOUT_MS = 5000;
+ private static final long FAILURE_TIMEOUT_MS = 200;
+
// Gnss Providers
@Mock
private GnssLocationProvider mMockGnssLocationProvider;
@@ -107,14 +115,19 @@
@Mock
private INetInitiatedListener mNetInitiatedListener;
private GnssMeasurementsProvider mTestGnssMeasurementsProvider;
- private GnssStatusListenerHelper mTestGnssStatusProvider;
+ private GnssStatusProvider mTestGnssStatusProvider;
private GnssNavigationMessageProvider mTestGnssNavigationMessageProvider;
private GnssAntennaInfoProvider mTestGnssAntennaInfoProvider;
- // Managers and services
+ @Mock
+ private PackageManager mPackageManager;
+ @Mock
+ private AppOpsHelper mAppOpsHelper;
@Mock
private AppOpsManager mAppOpsManager;
@Mock
+ private UserInfoHelper mUserInfoHelper;
+ @Mock
private SettingsHelper mSettingsHelper;
@Mock
private AppForegroundHelper mAppForegroundHelper;
@@ -135,12 +148,20 @@
MockitoAnnotations.initMocks(this);
GnssLocationProvider.setIsSupportedForTest(true);
+ when(mMockContext.createFeatureContext(anyString())).thenReturn(mMockContext);
when(mMockContext.getSystemServiceName(AppOpsManager.class)).thenReturn(
Context.APP_OPS_SERVICE);
when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(
mAppOpsManager);
+ when(mMockContext.getPackageManager()).thenReturn(mPackageManager);
+ when(mPackageManager.getPackagesForUid(anyInt())).thenReturn(
+ new String[]{"com.android.server"});
enableLocationPermissions();
+ when(mUserInfoHelper.isCurrentUserId(anyInt())).thenReturn(true);
+ when(mSettingsHelper.isLocationEnabled(anyInt())).thenReturn(true);
+ when(mAppOpsHelper.checkLocationAccess(any(CallerIdentity.class))).thenReturn(true);
+ when(mAppOpsHelper.noteLocationAccess(any(CallerIdentity.class))).thenReturn(true);
when(mAppForegroundHelper.isAppForeground(anyInt())).thenReturn(true);
LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal);
@@ -154,14 +175,10 @@
});
// Setup providers
- mTestGnssMeasurementsProvider = createGnssMeasurementsProvider(
- mMockContext, mMockHandler);
- mTestGnssStatusProvider = createGnssStatusListenerHelper(
- mMockContext, mMockHandler);
- mTestGnssNavigationMessageProvider = createGnssNavigationMessageProvider(
- mMockContext, mMockHandler);
- mTestGnssAntennaInfoProvider = createGnssAntennaInfoProvider(
- mMockContext, mMockHandler);
+ mTestGnssMeasurementsProvider = createGnssMeasurementsProvider();
+ mTestGnssStatusProvider = createGnssStatusListenerHelper();
+ mTestGnssNavigationMessageProvider = createGnssNavigationMessageProvider();
+ mTestGnssAntennaInfoProvider = createGnssAntennaInfoProvider();
// Setup GnssLocationProvider to return providers
when(mMockGnssLocationProvider.getGnssStatusProvider()).thenReturn(
@@ -188,8 +205,8 @@
when(mMockGnssBatchingProvider.stop()).thenReturn(true);
// Create GnssManagerService
- mGnssManagerService = new GnssManagerService(mMockContext, mSettingsHelper,
- mAppForegroundHelper, new LocationUsageLogger(),
+ mGnssManagerService = new GnssManagerService(mMockContext, mUserInfoHelper, mSettingsHelper,
+ mAppOpsHelper, mAppForegroundHelper, new LocationUsageLogger(),
mMockGnssLocationProvider);
mGnssManagerService.onSystemReady();
}
@@ -240,7 +257,7 @@
new GnssSingleSatCorrection.Builder().build();
return
new GnssMeasurementCorrections.Builder().setSingleSatelliteCorrectionList(
- Arrays.asList(gnssSingleSatCorrection)).build();
+ Collections.singletonList(gnssSingleSatCorrection)).build();
}
private static List<GnssAntennaInfo> createDummyGnssAntennaInfos() {
@@ -270,7 +287,7 @@
signalGainCorrectionsDbi,
signalGainCorrectionsUncertaintyDbi);
- List<GnssAntennaInfo> gnssAntennaInfos = new ArrayList();
+ List<GnssAntennaInfo> gnssAntennaInfos = new ArrayList<>();
gnssAntennaInfos.add(new GnssAntennaInfo.Builder()
.setCarrierFrequencyMHz(carrierFrequencyMHz)
.setPhaseCenterOffset(phaseCenterOffset)
@@ -282,7 +299,7 @@
private void enableLocationPermissions() {
Mockito.doThrow(new SecurityException()).when(
- mMockContext).enforceCallingPermission(
+ mMockContext).enforceCallingOrSelfPermission(
AdditionalMatchers.and(
AdditionalMatchers.not(eq(Manifest.permission.LOCATION_HARDWARE)),
AdditionalMatchers.not(eq(Manifest.permission.ACCESS_FINE_LOCATION))),
@@ -290,9 +307,15 @@
when(mMockContext.checkPermission(
eq(android.Manifest.permission.LOCATION_HARDWARE), anyInt(), anyInt())).thenReturn(
PackageManager.PERMISSION_GRANTED);
+ when(mMockContext.checkPermission(
+ eq(Manifest.permission.ACCESS_FINE_LOCATION), anyInt(), anyInt())).thenReturn(
+ PackageManager.PERMISSION_GRANTED);
+ when(mMockContext.checkPermission(
+ eq(Manifest.permission.ACCESS_COARSE_LOCATION), anyInt(), anyInt())).thenReturn(
+ PackageManager.PERMISSION_GRANTED);
// AppOpsManager will return true if OP_FINE_LOCATION is checked
- when(mAppOpsManager.checkOp(anyInt(), anyInt(), anyString())).thenAnswer(
+ when(mAppOpsManager.checkOpNoThrow(anyInt(), anyInt(), anyString())).thenAnswer(
(InvocationOnMock invocation) -> {
int code = (int) (invocation.getArguments()[0]);
if (code == AppOpsManager.OP_FINE_LOCATION) {
@@ -307,69 +330,44 @@
private void disableLocationPermissions() {
Mockito.doThrow(new SecurityException()).when(
- mMockContext).enforceCallingPermission(anyString(), nullable(String.class));
- Mockito.doThrow(new SecurityException()).when(
- mMockContext).checkPermission(anyString(), anyInt(), anyInt());
+ mMockContext).enforceCallingOrSelfPermission(anyString(), nullable(String.class));
- when(mAppOpsManager.checkOp(anyInt(), anyInt(),
+ when(mMockContext.checkPermission(
+ anyString(), anyInt(), anyInt())).thenReturn(
+ PackageManager.PERMISSION_DENIED);
+
+ when(mAppOpsManager.checkOpNoThrow(anyInt(), anyInt(),
anyString())).thenReturn(AppOpsManager.MODE_ERRORED);
when(mLocationManagerInternal.isProviderEnabledForUser(eq(GPS_PROVIDER), anyInt()))
.thenReturn(false);
}
- private GnssStatusListenerHelper createGnssStatusListenerHelper(Context context,
- Handler handler) {
- return new GnssStatusListenerHelper(
- context, handler) {
- @Override
- protected boolean isAvailableInPlatform() {
- return true;
- }
-
- @Override
- protected boolean isGpsEnabled() {
- return true;
- }
- };
+ private GnssStatusProvider createGnssStatusListenerHelper() {
+ return new GnssStatusProvider(mUserInfoHelper, mSettingsHelper, mAppOpsHelper,
+ mAppForegroundHelper, new LocationUsageLogger());
}
- private GnssMeasurementsProvider createGnssMeasurementsProvider(Context context,
- Handler handler) {
+ private GnssMeasurementsProvider createGnssMeasurementsProvider() {
GnssMeasurementProviderNative
mockGnssMeasurementProviderNative = mock(GnssMeasurementProviderNative.class);
- return new GnssMeasurementsProvider(
- context, handler, mockGnssMeasurementProviderNative) {
- @Override
- protected boolean isGpsEnabled() {
- return true;
- }
- };
+ return new GnssMeasurementsProvider(mUserInfoHelper, mSettingsHelper,
+ mAppOpsHelper, mAppForegroundHelper, new LocationUsageLogger(),
+ mockGnssMeasurementProviderNative);
}
- private GnssNavigationMessageProvider createGnssNavigationMessageProvider(Context context,
- Handler handler) {
+ private GnssNavigationMessageProvider createGnssNavigationMessageProvider() {
GnssNavigationMessageProviderNative mockGnssNavigationMessageProviderNative = mock(
GnssNavigationMessageProviderNative.class);
- return new GnssNavigationMessageProvider(context, handler,
- mockGnssNavigationMessageProviderNative) {
- @Override
- protected boolean isGpsEnabled() {
- return true;
- }
- };
+ return new GnssNavigationMessageProvider(mUserInfoHelper, mSettingsHelper, mAppOpsHelper,
+ mAppForegroundHelper, mockGnssNavigationMessageProviderNative);
}
- private GnssAntennaInfoProvider createGnssAntennaInfoProvider(Context context,
- Handler handler) {
+ private GnssAntennaInfoProvider createGnssAntennaInfoProvider() {
GnssAntennaInfoProviderNative mockGnssAntenaInfoProviderNative = mock(
GnssAntennaInfoProviderNative.class);
- return new GnssAntennaInfoProvider(context, handler, mockGnssAntenaInfoProviderNative) {
- @Override
- protected boolean isGpsEnabled() {
- return true;
- }
- };
+ return new GnssAntennaInfoProvider(mUserInfoHelper, mSettingsHelper, mAppOpsHelper,
+ mAppForegroundHelper, mockGnssAntenaInfoProviderNative);
}
@Test
@@ -398,8 +396,7 @@
when(mMockGnssCapabilitiesProvider.getGnssCapabilities()).thenReturn(mGnssCapabilities);
enableLocationPermissions();
- assertThat(mGnssManagerService.getGnssCapabilities("com.android.server")).isEqualTo(
- mGnssCapabilities);
+ assertThat(mGnssManagerService.getGnssCapabilities()).isEqualTo(mGnssCapabilities);
}
@Test
@@ -429,7 +426,7 @@
assertThrows(SecurityException.class,
() -> mGnssManagerService.startGnssBatch(periodNanos, wakeOnFifoFull,
- "com.android.server"));
+ "com.android.server", null));
verify(mMockGnssBatchingProvider, times(0)).start(periodNanos, wakeOnFifoFull);
}
@@ -441,7 +438,7 @@
enableLocationPermissions();
assertThat(mGnssManagerService.startGnssBatch(periodNanos, wakeOnFifoFull,
- "com.android.server"))
+ "com.android.server", null))
.isEqualTo(
true);
verify(mMockGnssBatchingProvider, times(1)).start(100L, true);
@@ -455,8 +452,7 @@
disableLocationPermissions();
assertThrows(SecurityException.class, () -> mGnssManagerService.addGnssBatchingCallback(
- mockBatchedLocationCallback, "com.android.server", "abcd123",
- "TestBatchedLocationCallback"));
+ mockBatchedLocationCallback, "com.android.server", null));
mGnssManagerService.onReportLocation(mockLocationList);
@@ -471,8 +467,8 @@
enableLocationPermissions();
assertThat(mGnssManagerService.addGnssBatchingCallback(
- mockBatchedLocationCallback, "com.android.server",
- "abcd123", "TestBatchedLocationCallback")).isEqualTo(true);
+ mockBatchedLocationCallback, "com.android.server", null))
+ .isEqualTo(true);
mGnssManagerService.onReportLocation(mockLocationList);
@@ -488,11 +484,11 @@
enableLocationPermissions();
assertThat(mGnssManagerService.addGnssBatchingCallback(
- mockBatchedLocationCallback1, "com.android.server",
- "abcd123", "TestBatchedLocationCallback")).isEqualTo(true);
+ mockBatchedLocationCallback1, "com.android.server", null))
+ .isEqualTo(true);
assertThat(mGnssManagerService.addGnssBatchingCallback(
- mockBatchedLocationCallback2, "com.android.server",
- "abcd123", "TestBatchedLocationCallback")).isEqualTo(true);
+ mockBatchedLocationCallback2, "com.android.server", null))
+ .isEqualTo(true);
mGnssManagerService.onReportLocation(mockLocationList);
@@ -525,7 +521,7 @@
enableLocationPermissions();
mGnssManagerService.addGnssBatchingCallback(mockBatchedLocationCallback,
- "com.android.server", "abcd123", "TestBatchedLocationCallback");
+ "com.android.server", null);
disableLocationPermissions();
@@ -546,7 +542,7 @@
enableLocationPermissions();
mGnssManagerService.addGnssBatchingCallback(mockBatchedLocationCallback,
- "com.android.server", "abcd123", "TestBatchedLocationCallback");
+ "com.android.server", null);
mGnssManagerService.removeGnssBatchingCallback();
@@ -584,7 +580,8 @@
mTestGnssStatusProvider.onFirstFix(timeToFirstFix);
- verify(mockGnssStatusListener, times(0)).onFirstFix(timeToFirstFix);
+ verify(mockGnssStatusListener, after(FAILURE_TIMEOUT_MS).times(0)).onFirstFix(
+ timeToFirstFix);
}
@Test
@@ -594,12 +591,12 @@
enableLocationPermissions();
- assertThat(mGnssManagerService.registerGnssStatusCallback(
- mockGnssStatusListener, "com.android.server", "abcd123")).isEqualTo(true);
+ mGnssManagerService.registerGnssStatusCallback(
+ mockGnssStatusListener, "com.android.server", "abcd123");
mTestGnssStatusProvider.onFirstFix(timeToFirstFix);
- verify(mockGnssStatusListener, times(1)).onFirstFix(timeToFirstFix);
+ verify(mockGnssStatusListener, timeout(TIMEOUT_MS).times(1)).onFirstFix(timeToFirstFix);
}
@Test
@@ -616,7 +613,8 @@
mTestGnssStatusProvider.onFirstFix(timeToFirstFix);
- verify(mockGnssStatusListener, times(0)).onFirstFix(timeToFirstFix);
+ verify(mockGnssStatusListener, after(FAILURE_TIMEOUT_MS).times(0)).onFirstFix(
+ timeToFirstFix);
}
@Test
@@ -631,10 +629,11 @@
assertThrows(SecurityException.class,
() -> mGnssManagerService.addGnssMeasurementsListener(
new GnssRequest.Builder().build(), mockGnssMeasurementsListener,
- "com.android.server", "abcd123", "TestGnssMeasurementsListener"));
+ "com.android.server", null));
mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
- verify(mockGnssMeasurementsListener, times(0)).onGnssMeasurementsReceived(
+ verify(mockGnssMeasurementsListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssMeasurementsReceived(
gnssMeasurementsEvent);
}
@@ -647,14 +646,14 @@
enableLocationPermissions();
- assertThat(mGnssManagerService.addGnssMeasurementsListener(
+ mGnssManagerService.addGnssMeasurementsListener(
new GnssRequest.Builder().build(),
mockGnssMeasurementsListener,
- "com.android.server", "abcd123",
- "TestGnssMeasurementsListener")).isEqualTo(true);
+ "com.android.server", null);
mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
- verify(mockGnssMeasurementsListener, times(1)).onGnssMeasurementsReceived(
+ verify(mockGnssMeasurementsListener,
+ timeout(TIMEOUT_MS).times(1)).onGnssMeasurementsReceived(
gnssMeasurementsEvent);
}
@@ -698,8 +697,7 @@
mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(),
mockGnssMeasurementsListener,
- "com.android.server", "abcd123",
- "TestGnssMeasurementsListener");
+ "com.android.server", null);
disableLocationPermissions();
@@ -707,7 +705,8 @@
mockGnssMeasurementsListener);
mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
- verify(mockGnssMeasurementsListener, times(0)).onGnssMeasurementsReceived(
+ verify(mockGnssMeasurementsListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssMeasurementsReceived(
gnssMeasurementsEvent);
}
@@ -722,8 +721,7 @@
mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(),
mockGnssMeasurementsListener,
- "com.android.server", "abcd123",
- "TestGnssMeasurementsListener");
+ "com.android.server", null);
disableLocationPermissions();
@@ -731,7 +729,8 @@
mockGnssMeasurementsListener);
mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
- verify(mockGnssMeasurementsListener, times(0)).onGnssMeasurementsReceived(
+ verify(mockGnssMeasurementsListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssMeasurementsReceived(
gnssMeasurementsEvent);
}
@@ -746,10 +745,10 @@
assertThrows(SecurityException.class,
() -> mGnssManagerService.addGnssAntennaInfoListener(
mockGnssAntennaInfoListener,
- "com.android.server", "abcd123", "TestGnssAntennaInfoListener"));
+ "com.android.server", null));
mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
- verify(mockGnssAntennaInfoListener, times(0))
+ verify(mockGnssAntennaInfoListener, after(FAILURE_TIMEOUT_MS).times(0))
.onGnssAntennaInfoReceived(gnssAntennaInfos);
}
@@ -761,11 +760,11 @@
enableLocationPermissions();
- assertThat(mGnssManagerService.addGnssAntennaInfoListener(mockGnssAntennaInfoListener,
- "com.android.server", "abcd123", "TestGnssAntennaInfoListener")).isEqualTo(true);
+ mGnssManagerService.addGnssAntennaInfoListener(mockGnssAntennaInfoListener,
+ "com.android.server", null);
mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
- verify(mockGnssAntennaInfoListener, times(1))
+ verify(mockGnssAntennaInfoListener, timeout(TIMEOUT_MS).times(1))
.onGnssAntennaInfoReceived(gnssAntennaInfos);
}
@@ -779,7 +778,7 @@
mGnssManagerService.addGnssAntennaInfoListener(
mockGnssAntennaInfoListener,
- "com.android.server", "abcd123", "TestGnssAntennaInfoListener");
+ "com.android.server", null);
disableLocationPermissions();
@@ -787,8 +786,8 @@
mockGnssAntennaInfoListener);
mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
- verify(mockGnssAntennaInfoListener, times(0)).onGnssAntennaInfoReceived(
- gnssAntennaInfos);
+ verify(mockGnssAntennaInfoListener, after(FAILURE_TIMEOUT_MS).times(0))
+ .onGnssAntennaInfoReceived(gnssAntennaInfos);
}
@Test
@@ -801,13 +800,14 @@
mGnssManagerService.addGnssAntennaInfoListener(
mockGnssAntennaInfoListener,
- "com.android.server", "abcd123", "TestGnssAntennaInfoListener");
+ "com.android.server", null);
mGnssManagerService.removeGnssAntennaInfoListener(
mockGnssAntennaInfoListener);
mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
- verify(mockGnssAntennaInfoListener, times(0)).onGnssAntennaInfoReceived(
+ verify(mockGnssAntennaInfoListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssAntennaInfoReceived(
gnssAntennaInfos);
}
@@ -821,12 +821,12 @@
assertThrows(SecurityException.class,
() -> mGnssManagerService.addGnssNavigationMessageListener(
- mockGnssNavigationMessageListener, "com.android.server",
- "abcd123", "TestGnssNavigationMessageListener"));
+ mockGnssNavigationMessageListener, "com.android.server", null));
mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage);
- verify(mockGnssNavigationMessageListener, times(0)).onGnssNavigationMessageReceived(
+ verify(mockGnssNavigationMessageListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssNavigationMessageReceived(
gnssNavigationMessage);
}
@@ -838,13 +838,13 @@
enableLocationPermissions();
- assertThat(mGnssManagerService.addGnssNavigationMessageListener(
- mockGnssNavigationMessageListener, "com.android.server",
- "abcd123", "TestGnssNavigationMessageListener")).isEqualTo(true);
+ mGnssManagerService.addGnssNavigationMessageListener(
+ mockGnssNavigationMessageListener, "com.android.server", null);
mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage);
- verify(mockGnssNavigationMessageListener, times(1)).onGnssNavigationMessageReceived(
+ verify(mockGnssNavigationMessageListener,
+ timeout(TIMEOUT_MS).times(1)).onGnssNavigationMessageReceived(
gnssNavigationMessage);
}
@@ -857,8 +857,7 @@
enableLocationPermissions();
mGnssManagerService.addGnssNavigationMessageListener(
- mockGnssNavigationMessageListener, "com.android.server",
- "abcd123", "TestGnssNavigationMessageListener");
+ mockGnssNavigationMessageListener, "com.android.server", null);
disableLocationPermissions();
@@ -867,7 +866,8 @@
mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage);
- verify(mockGnssNavigationMessageListener, times(0)).onGnssNavigationMessageReceived(
+ verify(mockGnssNavigationMessageListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssNavigationMessageReceived(
gnssNavigationMessage);
}
@@ -880,15 +880,15 @@
enableLocationPermissions();
mGnssManagerService.addGnssNavigationMessageListener(
- mockGnssNavigationMessageListener, "com.android.server",
- "abcd123", "TestGnssNavigationMessageListener");
+ mockGnssNavigationMessageListener, "com.android.server", null);
mGnssManagerService.removeGnssNavigationMessageListener(
mockGnssNavigationMessageListener);
mTestGnssNavigationMessageProvider.onNavigationMessageAvailable(gnssNavigationMessage);
- verify(mockGnssNavigationMessageListener, times(0)).onGnssNavigationMessageReceived(
+ verify(mockGnssNavigationMessageListener,
+ after(FAILURE_TIMEOUT_MS).times(0)).onGnssNavigationMessageReceived(
gnssNavigationMessage);
}
diff --git a/services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java b/services/tests/mockingservicestests/src/com/android/server/location/test/FakeProvider.java
similarity index 93%
rename from services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java
rename to services/tests/mockingservicestests/src/com/android/server/location/test/FakeProvider.java
index 5943f67..2f1a20b 100644
--- a/services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/test/FakeProvider.java
@@ -23,12 +23,11 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
-import java.util.Collections;
public class FakeProvider extends AbstractLocationProvider {
public FakeProvider() {
- super(Runnable::run, Collections.emptySet());
+ super(Runnable::run);
}
@Override
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/test/ProviderListenerCapture.java b/services/tests/mockingservicestests/src/com/android/server/location/test/ProviderListenerCapture.java
new file mode 100644
index 0000000..5e5ed11
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/test/ProviderListenerCapture.java
@@ -0,0 +1,61 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location.test;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.location.Location;
+
+import com.android.server.location.AbstractLocationProvider;
+
+import java.util.LinkedList;
+import java.util.List;
+
+public class ProviderListenerCapture implements AbstractLocationProvider.Listener {
+
+ private final Object mLock;
+ private final LinkedList<AbstractLocationProvider.State> mNewStates = new LinkedList<>();
+ private final LinkedList<Location> mLocations = new LinkedList<>();
+
+ public ProviderListenerCapture(Object lock) {
+ mLock = lock;
+ }
+
+ @Override
+ public void onStateChanged(AbstractLocationProvider.State oldState,
+ AbstractLocationProvider.State newState) {
+ assertThat(Thread.holdsLock(mLock)).isTrue();
+ mNewStates.add(newState);
+ }
+
+ public AbstractLocationProvider.State getNextNewState() {
+ return mNewStates.poll();
+ }
+
+ @Override
+ public void onReportLocation(Location location) {
+ assertThat(Thread.holdsLock(mLock)).isTrue();
+ mLocations.add(location);
+ }
+
+ public Location getNextLocation() {
+ return mLocations.poll();
+ }
+
+ @Override
+ public void onReportLocation(List<Location> locations) {}
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/util/listeners/AbstractListenerManagerTest.java b/services/tests/mockingservicestests/src/com/android/server/location/util/listeners/AbstractListenerManagerTest.java
new file mode 100644
index 0000000..36d7912
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/util/listeners/AbstractListenerManagerTest.java
@@ -0,0 +1,285 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.location.util.listeners;
+
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.location.util.listeners.AbstractListenerManager;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+import java.util.function.Predicate;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AbstractListenerManagerTest {
+
+ private TestListenerManager mListenerManager;
+
+ @Before
+ public void setUp() {
+ mListenerManager = new TestListenerManager();
+ }
+
+ @Test
+ public void testAdd() {
+ Runnable listener = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(0);
+
+ mListenerManager.notifyListeners();
+ verify(listener).run();
+ }
+
+ @Test
+ public void testRemove() {
+ Runnable listener = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener);
+ mListenerManager.removeListener(listener);
+ assertThat(mListenerManager.mRegistered).isFalse();
+ assertThat(mListenerManager.mActive).isFalse();
+
+ mListenerManager.notifyListeners();
+ verify(listener, never()).run();
+ }
+
+ @Test
+ public void testMergeMultiple() {
+ Runnable listener1 = mock(Runnable.class);
+ Runnable listener2 = mock(Runnable.class);
+ Runnable listener3 = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener1);
+ mListenerManager.addListener(1, listener2);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(1);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(1)).run();
+ verify(listener2, times(1)).run();
+ verify(listener3, times(0)).run();
+
+ mListenerManager.addListener(0, listener3);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(1);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(2)).run();
+ verify(listener2, times(2)).run();
+ verify(listener3, times(1)).run();
+
+ mListenerManager.removeListener(listener2);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(0);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(3)).run();
+ verify(listener2, times(2)).run();
+ verify(listener3, times(2)).run();
+
+ mListenerManager.removeListener(listener1);
+ mListenerManager.removeListener(listener3);
+ assertThat(mListenerManager.mRegistered).isFalse();
+ assertThat(mListenerManager.mActive).isFalse();
+ }
+
+ @Test
+ public void testPredicate() {
+ Runnable listener = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener);
+
+ mListenerManager.notifyListeners(i -> i != 0);
+ verify(listener, never()).run();
+
+ mListenerManager.notifyListeners(i -> i == 0);
+ verify(listener).run();
+ }
+
+ @Test
+ public void testInactive() {
+ Runnable listener = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener);
+ mListenerManager.setActive(0, false);
+ assertThat(mListenerManager.mRegistered).isFalse();
+ assertThat(mListenerManager.mActive).isFalse();
+
+ mListenerManager.notifyListeners();
+ verify(listener, never()).run();
+
+ mListenerManager.setActive(0, true);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(0);
+
+ mListenerManager.notifyListeners();
+ verify(listener).run();
+ }
+
+ @Test
+ public void testMergeMultiple_Inactive() {
+ Runnable listener1 = mock(Runnable.class);
+ Runnable listener2 = mock(Runnable.class);
+ Runnable listener3 = mock(Runnable.class);
+
+ mListenerManager.addListener(0, listener1);
+ mListenerManager.addListener(2, listener2);
+ mListenerManager.addListener(1, listener3);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(2);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(1)).run();
+ verify(listener2, times(1)).run();
+ verify(listener3, times(1)).run();
+
+ mListenerManager.setActive(2, false);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(1);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(2)).run();
+ verify(listener2, times(1)).run();
+ verify(listener3, times(2)).run();
+
+ mListenerManager.setActive(2, true);
+ assertThat(mListenerManager.mRegistered).isTrue();
+ assertThat(mListenerManager.mActive).isTrue();
+ assertThat(mListenerManager.mMergedRequest).isEqualTo(2);
+
+ mListenerManager.notifyListeners();
+ verify(listener1, times(3)).run();
+ verify(listener2, times(2)).run();
+ verify(listener3, times(3)).run();
+
+ mListenerManager.setActive(0, false);
+ mListenerManager.setActive(1, false);
+ mListenerManager.setActive(2, false);
+ assertThat(mListenerManager.mRegistered).isFalse();
+ assertThat(mListenerManager.mActive).isFalse();
+ }
+
+ private static class TestRegistration extends
+ AbstractListenerManager.Registration<Integer, Runnable> {
+
+ boolean mActive = true;
+
+ protected TestRegistration(Integer integer, Runnable runnable) {
+ super(integer, DIRECT_EXECUTOR, runnable);
+ }
+ }
+
+ private static class TestListenerManager extends
+ AbstractListenerManager<Runnable, Integer, Runnable, TestRegistration, Integer> {
+
+ boolean mActive;
+ boolean mRegistered;
+ int mMergedRequest;
+
+ TestListenerManager() {
+ }
+
+ public void addListener(Integer request, Runnable listener) {
+ addRegistration(listener, new TestRegistration(request, listener));
+ }
+
+ public void removeListener(Runnable listener) {
+ removeRegistration(listener);
+ }
+
+ public void setActive(Integer request, boolean active) {
+ updateRegistrations(testRegistration -> {
+ if (testRegistration.getRequest().equals(request)) {
+ testRegistration.mActive = active;
+ return true;
+ }
+ return false;
+ });
+ }
+
+ public void notifyListeners() {
+ deliverToListeners(Runnable::run);
+ }
+
+ public void notifyListeners(Predicate<Integer> predicate) {
+ deliverToListeners(Runnable::run, r -> predicate.test(r.getRequest()));
+ }
+
+ @Override
+ protected boolean registerService(Integer mergedRequest) {
+ mRegistered = true;
+ mMergedRequest = mergedRequest;
+ return true;
+ }
+
+ @Override
+ protected void unregisterService() {
+ mRegistered = false;
+ }
+
+ @Override
+ protected boolean isActive(TestRegistration registration) {
+ return registration.mActive;
+ }
+
+ @Override
+ protected void onActive() {
+ mActive = true;
+ }
+
+ @Override
+ protected void onInactive() {
+ mActive = false;
+ }
+
+ @Override
+ protected Integer mergeRequests(List<TestRegistration> testRegistrations) {
+ int max = Integer.MIN_VALUE;
+ for (TestRegistration registration : testRegistrations) {
+ if (registration.getRequest() > max) {
+ max = registration.getRequest();
+ }
+ }
+ return max;
+ }
+ }
+}
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 449e75c..d148c21 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -43,6 +43,7 @@
"platformprotosnano",
"hamcrest-library",
"servicestests-utils",
+ "service-appsearch",
"service-jobscheduler",
"service-permission",
// TODO: remove once Android migrates to JUnit 4.12,
diff --git a/services/tests/servicestests/src/com/android/server/PinnerServiceTest.java b/services/tests/servicestests/src/com/android/server/PinnerServiceTest.java
index ed74947..ed0a550 100644
--- a/services/tests/servicestests/src/com/android/server/PinnerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/PinnerServiceTest.java
@@ -256,4 +256,6 @@
unpinAll(pinnerService);
}
+ // TODO: Add test to check that the pages we expect to be pinned are actually pinned
+
}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/gestures/GesturesObserverTest.java b/services/tests/servicestests/src/com/android/server/accessibility/gestures/GesturesObserverTest.java
new file mode 100644
index 0000000..d965625
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/gestures/GesturesObserverTest.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.gestures;
+
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import android.app.Instrumentation;
+import android.content.Context;
+import android.view.Display;
+import android.view.MotionEvent;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.server.accessibility.magnification.GesturesObserver;
+import com.android.server.accessibility.utils.TouchEventGenerator;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for GesturesObserver.
+ */
+public class GesturesObserverTest {
+
+ private static final int GESTURE_STUB = 1;
+ private static final int GESTURE_STUB2 = 2;
+ private static final float DEFAULT_X = 100f;
+ private static final float DEFAULT_Y = 100f;
+
+ private GesturesObserver mGesturesObserver;
+ @Mock
+ private GesturesObserver.Listener mListener;
+
+ private Context mContext;
+ private Instrumentation mInstrumentation;
+ private GestureMatcherStub mGestureMatcher;
+ private GestureMatcherStub mGestureMatcher2;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = InstrumentationRegistry.getContext();
+ mInstrumentation = InstrumentationRegistry.getInstrumentation();
+ mGestureMatcher = new GestureMatcherStub(mContext, GESTURE_STUB);
+ mGestureMatcher2 = new GestureMatcherStub(mContext, GESTURE_STUB2);
+ mGesturesObserver = new GesturesObserver(mListener, mGestureMatcher, mGestureMatcher2);
+ }
+
+ @Test
+ public void onActionMove_onGestureCancelled() {
+ final MotionEvent moveEvent = TouchEventGenerator.moveEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X , DEFAULT_Y);
+
+ mInstrumentation.runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(moveEvent, moveEvent, 0);
+ });
+ verify(mListener).onGestureCancelled(any(MotionEvent.class), any(MotionEvent.class), eq(0));
+ assertTrue(mGestureMatcher.mInvocationMove == 0);
+ }
+
+ @Test
+ public void onMotionEvent_unrecognizedEvents_onGestureCancelledAfterTimeout() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+
+ mInstrumentation.runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ });
+
+ verify(mListener, timeout(GestureMatcherStub.TIMEOUT_MILLIS + 100)).onGestureCancelled(
+ any(MotionEvent.class), any(MotionEvent.class), eq(0));
+ assertTrue(mGestureMatcher.mInvocationDown == 1);
+ }
+
+ @Test
+ public void onMotionEvent_recognizedEvents_onGestureCompleted() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final MotionEvent moveEvent = TouchEventGenerator.moveEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X , DEFAULT_Y);
+
+ mInstrumentation.runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ mGesturesObserver.onMotionEvent(moveEvent, moveEvent, 0);
+ });
+
+ verify(mListener).onGestureCompleted(eq(GESTURE_STUB), any(MotionEvent.class),
+ any(MotionEvent.class), eq(0));
+ assertTrue(mGestureMatcher.mInvocationMove == 1);
+ }
+
+ private static class GestureMatcherStub extends GestureMatcher {
+
+ private static final int TIMEOUT_MILLIS = 100;
+ private int mInvocationMove = 0;
+ private int mInvocationDown = 0;
+ protected GestureMatcherStub(Context context, int gestureId) {
+ super(gestureId, context.getMainThreadHandler(), null);
+ }
+
+ @Override
+ protected void onDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ mInvocationDown++;
+ cancelAfter(TIMEOUT_MILLIS, event, rawEvent, policyFlags);
+ }
+
+ @Override
+ protected void onMove(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+ mInvocationMove++;
+ cancelPendingTransitions();
+ completeGesture(event, rawEvent, policyFlags);
+ }
+
+ @Override
+ protected String getGestureName() {
+ return getClass().getSimpleName();
+ }
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
index 9053234..cd3fb48 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
@@ -16,6 +16,15 @@
package com.android.server.accessibility.gestures;
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_HOVER_ENTER;
+import static android.view.MotionEvent.ACTION_HOVER_EXIT;
+import static android.view.MotionEvent.ACTION_HOVER_MOVE;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_POINTER_UP;
+import static android.view.MotionEvent.ACTION_UP;
+
import static com.android.server.accessibility.gestures.TouchState.STATE_CLEAR;
import static com.android.server.accessibility.gestures.TouchState.STATE_DELEGATING;
import static com.android.server.accessibility.gestures.TouchState.STATE_DRAGGING;
@@ -23,6 +32,7 @@
import static org.hamcrest.MatcherAssert.assertThat;
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.fail;
import static org.mockito.Mockito.mock;
import android.content.Context;
@@ -31,6 +41,7 @@
import android.testing.DexmakerShareClassLoaderRule;
import android.view.InputDevice;
import android.view.MotionEvent;
+import android.view.ViewConfiguration;
import androidx.test.InstrumentationRegistry;
import androidx.test.runner.AndroidJUnit4;
@@ -98,8 +109,7 @@
}
@Override
- public void setNext(EventStreamTransformation next) {
- }
+ public void setNext(EventStreamTransformation next) {}
@Override
public EventStreamTransformation getNext() {
@@ -118,13 +128,26 @@
}
@Test
+ public void testOneFingerMove_shouldInjectHoverEvents() {
+ goFromStateClearTo(STATE_TOUCH_EXPLORING_1FINGER);
+ try {
+ Thread.sleep(2 * ViewConfiguration.getDoubleTapTimeout());
+ } catch (InterruptedException e) {
+ fail("Interrupted while waiting for transition to touch exploring state.");
+ }
+ moveEachPointers(mLastEvent, p(10, 10));
+ send(mLastEvent);
+ goToStateClearFrom(STATE_TOUCH_EXPLORING_1FINGER);
+ assertCapturedEvents(ACTION_HOVER_ENTER, ACTION_HOVER_MOVE, ACTION_HOVER_EXIT);
+ }
+
+ @Test
public void testTwoFingersMove_shouldDelegatingAndInjectActionDownPointerDown() {
goFromStateClearTo(STATE_MOVING_2FINGERS);
-
assertState(STATE_DELEGATING);
- assertCapturedEvents(
- MotionEvent.ACTION_DOWN,
- MotionEvent.ACTION_POINTER_DOWN);
+ goToStateClearFrom(STATE_MOVING_2FINGERS);
+ assertState(STATE_CLEAR);
+ assertCapturedEvents(ACTION_DOWN, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_UP);
assertCapturedEventsNoHistory();
}
@@ -146,11 +169,7 @@
mTouchExplorer.clearEvents(InputDevice.SOURCE_TOUCHSCREEN);
assertState(STATE_CLEAR);
List<MotionEvent> events = getCapturedEvents();
- assertCapturedEvents(
- MotionEvent.ACTION_DOWN,
- MotionEvent.ACTION_POINTER_DOWN,
- MotionEvent.ACTION_POINTER_UP,
- MotionEvent.ACTION_UP);
+ assertCapturedEvents(ACTION_DOWN, ACTION_POINTER_DOWN, ACTION_POINTER_UP, ACTION_UP);
}
@Test
@@ -158,7 +177,9 @@
goFromStateClearTo(STATE_DRAGGING_2FINGERS);
assertState(STATE_DRAGGING);
- assertCapturedEvents(MotionEvent.ACTION_DOWN);
+ goToStateClearFrom(STATE_DRAGGING_2FINGERS);
+ assertState(STATE_CLEAR);
+ assertCapturedEvents(ACTION_DOWN, ACTION_UP);
assertCapturedEventsNoHistory();
}
@@ -166,25 +187,32 @@
public void testTwoFingersNotDrag_shouldDelegatingAndActionUpDownPointerDown() {
// only from dragging state, and withMoveHistory no dragging
goFromStateClearTo(STATE_PINCH_2FINGERS);
-
assertState(STATE_DELEGATING);
+ goToStateClearFrom(STATE_PINCH_2FINGERS);
+ assertState(STATE_CLEAR);
assertCapturedEvents(
- /* goto dragging state */ MotionEvent.ACTION_DOWN,
- /* leave dragging state */ MotionEvent.ACTION_UP,
- MotionEvent.ACTION_DOWN,
- MotionEvent.ACTION_POINTER_DOWN);
+ /* goto dragging state */ ACTION_DOWN,
+ /* leave dragging state */ ACTION_UP,
+ ACTION_DOWN,
+ ACTION_POINTER_DOWN,
+ ACTION_POINTER_UP,
+ ACTION_UP);
assertCapturedEventsNoHistory();
}
@Test
public void testThreeFingersMove_shouldDelegatingAnd3ActionPointerDown() {
goFromStateClearTo(STATE_MOVING_3FINGERS);
-
assertState(STATE_DELEGATING);
+ goToStateClearFrom(STATE_MOVING_3FINGERS);
+ assertState(STATE_CLEAR);
assertCapturedEvents(
- MotionEvent.ACTION_DOWN,
- MotionEvent.ACTION_POINTER_DOWN,
- MotionEvent.ACTION_POINTER_DOWN);
+ ACTION_DOWN,
+ ACTION_POINTER_DOWN,
+ ACTION_POINTER_DOWN,
+ ACTION_POINTER_UP,
+ ACTION_POINTER_UP,
+ ACTION_UP);
assertCapturedEventsNoHistory();
}
@@ -200,54 +228,76 @@
private void goFromStateClearTo(int state) {
try {
switch (state) {
- case STATE_CLEAR: {
+ case STATE_CLEAR:
mTouchExplorer.onDestroy();
- }
- break;
- case STATE_TOUCH_EXPLORING_1FINGER: {
+ break;
+ case STATE_TOUCH_EXPLORING_1FINGER:
send(downEvent());
- }
- break;
- case STATE_TOUCH_EXPLORING_2FINGER: {
+ break;
+ case STATE_TOUCH_EXPLORING_2FINGER:
goFromStateClearTo(STATE_TOUCH_EXPLORING_1FINGER);
send(pointerDownEvent());
- }
- break;
- case STATE_TOUCH_EXPLORING_3FINGER: {
+ break;
+ case STATE_TOUCH_EXPLORING_3FINGER:
goFromStateClearTo(STATE_TOUCH_EXPLORING_2FINGER);
send(thirdPointerDownEvent());
- }
- break;
- case STATE_MOVING_2FINGERS: {
+ break;
+ case STATE_MOVING_2FINGERS:
goFromStateClearTo(STATE_TOUCH_EXPLORING_2FINGER);
moveEachPointers(mLastEvent, p(10, 0), p(5, 10));
send(mLastEvent);
- }
- break;
- case STATE_DRAGGING_2FINGERS: {
+ break;
+ case STATE_DRAGGING_2FINGERS:
goFromStateClearTo(STATE_TOUCH_EXPLORING_2FINGER);
moveEachPointers(mLastEvent, p(10, 0), p(10, 0));
send(mLastEvent);
- }
- break;
- case STATE_PINCH_2FINGERS: {
+ break;
+ case STATE_PINCH_2FINGERS:
goFromStateClearTo(STATE_DRAGGING_2FINGERS);
moveEachPointers(mLastEvent, p(10, 0), p(-10, 1));
send(mLastEvent);
- }
- break;
- case STATE_MOVING_3FINGERS: {
+ break;
+ case STATE_MOVING_3FINGERS:
goFromStateClearTo(STATE_TOUCH_EXPLORING_3FINGER);
moveEachPointers(mLastEvent, p(1, 0), p(1, 0), p(1, 0));
send(mLastEvent);
- }
- break;
+ break;
default:
throw new IllegalArgumentException("Illegal state: " + state);
}
} catch (Throwable t) {
- throw new RuntimeException("Failed to go to state "
- + TouchState.getStateSymbolicName(state), t);
+ throw new RuntimeException(
+ "Failed to go to state " + TouchState.getStateSymbolicName(state), t);
+ }
+ }
+
+ private void goToStateClearFrom(int state) {
+ try {
+ switch (state) {
+ case STATE_CLEAR:
+ mTouchExplorer.onDestroy();
+ break;
+ case STATE_TOUCH_EXPLORING_1FINGER:
+ send(upEvent());
+ break;
+ case STATE_TOUCH_EXPLORING_2FINGER:
+ case STATE_MOVING_2FINGERS:
+ case STATE_DRAGGING_2FINGERS:
+ case STATE_PINCH_2FINGERS:
+ send(pointerUpEvent());
+ goToStateClearFrom(STATE_TOUCH_EXPLORING_1FINGER);
+ break;
+ case STATE_TOUCH_EXPLORING_3FINGER:
+ case STATE_MOVING_3FINGERS:
+ send(thirdPointerUpEvent());
+ goToStateClearFrom(STATE_TOUCH_EXPLORING_2FINGER);
+ break;
+ default:
+ throw new IllegalArgumentException("Illegal state: " + state);
+ }
+ } catch (Throwable t) {
+ throw new RuntimeException(
+ "Failed to go to state " + TouchState.getStateSymbolicName(state), t);
}
}
@@ -292,32 +342,48 @@
private MotionEvent downEvent() {
mLastDownTime = SystemClock.uptimeMillis();
return fromTouchscreen(
- MotionEvent.obtain(mLastDownTime, mLastDownTime, MotionEvent.ACTION_DOWN, DEFAULT_X,
- DEFAULT_Y, 0));
+ MotionEvent.obtain(
+ mLastDownTime, mLastDownTime, ACTION_DOWN, DEFAULT_X, DEFAULT_Y, 0));
}
private MotionEvent upEvent() {
- MotionEvent event = downEvent();
- event.setAction(MotionEvent.ACTION_UP);
+ MotionEvent event = MotionEvent.obtainNoHistory(mLastEvent);
+ event.setAction(ACTION_UP);
return event;
}
private MotionEvent pointerDownEvent() {
final int secondPointerId = 0x0100;
- final int action = MotionEvent.ACTION_POINTER_DOWN | secondPointerId;
- final float[] x = new float[]{DEFAULT_X, DEFAULT_X + 29};
- final float[] y = new float[]{DEFAULT_Y, DEFAULT_Y + 28};
+ final int action = ACTION_POINTER_DOWN | secondPointerId;
+ final float[] x = new float[] {DEFAULT_X, DEFAULT_X + 29};
+ final float[] y = new float[] {DEFAULT_Y, DEFAULT_Y + 28};
return manyPointerEvent(action, x, y);
}
+ private MotionEvent pointerUpEvent() {
+ final int secondPointerId = 0x0100;
+ final int action = ACTION_POINTER_UP | secondPointerId;
+ final MotionEvent event = MotionEvent.obtainNoHistory(mLastEvent);
+ event.setAction(action);
+ return event;
+ }
+
private MotionEvent thirdPointerDownEvent() {
final int thirdPointerId = 0x0200;
- final int action = MotionEvent.ACTION_POINTER_DOWN | thirdPointerId;
- final float[] x = new float[]{DEFAULT_X, DEFAULT_X + 29, DEFAULT_X + 59};
- final float[] y = new float[]{DEFAULT_Y, DEFAULT_Y + 28, DEFAULT_Y + 58};
+ final int action = ACTION_POINTER_DOWN | thirdPointerId;
+ final float[] x = new float[] {DEFAULT_X, DEFAULT_X + 29, DEFAULT_X + 59};
+ final float[] y = new float[] {DEFAULT_Y, DEFAULT_Y + 28, DEFAULT_Y + 58};
return manyPointerEvent(action, x, y);
}
+ private MotionEvent thirdPointerUpEvent() {
+ final int thirdPointerId = 0x0200;
+ final int action = ACTION_POINTER_UP | thirdPointerId;
+ final MotionEvent event = MotionEvent.obtainNoHistory(mLastEvent);
+ event.setAction(action);
+ return event;
+ }
+
private void moveEachPointers(MotionEvent event, PointF... points) {
final float[] x = new float[points.length];
final float[] y = new float[points.length];
@@ -325,8 +391,8 @@
x[i] = event.getX(i) + points[i].x;
y[i] = event.getY(i) + points[i].y;
}
- MotionEvent newEvent = manyPointerEvent(MotionEvent.ACTION_MOVE, x, y);
- event.setAction(MotionEvent.ACTION_MOVE);
+ MotionEvent newEvent = manyPointerEvent(ACTION_MOVE, x, y);
+ event.setAction(ACTION_MOVE);
// add history count
event.addBatch(newEvent);
}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/SimpleSwipeTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/SimpleSwipeTest.java
new file mode 100644
index 0000000..01631bf21
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/SimpleSwipeTest.java
@@ -0,0 +1,115 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.Display;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.server.accessibility.utils.TouchEventGenerator;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for {@link SimpleSwipe}.
+ */
+public class SimpleSwipeTest {
+
+ private static final float DEFAULT_X = 100f;
+ private static final float DEFAULT_Y = 100f;
+
+ private Context mContext;
+
+ private GesturesObserver mGesturesObserver;
+ @Mock
+ private GesturesObserver.Listener mListener;
+
+ @BeforeClass
+ public static void setupOnce() {
+ }
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+ mContext = InstrumentationRegistry.getContext();
+ mGesturesObserver = new GesturesObserver(mListener, new SimpleSwipe(mContext));
+ }
+
+ @Test
+ public void sendSingleDownEvent_onGestureCanceledAfterTimeout() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final int timeoutMillis = MagnificationGestureMatcher.getMagnificationMultiTapTimeout(
+ mContext);
+
+ runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ });
+
+ verify(mListener, timeout(timeoutMillis + 100)).onGestureCancelled(any(MotionEvent.class),
+ any(MotionEvent.class), eq(0));
+ }
+
+ @Test
+ public void sendSwipeEvent_onGestureCompleted() {
+ final float swipeDistance = ViewConfiguration.get(mContext).getScaledTouchSlop();
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final MotionEvent moveEvent = TouchEventGenerator.moveEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X + swipeDistance, DEFAULT_Y);
+
+ runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ mGesturesObserver.onMotionEvent(moveEvent, moveEvent, 0);
+ });
+
+ verify(mListener).onGestureCompleted(
+ MagnificationGestureMatcher.GESTURE_SWIPE, moveEvent, moveEvent, 0);
+ }
+
+ @Test
+ public void sendSingleTapEvent_onGestureCanceled() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final MotionEvent upEvent = TouchEventGenerator.upEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+
+ runOnMainSync(() -> {
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ mGesturesObserver.onMotionEvent(upEvent, upEvent, 0);
+ });
+
+ verify(mListener).onGestureCancelled(any(MotionEvent.class),
+ any(MotionEvent.class), eq(0));
+ }
+
+ private static void runOnMainSync(Runnable runnable) {
+ InstrumentationRegistry.getInstrumentation().runOnMainSync(runnable);
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/magnification/TwoFingersDownTest.java b/services/tests/servicestests/src/com/android/server/accessibility/magnification/TwoFingersDownTest.java
new file mode 100644
index 0000000..2b1bdc5
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/magnification/TwoFingersDownTest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.magnification;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.view.Display;
+import android.view.MotionEvent;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.server.accessibility.utils.TouchEventGenerator;
+
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+/**
+ * Tests for {@link TwoFingersDown}.
+ */
+public class TwoFingersDownTest {
+
+ private static final float DEFAULT_X = 100f;
+ private static final float DEFAULT_Y = 100f;
+
+ private static Context sContext;
+ private static int sTimeoutMillis;
+
+ private Context mContext;
+ private GesturesObserver mGesturesObserver;
+ @Mock
+ private GesturesObserver.Listener mListener;
+
+ @BeforeClass
+ public static void setupOnce() {
+ sContext = InstrumentationRegistry.getContext();
+ sTimeoutMillis = MagnificationGestureMatcher.getMagnificationMultiTapTimeout(
+ sContext) + 100;
+ }
+
+ @Before
+ public void setUp() {
+ mContext = InstrumentationRegistry.getContext();
+ MockitoAnnotations.initMocks(this);
+ mGesturesObserver = new GesturesObserver(mListener, new TwoFingersDown(mContext));
+ }
+
+ @Test
+ public void sendSingleDownEvent_GestureCanceledAfterTimeout() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+
+ verify(mListener, timeout(sTimeoutMillis)).onGestureCancelled(any(MotionEvent.class),
+ any(MotionEvent.class), eq(0));
+ }
+
+ @Test
+ public void sendTwoFingerDownEvent_onGestureCompleted() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final MotionEvent.PointerCoords defPointerCoords = new MotionEvent.PointerCoords();
+ defPointerCoords.x = DEFAULT_X;
+ defPointerCoords.y = DEFAULT_Y;
+ final MotionEvent.PointerCoords secondPointerCoords = new MotionEvent.PointerCoords();
+ secondPointerCoords.x = DEFAULT_X + 10;
+ secondPointerCoords.y = DEFAULT_Y + 10;
+
+ final MotionEvent pointerDownEvent = TouchEventGenerator.pointerDownEvent(
+ Display.DEFAULT_DISPLAY, defPointerCoords, secondPointerCoords);
+
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ mGesturesObserver.onMotionEvent(pointerDownEvent, pointerDownEvent, 0);
+
+ verify(mListener, timeout(sTimeoutMillis)).onGestureCompleted(
+ MagnificationGestureMatcher.GESTURE_TWO_FINGER_DOWN, pointerDownEvent,
+ pointerDownEvent, 0);
+ }
+
+ @Test
+ public void sendSingleTapEvent_onGestureCancelled() {
+ final MotionEvent downEvent = TouchEventGenerator.downEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+ final MotionEvent upEvent = TouchEventGenerator.upEvent(Display.DEFAULT_DISPLAY,
+ DEFAULT_X, DEFAULT_Y);
+
+ mGesturesObserver.onMotionEvent(downEvent, downEvent, 0);
+ mGesturesObserver.onMotionEvent(upEvent, upEvent, 0);
+
+ verify(mListener, timeout(sTimeoutMillis)).onGestureCancelled(any(MotionEvent.class),
+ any(MotionEvent.class), eq(0));
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/utils/TouchEventGenerator.java b/services/tests/servicestests/src/com/android/server/accessibility/utils/TouchEventGenerator.java
new file mode 100644
index 0000000..7cbf3ee
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/accessibility/utils/TouchEventGenerator.java
@@ -0,0 +1,91 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.accessibility.utils;
+
+import static android.view.MotionEvent.ACTION_DOWN;
+import static android.view.MotionEvent.ACTION_MOVE;
+import static android.view.MotionEvent.ACTION_POINTER_DOWN;
+import static android.view.MotionEvent.ACTION_UP;
+import static android.view.MotionEvent.PointerCoords;
+
+import android.os.SystemClock;
+import android.view.InputDevice;
+import android.view.MotionEvent;
+
+/**
+ * generates {@link MotionEvent} with source {@link InputDevice#SOURCE_TOUCHSCREEN}
+ *
+ */
+public class TouchEventGenerator {
+
+ public static MotionEvent downEvent(int displayId, float x, float y) {
+ return generateSingleTouchEvent(displayId, ACTION_DOWN, x, y);
+ }
+
+ public static MotionEvent moveEvent(int displayId, float x, float y) {
+ return generateSingleTouchEvent(displayId, ACTION_MOVE, x, y);
+ }
+ public static MotionEvent upEvent(int displayId, float x, float y) {
+ return generateSingleTouchEvent(displayId, ACTION_UP, x, y);
+ }
+
+ public static MotionEvent pointerDownEvent(int displayId, PointerCoords defPointerCoords,
+ PointerCoords pointerCoords) {
+ return generatePointerEvent(displayId, ACTION_POINTER_DOWN, defPointerCoords,
+ pointerCoords);
+ }
+
+ private static MotionEvent generateSingleTouchEvent(int displayId, int action, float x,
+ float y) {
+ final long downTime = SystemClock.uptimeMillis();
+ final MotionEvent ev = MotionEvent.obtain(downTime, downTime,
+ action, x, y, 0);
+ ev.setDisplayId(displayId);
+ ev.setSource(InputDevice.SOURCE_TOUCHSCREEN);
+ return ev;
+ }
+
+ private static MotionEvent generatePointerEvent(int displayId, int action,
+ PointerCoords defPointerCoords, PointerCoords pointerCoords) {
+ final long downTime = SystemClock.uptimeMillis();
+ MotionEvent.PointerProperties defPointerProperties = new MotionEvent.PointerProperties();
+ defPointerProperties.id = 0;
+ defPointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;
+ MotionEvent.PointerProperties pointerProperties = new MotionEvent.PointerProperties();
+ pointerProperties.id = 1;
+ pointerProperties.toolType = MotionEvent.TOOL_TYPE_FINGER;
+
+ final MotionEvent ev = MotionEvent.obtain(
+ /* downTime */ downTime,
+ /* eventTime */ downTime,
+ /* action */ action,
+ /* pointerCount */ 2,
+ /* pointerProperties */ new MotionEvent.PointerProperties[] {
+ defPointerProperties, pointerProperties},
+ /* pointerCoords */ new PointerCoords[] { defPointerCoords, pointerCoords },
+ /* metaState */ 0,
+ /* buttonState */ 0,
+ /* xPrecision */ 1.0f,
+ /* yPrecision */ 1.0f,
+ /* deviceId */ 0,
+ /* edgeFlags */ 0,
+ /* source */ InputDevice.SOURCE_TOUCHSCREEN,
+ /* flags */ 0);
+ ev.setDisplayId(displayId);
+ return ev;
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
index f122014..6f4ff35 100644
--- a/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/UserControllerTest.java
@@ -206,11 +206,15 @@
@Test
public void testStartPreCreatedUser_foreground() {
assertFalse(mUserController.startUser(TEST_PRE_CREATED_USER_ID, /* foreground= */ true));
+ // Make sure no intents have been fired for pre-created users.
+ assertTrue(mInjector.mSentIntents.isEmpty());
}
@Test
public void testStartPreCreatedUser_background() throws Exception {
assertTrue(mUserController.startUser(TEST_PRE_CREATED_USER_ID, /* foreground= */ false));
+ // Make sure no intents have been fired for pre-created users.
+ assertTrue(mInjector.mSentIntents.isEmpty());
verify(mInjector.getWindowManager(), never()).startFreezingScreen(anyInt(), anyInt());
verify(mInjector.getWindowManager(), never()).setSwitchingUser(anyBoolean());
diff --git a/services/tests/servicestests/src/com/android/server/appsearch/impl/AppSearchImplTest.java b/services/tests/servicestests/src/com/android/server/appsearch/impl/AppSearchImplTest.java
new file mode 100644
index 0000000..34ade81
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/appsearch/impl/AppSearchImplTest.java
@@ -0,0 +1,109 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.appsearch.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.expectThrows;
+
+import android.annotation.UserIdInt;
+import android.content.Context;
+import android.os.UserHandle;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.android.icing.proto.IndexingConfig;
+import com.google.android.icing.proto.PropertyConfigProto;
+import com.google.android.icing.proto.SchemaProto;
+import com.google.android.icing.proto.SchemaTypeConfigProto;
+import com.google.android.icing.proto.TermMatchType;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+public class AppSearchImplTest {
+ private final Context mContext = InstrumentationRegistry.getContext();
+ private final @UserIdInt int mUserId = UserHandle.getCallingUserId();
+
+ @Test
+ public void testRewriteSchemaTypes() {
+ SchemaProto inSchema = SchemaProto.newBuilder()
+ .addTypes(SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("TestType")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("subject")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ IndexingConfig.newBuilder()
+ .setTokenizerType(
+ IndexingConfig.TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ .build()
+ ).build()
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("link")
+ .setDataType(PropertyConfigProto.DataType.Code.DOCUMENT)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setSchemaType("RefType")
+ .build()
+ ).build()
+ ).build();
+
+ SchemaProto expectedSchema = SchemaProto.newBuilder()
+ .addTypes(SchemaTypeConfigProto.newBuilder()
+ .setSchemaType("com.android.server.appsearch.impl@42:TestType")
+ .addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("subject")
+ .setDataType(PropertyConfigProto.DataType.Code.STRING)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setIndexingConfig(
+ IndexingConfig.newBuilder()
+ .setTokenizerType(
+ IndexingConfig.TokenizerType.Code.PLAIN)
+ .setTermMatchType(TermMatchType.Code.PREFIX)
+ .build()
+ ).build()
+ ).addProperties(PropertyConfigProto.newBuilder()
+ .setPropertyName("link")
+ .setDataType(PropertyConfigProto.DataType.Code.DOCUMENT)
+ .setCardinality(PropertyConfigProto.Cardinality.Code.OPTIONAL)
+ .setSchemaType("com.android.server.appsearch.impl@42:RefType")
+ .build()
+ ).build()
+ ).build();
+
+ AppSearchImpl impl = new AppSearchImpl(mContext, mUserId);
+ SchemaProto.Builder actualSchema = inSchema.toBuilder();
+ impl.rewriteSchemaTypes("com.android.server.appsearch.impl@42:", actualSchema);
+
+ assertThat(actualSchema.build()).isEqualTo(expectedSchema);
+ }
+
+ @Test
+ public void testPackageNotFound() {
+ AppSearchImpl impl = new AppSearchImpl(mContext, mUserId);
+ IllegalStateException e = expectThrows(
+ IllegalStateException.class,
+ () -> impl.setSchema(
+ /*callingUid=*/Integer.MAX_VALUE,
+ SchemaProto.getDefaultInstance(),
+ /*forceOverride=*/false));
+ assertThat(e).hasMessageThat().contains("Failed to look up package name");
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java b/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java
new file mode 100644
index 0000000..07b6556
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/appsearch/impl/FakeIcingTest.java
@@ -0,0 +1,127 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.appsearch.impl;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import com.google.android.icing.proto.DocumentProto;
+import com.google.android.icing.proto.PropertyProto;
+import com.google.android.icing.proto.SearchResultProto;
+import com.google.android.icing.proto.StatusProto;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(AndroidJUnit4.class)
+public class FakeIcingTest {
+ @Test
+ public void query() {
+ FakeIcing icing = new FakeIcing();
+ icing.put(createDoc("uri:cat", "The cat said meow"));
+ icing.put(createDoc("uri:dog", "The dog said woof"));
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "fred")).isEmpty();
+ }
+
+ @Test
+ public void queryNorm() {
+ FakeIcing icing = new FakeIcing();
+ icing.put(createDoc("uri:cat", "The cat said meow"));
+ icing.put(createDoc("uri:dog", "The dog said woof"));
+
+ assertThat(queryGetUris(icing, "the")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "The")).containsExactly("uri:cat", "uri:dog");
+ assertThat(queryGetUris(icing, "tHe")).containsExactly("uri:cat", "uri:dog");
+ }
+
+ @Test
+ public void get() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+ }
+
+ @Test
+ public void replace() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ DocumentProto dog = createDoc("uri:dog", "The dog said woof");
+
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ icing.put(dog);
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+
+ // Replace
+ DocumentProto cat2 = createDoc("uri:cat", "The cat said purr");
+ DocumentProto bird = createDoc("uri:bird", "The cat said tweet");
+ icing.put(cat2);
+ icing.put(bird);
+
+ assertThat(queryGetUris(icing, "meow")).isEmpty();
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog", "uri:bird");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat2);
+ }
+
+ @Test
+ public void delete() {
+ DocumentProto cat = createDoc("uri:cat", "The cat said meow");
+ DocumentProto dog = createDoc("uri:dog", "The dog said woof");
+
+ FakeIcing icing = new FakeIcing();
+ icing.put(cat);
+ icing.put(dog);
+
+ assertThat(queryGetUris(icing, "meow")).containsExactly("uri:cat");
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:cat", "uri:dog");
+ assertThat(icing.get("uri:cat")).isEqualTo(cat);
+
+ // Delete
+ icing.delete("uri:cat");
+ icing.delete("uri:notreal");
+
+ assertThat(queryGetUris(icing, "meow")).isEmpty();
+ assertThat(queryGetUris(icing, "said")).containsExactly("uri:dog");
+ assertThat(icing.get("uri:cat")).isNull();
+ }
+
+ private static DocumentProto createDoc(String uri, String body) {
+ return DocumentProto.newBuilder()
+ .setUri(uri)
+ .addProperties(PropertyProto.newBuilder().addStringValues(body))
+ .build();
+ }
+
+ private static List<String> queryGetUris(FakeIcing icing, String term) {
+ List<String> uris = new ArrayList<>();
+ SearchResultProto results = icing.query(term);
+ assertThat(results.getStatus().getCode()).isEqualTo(StatusProto.Code.OK);
+ for (SearchResultProto.ResultProto result : results.getResultsList()) {
+ uris.add(result.getDocument().getUri());
+ }
+ return uris;
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
index ac0cac1..0dfdd48 100644
--- a/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/attention/AttentionManagerServiceTest.java
@@ -29,7 +29,6 @@
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
-import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import android.attention.AttentionManagerInternal.AttentionCallbackInternal;
@@ -50,7 +49,6 @@
import com.android.server.attention.AttentionManagerService.AttentionCheckCache;
import com.android.server.attention.AttentionManagerService.AttentionCheckCacheBuffer;
import com.android.server.attention.AttentionManagerService.AttentionHandler;
-import com.android.server.attention.AttentionManagerService.UserState;
import org.junit.Before;
import org.junit.Test;
@@ -64,15 +62,12 @@
@SmallTest
public class AttentionManagerServiceTest {
private AttentionManagerService mSpyAttentionManager;
- private UserState mSpyUserState;
private final int mTimeout = 1000;
@Mock
private AttentionCallbackInternal mMockAttentionCallbackInternal;
@Mock
private AttentionHandler mMockHandler;
@Mock
- private IAttentionCallback mMockIAttentionCallback;
- @Mock
private IPowerManager mMockIPowerManager;
@Mock
private IThermalService mMockIThermalService;
@@ -91,44 +86,31 @@
Object mLock = new Object();
// setup a spy on attention manager
- AttentionManagerService mAttentionManager = new AttentionManagerService(
+ AttentionManagerService attentionManager = new AttentionManagerService(
mContext,
mPowerManager,
mLock,
mMockHandler);
- mSpyAttentionManager = Mockito.spy(mAttentionManager);
+ mSpyAttentionManager = Mockito.spy(attentionManager);
// setup a spy on user state
ComponentName componentName = new ComponentName("a", "b");
mSpyAttentionManager.mComponentName = componentName;
- UserState mUserState = new UserState(0,
- mContext,
- mLock,
- mMockHandler,
- componentName);
- mUserState.mService = new MockIAttentionService();
- mSpyUserState = spy(mUserState);
- }
- @Test
- public void testCancelAttentionCheck_noCrashWhenNoUserStateLocked() {
- mSpyAttentionManager.cancelAttentionCheck(null);
+ AttentionCheck attentionCheck = new AttentionCheck(mMockAttentionCallbackInternal,
+ mSpyAttentionManager);
+ mSpyAttentionManager.mCurrentAttentionCheck = attentionCheck;
}
@Test
public void testCancelAttentionCheck_noCrashWhenCallbackMismatched() {
- mSpyUserState.mCurrentAttentionCheck =
- new AttentionCheck(mMockAttentionCallbackInternal, mMockIAttentionCallback);
- doReturn(mSpyUserState).when(mSpyAttentionManager).peekCurrentUserStateLocked();
+ assertThat(mMockAttentionCallbackInternal).isNotNull();
mSpyAttentionManager.cancelAttentionCheck(null);
}
@Test
public void testCancelAttentionCheck_cancelCallbackWhenMatched() {
- mSpyUserState.mCurrentAttentionCheck =
- new AttentionCheck(mMockAttentionCallbackInternal, mMockIAttentionCallback);
- doReturn(mSpyUserState).when(mSpyAttentionManager).peekCurrentUserStateLocked();
mSpyAttentionManager.cancelAttentionCheck(mMockAttentionCallbackInternal);
- verify(mSpyAttentionManager).cancel(any());
+ verify(mSpyAttentionManager).cancel();
}
@Test
@@ -142,7 +124,6 @@
public void testCheckAttention_callOnSuccess() throws RemoteException {
doReturn(true).when(mSpyAttentionManager).isServiceEnabled();
doReturn(true).when(mMockIPowerManager).isInteractive();
- doReturn(mSpyUserState).when(mSpyAttentionManager).getOrCreateCurrentUserStateLocked();
doNothing().when(mSpyAttentionManager).freeIfInactiveLocked();
AttentionCallbackInternal callback = Mockito.mock(AttentionCallbackInternal.class);
@@ -151,13 +132,6 @@
}
@Test
- public void testOnSwitchUser_noCrashCurrentServiceIsNull() {
- final int userId = 10;
- mSpyAttentionManager.getOrCreateUserStateLocked(userId);
- mSpyAttentionManager.onSwitchUser(userId);
- }
-
- @Test
public void testAttentionCheckCacheBuffer_getLast_returnTheLastElement() {
AttentionCheckCacheBuffer buffer = new AttentionCheckCacheBuffer();
buffer.add(new AttentionCheckCache(0, 0, 1L));
diff --git a/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
new file mode 100644
index 0000000..3ebc315
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/backup/UserBackupManagerServiceTest.java
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.backup;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.content.Context;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@Presubmit
+@RunWith(AndroidJUnit4.class)
+public class UserBackupManagerServiceTest {
+ @Mock Context mContext;
+
+ private TestBackupService mService;
+
+ @Before
+ public void setUp() {
+ MockitoAnnotations.initMocks(this);
+
+ mService = new TestBackupService(mContext);
+ }
+
+ @Test
+ public void initializeBackupEnableState_doesntWriteStateToDisk() {
+ mService.initializeBackupEnableState();
+
+ assertThat(mService.isEnabledStatePersisted).isFalse();
+ }
+
+ @Test
+ public void updateBackupEnableState_writesStateToDisk() {
+ mService.setBackupEnabled(true);
+
+ assertThat(mService.isEnabledStatePersisted).isTrue();
+ }
+
+ private static class TestBackupService extends UserBackupManagerService {
+ boolean isEnabledStatePersisted = false;
+
+ TestBackupService(Context context) {
+ super(context);
+ }
+
+ @Override
+ void writeEnabledState(boolean enable) {
+ isEnabledStatePersisted = true;
+ }
+
+ @Override
+ boolean readEnabledState() {
+ return false;
+ }
+
+ @Override
+ void updateStateOnBackupEnabled(boolean wasEnabled, boolean enable) {}
+ }
+}
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
index eb9b98e..83df406 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcInitiationActionFromAvrTest.java
@@ -25,6 +25,7 @@
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -39,6 +40,7 @@
/** Tests for {@link ArcInitiationActionFromAvrTest} */
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class ArcInitiationActionFromAvrTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
index ad3e040..dc326ee 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/ArcTerminationActionFromAvrTest.java
@@ -23,6 +23,7 @@
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -35,6 +36,7 @@
/** Tests for {@link ArcTerminationActionFromAvr} */
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class ArcTerminationActionFromAvrTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java b/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java
index 3736df5..41f4a1e 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/DetectTvSystemAudioModeSupportActionTest.java
@@ -22,8 +22,11 @@
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
+
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
+
import com.android.server.hdmi.HdmiCecLocalDeviceAudioSystem.TvSystemAudioModeSupportedCallback;
import org.junit.Before;
@@ -33,6 +36,7 @@
/** Tests for {@link DetectTvSystemAudioModeSupportAction} class. */
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class DetectTvSystemAudioModeSupportActionTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
index 5d8131f..55c925f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecControllerTest.java
@@ -33,6 +33,7 @@
import android.hardware.tv.cec.V1_0.SendMessageResult;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -46,6 +47,7 @@
/** Tests for {@link com.android.server.hdmi.HdmiCecController} class. */
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class HdmiCecControllerTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
index a587029..b5c4374 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceAudioSystemTest.java
@@ -34,6 +34,7 @@
import android.media.AudioManager;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -48,6 +49,7 @@
import java.util.ArrayList;
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
/** Tests for {@link HdmiCecLocalDeviceAudioSystem} class. */
public class HdmiCecLocalDeviceAudioSystemTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
index f72d622..4841900 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDevicePlaybackTest.java
@@ -22,6 +22,7 @@
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -35,6 +36,7 @@
import java.util.ArrayList;
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
/** Tests for {@link HdmiCecLocalDevicePlayback} class. */
public class HdmiCecLocalDevicePlaybackTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
index 039b904..c22d6ac 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecLocalDeviceTest.java
@@ -30,6 +30,7 @@
import android.hardware.hdmi.HdmiControlManager;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -42,6 +43,7 @@
import java.util.Arrays;
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
/** Tests for {@link HdmiCecLocalDevice} class. */
public class HdmiCecLocalDeviceTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageBuilderTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageBuilderTest.java
index ef974f2..53c4d6f 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageBuilderTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiCecMessageBuilderTest.java
@@ -22,6 +22,7 @@
import static com.google.common.truth.Truth.assertThat;
import android.hardware.hdmi.HdmiDeviceInfo;
+import android.platform.test.annotations.Presubmit;
import androidx.test.filters.SmallTest;
@@ -30,6 +31,7 @@
import org.junit.runners.JUnit4;
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
/** Tests for {@link HdmiCecMessageBuilder}.. */
public class HdmiCecMessageBuilderTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceStaticTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceStaticTest.java
index 607cd81..49b708f0 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceStaticTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceStaticTest.java
@@ -17,6 +17,8 @@
import static com.google.common.truth.Truth.assertThat;
+import android.platform.test.annotations.Presubmit;
+
import androidx.test.filters.SmallTest;
import org.junit.Test;
@@ -29,6 +31,7 @@
* Tests for static methods of {@link HdmiControlService} class.
*/
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class HdmiControlServiceStaticTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
index fa19814..7028478 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiControlServiceTest.java
@@ -39,6 +39,7 @@
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -56,6 +57,7 @@
* Tests for {@link HdmiControlService} class.
*/
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class HdmiControlServiceTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
index 985c647..f72dbf6 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/HdmiUtilsTest.java
@@ -17,6 +17,7 @@
import static com.google.common.truth.Truth.assertThat;
+import android.platform.test.annotations.Presubmit;
import android.util.Slog;
import androidx.test.filters.SmallTest;
@@ -36,6 +37,7 @@
import java.util.List;
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
/** Tests for {@link HdmiUtils} class. */
public class HdmiUtilsTest {
diff --git a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
index 6dcff35..c734242 100644
--- a/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
+++ b/services/tests/servicestests/src/com/android/server/hdmi/SystemAudioInitiationActionFromAvrTest.java
@@ -26,6 +26,7 @@
import android.media.AudioManager;
import android.os.Looper;
import android.os.test.TestLooper;
+import android.platform.test.annotations.Presubmit;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.SmallTest;
@@ -38,6 +39,7 @@
/** Tests for {@link SystemAudioInitiationActionFromAvr} */
@SmallTest
+@Presubmit
@RunWith(JUnit4.class)
public class SystemAudioInitiationActionFromAvrTest {
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
index 670bd81..dd3054f 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/recoverablekeystore/PlatformKeyManagerTest.java
@@ -24,11 +24,9 @@
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
-import static org.mockito.Mockito.never;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
-import static org.testng.Assert.expectThrows;
import android.app.KeyguardManager;
import android.content.Context;
@@ -67,7 +65,7 @@
public class PlatformKeyManagerTest {
private static final String DATABASE_FILE_NAME = "recoverablekeystore.db";
- private static final int MIN_GENERATION_ID = 1000000;
+ private static final int MIN_GENERATION_ID = 1001000;
private static final int PRIMARY_USER_ID_FIXTURE = 0;
private static final int USER_ID_FIXTURE = 42;
private static final long USER_SID = 4200L;
@@ -76,15 +74,15 @@
private static final String TESTING_KEYSTORE_KEY_ALIAS = "testing-key-store-key-alias";
private static final String ENCRYPTION_KEY_ALIAS_1 =
- "com.android.server.locksettings.recoverablekeystore/platform/42/1000000/encrypt";
+ "com.android.server.locksettings.recoverablekeystore/platform/42/1001000/encrypt";
private static final String DECRYPTION_KEY_ALIAS_1 =
- "com.android.server.locksettings.recoverablekeystore/platform/42/1000000/decrypt";
+ "com.android.server.locksettings.recoverablekeystore/platform/42/1001000/decrypt";
private static final String DECRYPTION_KEY_FOR_ALIAS_PRIMARY_USER_1 =
- "com.android.server.locksettings.recoverablekeystore/platform/0/1000000/decrypt";
+ "com.android.server.locksettings.recoverablekeystore/platform/0/1001000/decrypt";
private static final String ENCRYPTION_KEY_ALIAS_2 =
- "com.android.server.locksettings.recoverablekeystore/platform/42/1000001/encrypt";
+ "com.android.server.locksettings.recoverablekeystore/platform/42/1001001/encrypt";
private static final String DECRYPTION_KEY_ALIAS_2 =
- "com.android.server.locksettings.recoverablekeystore/platform/42/1000001/decrypt";
+ "com.android.server.locksettings.recoverablekeystore/platform/42/1001001/decrypt";
@Mock private Context mContext;
@Mock private KeyStoreProxy mKeyStoreProxy;
@@ -221,42 +219,33 @@
}
@Test
- public void init_secondaryUserUser_createsDecryptKeyWithAuthenticationRequired()
+ public void init_secondaryUserUser_createsDecryptKeyWithoutAuthenticationRequired()
throws Exception {
mPlatformKeyManager.init(USER_ID_FIXTURE);
- assertTrue(getDecryptKeyProtection().isUserAuthenticationRequired());
+ assertFalse(getDecryptKeyProtection().isUserAuthenticationRequired());
}
@Test
- public void init_createsDecryptKeyBoundToTheUsersAuthentication() throws Exception {
- mPlatformKeyManager.init(USER_ID_FIXTURE);
-
- assertEquals(
- USER_SID,
- getDecryptKeyProtection().getBoundToSpecificSecureUserId());
- }
-
- @Test
- public void init_doesNotCreateDecryptKeyIfNoSid() throws Exception {
+ public void init_createsDecryptKeyIfNoSid() throws Exception {
when(mGateKeeperService.getSecureUserId(USER_ID_FIXTURE))
.thenReturn(GateKeeper.INVALID_SECURE_USER_ID);
mPlatformKeyManager.init(USER_ID_FIXTURE);
- verify(mKeyStoreProxy, never()).setEntry(
+ verify(mKeyStoreProxy).setEntry(
eq(DECRYPTION_KEY_ALIAS_1),
any(),
any());
}
@Test
- public void init_doesNotCreateDecryptKeyOnGateKeeperException() throws Exception {
+ public void init_createsDecryptKeyOnGateKeeperException() throws Exception {
when(mGateKeeperService.getSecureUserId(USER_ID_FIXTURE)).thenThrow(new RemoteException());
- expectThrows(RemoteException.class, () -> mPlatformKeyManager.init(USER_ID_FIXTURE));
+ mPlatformKeyManager.init(USER_ID_FIXTURE);
- verify(mKeyStoreProxy, never()).setEntry(
+ verify(mKeyStoreProxy).setEntry(
eq(DECRYPTION_KEY_ALIAS_1),
any(),
any());
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java
index 010f8ac..b77f8c5 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationListenerServiceTest.java
@@ -121,6 +121,7 @@
assertEquals(visuallyInterruptive(i), ranking.visuallyInterruptive());
assertEquals(isConversation(i), ranking.isConversation());
assertEquals(getShortcutInfo(i).getId(), ranking.getShortcutInfo().getId());
+ assertEquals(getRankingAdjustment(i), ranking.getRankingAdjustment());
}
}
@@ -191,6 +192,7 @@
tweak.visuallyInterruptive(),
tweak.isConversation(),
tweak.getShortcutInfo(),
+ tweak.getRankingAdjustment(),
tweak.isBubble()
);
assertNotEquals(nru, nru2);
@@ -271,6 +273,7 @@
visuallyInterruptive(i),
isConversation(i),
getShortcutInfo(i),
+ getRankingAdjustment(i),
isBubble(i)
);
rankings[i] = ranking;
@@ -395,6 +398,10 @@
return si;
}
+ private int getRankingAdjustment(int index) {
+ return index % 3 - 1;
+ }
+
private boolean isBubble(int index) {
return index % 4 == 0;
}
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerThumbnailTest.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerThumbnailTest.java
index b8de3ca4..908657f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerThumbnailTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerThumbnailTest.java
@@ -22,8 +22,7 @@
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
-import android.graphics.GraphicBuffer;
-import android.graphics.PixelFormat;
+import android.hardware.HardwareBuffer;
import android.platform.test.annotations.Presubmit;
import android.view.Surface;
@@ -45,8 +44,8 @@
@RunWith(WindowTestRunner.class)
public class WindowContainerThumbnailTest extends WindowTestsBase {
private WindowContainerThumbnail buildThumbnail() {
- final GraphicBuffer buffer = GraphicBuffer.create(1, 1, PixelFormat.RGBA_8888,
- GraphicBuffer.USAGE_SW_READ_RARELY | GraphicBuffer.USAGE_SW_WRITE_NEVER);
+ final HardwareBuffer buffer = HardwareBuffer.create(1, 1, HardwareBuffer.RGBA_8888,
+ 1, HardwareBuffer.USAGE_CPU_READ_RARELY);
final ActivityRecord mockAr = mock(ActivityRecord.class);
when(mockAr.getPendingTransaction()).thenReturn(new StubTransaction());
when(mockAr.makeSurface()).thenReturn(new MockSurfaceControlBuilder());
diff --git a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
index 6826974..7736473 100644
--- a/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
+++ b/telephony/common/com/android/internal/telephony/util/TelephonyUtils.java
@@ -15,6 +15,8 @@
*/
package com.android.internal.telephony.util;
+import static android.telephony.Annotation.DataState;
+
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
@@ -26,6 +28,7 @@
import android.os.PersistableBundle;
import android.os.RemoteException;
import android.os.SystemProperties;
+import android.telephony.TelephonyManager;
import java.io.PrintWriter;
import java.util.Collections;
@@ -154,4 +157,22 @@
} catch (InterruptedException ignored) {
}
}
+
+ /**
+ * Convert data state to string
+ *
+ * @return The data state in string format.
+ */
+ public static String dataStateToString(@DataState int state) {
+ switch (state) {
+ case TelephonyManager.DATA_DISCONNECTED: return "DISCONNECTED";
+ case TelephonyManager.DATA_CONNECTING: return "CONNECTING";
+ case TelephonyManager.DATA_CONNECTED: return "CONNECTED";
+ case TelephonyManager.DATA_SUSPENDED: return "SUSPENDED";
+ case TelephonyManager.DATA_DISCONNECTING: return "DISCONNECTING";
+ case TelephonyManager.DATA_UNKNOWN: return "UNKNOWN";
+ }
+ // This is the error case. The well-defined value for UNKNOWN is -1.
+ return "UNKNOWN(" + state + ")";
+ }
}
diff --git a/telephony/java/android/telephony/CallQuality.java b/telephony/java/android/telephony/CallQuality.java
index 428a515..69b792c 100644
--- a/telephony/java/android/telephony/CallQuality.java
+++ b/telephony/java/android/telephony/CallQuality.java
@@ -345,8 +345,8 @@
+ " averageRoundTripTime=" + mAverageRoundTripTime
+ " codecType=" + mCodecType
+ " rtpInactivityDetected=" + mRtpInactivityDetected
- + " txSilenceDetected=" + mRxSilenceDetected
- + " rxSilenceDetected=" + mTxSilenceDetected
+ + " txSilenceDetected=" + mTxSilenceDetected
+ + " rxSilenceDetected=" + mRxSilenceDetected
+ "}";
}
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 13c5323..6f0a96a 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -1496,7 +1496,7 @@
*/
public static final class Apn {
/** Prefix of all Apn.KEY_* constants. */
- public static final String KEY_PREFIX = "apn.";
+ private static final String KEY_PREFIX = "apn.";
/** IPv4 internet protocol */
public static final String PROTOCOL_IPV4 = "IP";
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index b9d87c4..b9f888c 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -4517,7 +4517,6 @@
*
* @hide
*/
- @SystemApi
@RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
public @NonNull String[] getMergedImsisFromGroup() {
try {
@@ -5497,23 +5496,6 @@
}
}
- /**
- * Convert data state to string
- *
- * @return The data state in string format.
- * @hide
- */
- public static String dataStateToString(@DataState int state) {
- switch (state) {
- case DATA_DISCONNECTED: return "DISCONNECTED";
- case DATA_CONNECTING: return "CONNECTING";
- case DATA_CONNECTED: return "CONNECTED";
- case DATA_SUSPENDED: return "SUSPENDED";
- case DATA_DISCONNECTING: return "DISCONNECTING";
- }
- return "UNKNOWN(" + state + ")";
- }
-
/**
* @hide
*/
@@ -8011,17 +7993,17 @@
/**
* Get the PLMN chosen for Manual Network Selection if active.
- * Return empty string if in automatic selection.
+ * Return null string if in automatic selection.
*
* <p>Requires Permission: {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE
* READ_PRECISE_PHONE_STATE} or that the calling app has carrier privileges
* (see {@link #hasCarrierPrivileges})
*
- * @return manually selected network info on success or empty string on failure
+ * @return manually selected network info on success or null string on failure
*/
@SuppressAutoDoc // No support carrier privileges (b/72967236).
@RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE)
- public @NonNull String getManualNetworkSelectionPlmn() {
+ public @Nullable String getManualNetworkSelectionPlmn() {
try {
ITelephony telephony = getITelephony();
if (telephony != null && isManualNetworkSelectionAllowed()) {
@@ -8030,7 +8012,7 @@
} catch (RemoteException ex) {
Rlog.e(TAG, "getManualNetworkSelectionPlmn RemoteException", ex);
}
- return "";
+ return null;
}
/**
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index dcf339c..0f7cad3 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -2261,7 +2261,7 @@
/**
* Get the user manual network selection.
- * Return empty string if in automatic selection.
+ * Return null if inactive or phone process is down.
*
* @param subId the id of the subscription
* @return operatorinfo on success
diff --git a/test-runner/tests/AndroidManifest.xml b/test-runner/tests/AndroidManifest.xml
index 4f32392..f9d71b4 100644
--- a/test-runner/tests/AndroidManifest.xml
+++ b/test-runner/tests/AndroidManifest.xml
@@ -20,7 +20,8 @@
<application>
<uses-library android:name="android.test.runner" />
<activity android:name="android.test.StubTestBrowserActivity"
- android:label="Stubbed Test Browser">
+ android:label="Stubbed Test Browser"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.FOR_TESTS_ONLY"/>
@@ -28,7 +29,8 @@
</activity>
<activity android:name="android.test.TestBrowserTests"
- android:label="Test Browser Tests">
+ android:label="Test Browser Tests"
+ android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.UNIT_TEST"/>
diff --git a/tests/ActivityManagerPerfTests/tests/src/com/android/frameworks/perftests/am/tests/OomAdjPerfTest.java b/tests/ActivityManagerPerfTests/tests/src/com/android/frameworks/perftests/am/tests/OomAdjPerfTest.java
index 1d3ff06..5d6a4a3 100644
--- a/tests/ActivityManagerPerfTests/tests/src/com/android/frameworks/perftests/am/tests/OomAdjPerfTest.java
+++ b/tests/ActivityManagerPerfTests/tests/src/com/android/frameworks/perftests/am/tests/OomAdjPerfTest.java
@@ -22,13 +22,13 @@
import android.net.Uri;
import android.os.HandlerThread;
import android.perftests.utils.ManualBenchmarkState;
-import android.perftests.utils.PerfManualStatusReporter;
import android.perftests.utils.TraceMarkParser;
import android.perftests.utils.TraceMarkParser.TraceMarkLine;
import android.perftests.utils.TraceMarkParser.TraceMarkSlice;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;
+import androidx.test.runner.AndroidJUnit4;
import com.android.frameworks.perftests.am.util.AtraceUtils;
import com.android.frameworks.perftests.am.util.TargetPackageUtils;
@@ -36,10 +36,8 @@
import org.junit.After;
import org.junit.Before;
-import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
-import org.junit.runners.JUnit4;
import java.util.ArrayList;
import java.util.List;
@@ -53,9 +51,9 @@
* into the stats; when there are enough samples in the stats, the test will
* stop and output the mean/stddev time spent on the updateOomAdjLocked.
*/
-@RunWith(JUnit4.class)
+@RunWith(AndroidJUnit4.class)
@LargeTest
-public final class OomAdjPerfTest {
+public final class OomAdjPerfTest extends BasePerfTest {
private static final String TAG = "OomAdjPerfTest";
private static final boolean VERBOSE = true;
@@ -74,8 +72,6 @@
private static final String ATRACE_CATEGORY = "am";
private static final String ATRACE_OOMADJ_PREFIX = "updateOomAdj_";
- @Rule
- public PerfManualStatusReporter mPerfManualStatusReporter = new PerfManualStatusReporter();
private TraceMarkParser mTraceMarkParser = new TraceMarkParser(this::shouldFilterTraceLine);
private final ArrayList<Long> mDurations = new ArrayList<Long>();
private Context mContext;
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
index ad64840..752efe5 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ChangeAppRotationTest.java
@@ -149,11 +149,11 @@
checkResults(result -> LayersTraceSubject.assertThat(result)
.showsLayer(mTestApp.getPackage())
.then()
- .replaceVisibleLayer(mTestApp.getPackage(), "Screenshot")
+ .replaceVisibleLayer(mTestApp.getPackage(), SCREENSHOT_LAYER)
.then()
- .showsLayer(mTestApp.getPackage()).and().showsLayer("Screenshot")
+ .showsLayer(mTestApp.getPackage()).and().showsLayer(SCREENSHOT_LAYER)
.then()
- .replaceVisibleLayer("Screenshot", mTestApp.getPackage())
+ .replaceVisibleLayer(SCREENSHOT_LAYER, mTestApp.getPackage())
.forAllEntries());
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/FlickerTestBase.java b/tests/FlickerTests/src/com/android/server/wm/flicker/FlickerTestBase.java
index 4578fa3..55ae6f7 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/FlickerTestBase.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/FlickerTestBase.java
@@ -49,6 +49,7 @@
*/
public class FlickerTestBase {
public static final String TAG = "FLICKER";
+ static final String SCREENSHOT_LAYER = "RotationLayer";
static final String NAVIGATION_BAR_WINDOW_TITLE = "NavigationBar";
static final String STATUS_BAR_WINDOW_TITLE = "StatusBar";
static final String DOCKED_STACK_DIVIDER = "DockedStackDivider";
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppColdTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppColdTest.java
index 2981ff9..e68c0d9 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppColdTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppColdTest.java
@@ -88,7 +88,7 @@
checkResults(result -> LayersTraceSubject.assertThat(result)
.showsLayer("Wallpaper")
.then()
- .replaceVisibleLayer("Wallpaper", "Screenshot")
+ .replaceVisibleLayer("Wallpaper", SCREENSHOT_LAYER)
.then()
.showsLayer(mTestApp.getPackage())
.forAllEntries());
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppWarmTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppWarmTest.java
index bb684d1..a0d9367 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppWarmTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/OpenAppWarmTest.java
@@ -88,7 +88,7 @@
checkResults(result -> LayersTraceSubject.assertThat(result)
.showsLayer("Wallpaper")
.then()
- .replaceVisibleLayer("Wallpaper", "Screenshot")
+ .replaceVisibleLayer("Wallpaper", SCREENSHOT_LAYER)
.then()
.showsLayer(mTestApp.getPackage())
.forAllEntries());
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/PipTestBase.java b/tests/FlickerTests/src/com/android/server/wm/flicker/PipTestBase.java
new file mode 100644
index 0000000..93fe84e
--- /dev/null
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/PipTestBase.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.wm.flicker;
+
+import static com.android.server.wm.flicker.helpers.AutomationUtils.closePipWindow;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.hasPipWindow;
+
+import android.support.test.uiautomator.UiDevice;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.LargeTest;
+
+import com.android.server.wm.flicker.helpers.PipAppHelper;
+
+import org.junit.AfterClass;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.MethodSorters;
+import org.junit.runners.Parameterized;
+
+@LargeTest
+@RunWith(Parameterized.class)
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public abstract class PipTestBase extends NonRotationTestBase {
+ static final String sPipWindowTitle = "PipMenuActivity";
+
+ public PipTestBase(String beginRotationName, int beginRotation) {
+ super(beginRotationName, beginRotation);
+
+ this.mTestApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
+ }
+
+ @AfterClass
+ public static void teardown() {
+ UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
+
+ if (hasPipWindow(device)) {
+ closePipWindow(device);
+ }
+ }
+
+ @Test
+ public void checkVisibility_pipWindowBecomesVisible() {
+ checkResults(result -> WmTraceSubject.assertThat(result)
+ .skipUntilFirstAssertion()
+ .showsAppWindowOnTop(sPipWindowTitle)
+ .then()
+ .hidesAppWindow(sPipWindowTitle)
+ .forAllEntries());
+ }
+
+ @Test
+ public void checkVisibility_pipLayerBecomesVisible() {
+ checkResults(result -> LayersTraceSubject.assertThat(result)
+ .skipUntilFirstAssertion()
+ .showsLayer(sPipWindowTitle)
+ .then()
+ .hidesLayer(sPipWindowTitle)
+ .forAllEntries());
+ }
+}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/PipToAppTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/PipToAppTest.java
index 85706bd..23b6107 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/PipToAppTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/PipToAppTest.java
@@ -18,7 +18,6 @@
import static com.android.server.wm.flicker.CommonTransitions.exitPipModeToApp;
-import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;
import com.android.server.wm.flicker.helpers.PipAppHelper;
@@ -37,14 +36,9 @@
@LargeTest
@RunWith(Parameterized.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class PipToAppTest extends NonRotationTestBase {
-
- static final String sPipWindowTitle = "PipMenuActivity";
-
+public class PipToAppTest extends PipTestBase {
public PipToAppTest(String beginRotationName, int beginRotation) {
super(beginRotationName, beginRotation);
-
- this.mTestApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
}
@Before
@@ -54,26 +48,6 @@
}
@Test
- public void checkVisibility_pipWindowBecomesVisible() {
- checkResults(result -> WmTraceSubject.assertThat(result)
- .skipUntilFirstAssertion()
- .showsAppWindowOnTop(sPipWindowTitle)
- .then()
- .hidesAppWindow(sPipWindowTitle)
- .forAllEntries());
- }
-
- @Test
- public void checkVisibility_pipLayerBecomesVisible() {
- checkResults(result -> LayersTraceSubject.assertThat(result)
- .skipUntilFirstAssertion()
- .showsLayer(sPipWindowTitle)
- .then()
- .hidesLayer(sPipWindowTitle)
- .forAllEntries());
- }
-
- @Test
public void checkVisibility_backgroundWindowVisibleBehindPipLayer() {
checkResults(result -> WmTraceSubject.assertThat(result)
.skipUntilFirstAssertion()
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/PipToHomeTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/PipToHomeTest.java
index ef856dc..010c0e6 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/PipToHomeTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/PipToHomeTest.java
@@ -18,11 +18,7 @@
import static com.android.server.wm.flicker.CommonTransitions.exitPipModeToHome;
-import android.view.Surface;
-
-import androidx.test.InstrumentationRegistry;
import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
import com.android.server.wm.flicker.helpers.PipAppHelper;
@@ -32,55 +28,28 @@
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.MethodSorters;
+import org.junit.runners.Parameterized;
/**
* Test Pip launch.
* To run this test: {@code atest FlickerTests:PipToHomeTest}
*/
@LargeTest
-@RunWith(AndroidJUnit4.class)
+@RunWith(Parameterized.class)
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
-public class PipToHomeTest extends FlickerTestBase {
-
- static final String sPipWindowTitle = "PipActivity";
-
- // public PipToHomeTest(String beginRotationName, int beginRotation) {
- public PipToHomeTest() {
- // super(beginRotationName, beginRotation);
-
- this.mTestApp = new PipAppHelper(InstrumentationRegistry.getInstrumentation());
+public class PipToHomeTest extends PipTestBase {
+ public PipToHomeTest(String beginRotationName, int beginRotation) {
+ super(beginRotationName, beginRotation);
}
@Before
public void runTransition() {
- // run(exitPipModeToHome((PipAppHelper) mTestApp, mUiDevice, mBeginRotation)
- run(exitPipModeToHome((PipAppHelper) mTestApp, mUiDevice, Surface.ROTATION_0)
+ run(exitPipModeToHome((PipAppHelper) mTestApp, mUiDevice, mBeginRotation)
.includeJankyRuns().build());
}
@Ignore
@Test
- public void checkVisibility_pipWindowBecomesVisible() {
- checkResults(result -> WmTraceSubject.assertThat(result)
- .skipUntilFirstAssertion()
- .showsAppWindowOnTop(sPipWindowTitle)
- .then()
- .hidesAppWindow(sPipWindowTitle)
- .forAllEntries());
- }
-
- @Test
- public void checkVisibility_pipLayerBecomesVisible() {
- checkResults(result -> LayersTraceSubject.assertThat(result)
- .skipUntilFirstAssertion()
- .showsLayer(sPipWindowTitle)
- .then()
- .hidesLayer(sPipWindowTitle)
- .forAllEntries());
- }
-
- @Ignore
- @Test
public void checkVisibility_backgroundWindowVisibleBehindPipLayer() {
checkResults(result -> WmTraceSubject.assertThat(result)
.showsAppWindowOnTop(sPipWindowTitle)
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/ResizeSplitScreenTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/ResizeSplitScreenTest.java
index e36701b..c43f036 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/ResizeSplitScreenTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/ResizeSplitScreenTest.java
@@ -20,10 +20,13 @@
import static com.android.server.wm.flicker.WindowUtils.getDisplayBounds;
import static com.android.server.wm.flicker.WindowUtils.getDockedStackDividerInset;
import static com.android.server.wm.flicker.WindowUtils.getNavigationBarHeight;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.exitSplitScreen;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.isInSplitScreen;
import static com.google.common.truth.Truth.assertThat;
import android.graphics.Rect;
+import android.support.test.uiautomator.UiDevice;
import android.util.Rational;
import androidx.test.InstrumentationRegistry;
@@ -32,6 +35,7 @@
import com.android.server.wm.flicker.helpers.ImeAppHelper;
+import org.junit.AfterClass;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
@@ -183,4 +187,13 @@
.showsAboveAppWindow(DOCKED_STACK_DIVIDER)
.forAllEntries());
}
+
+ @AfterClass
+ public static void teardown() {
+ UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
+
+ if (isInSplitScreen(device)) {
+ exitSplitScreen(device);
+ }
+ }
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/SplitScreenToLauncherTest.java b/tests/FlickerTests/src/com/android/server/wm/flicker/SplitScreenToLauncherTest.java
index 85a1494..239e901 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/SplitScreenToLauncherTest.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/SplitScreenToLauncherTest.java
@@ -18,12 +18,17 @@
import static com.android.server.wm.flicker.CommonTransitions.splitScreenToLauncher;
import static com.android.server.wm.flicker.WindowUtils.getDisplayBounds;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.exitSplitScreen;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.isInSplitScreen;
+
+import android.support.test.uiautomator.UiDevice;
import androidx.test.InstrumentationRegistry;
import androidx.test.filters.FlakyTest;
import androidx.test.filters.LargeTest;
import androidx.test.runner.AndroidJUnit4;
+import org.junit.AfterClass;
import org.junit.Before;
import org.junit.FixMethodOrder;
import org.junit.Ignore;
@@ -97,4 +102,13 @@
.hidesAboveAppWindow(DOCKED_STACK_DIVIDER)
.forAllEntries());
}
+
+ @AfterClass
+ public static void teardown() {
+ UiDevice device = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());
+
+ if (isInSplitScreen(device)) {
+ exitSplitScreen(device);
+ }
+ }
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java
index 098fd6d..8089939 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/ImeAppHelper.java
@@ -18,6 +18,8 @@
import static android.os.SystemClock.sleep;
+import static org.junit.Assert.assertNotNull;
+
import android.app.Instrumentation;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
@@ -35,6 +37,8 @@
public void clickEditTextWidget(UiDevice device) {
UiObject2 editText = device.findObject(By.res(getPackage(), "plain_text_input"));
+ assertNotNull("Text field not found, this usually happens when the device was left "
+ + "in an unknown state (e.g. in split screen)", editText);
editText.click();
sleep(500);
}
diff --git a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java
index d5f9a20..361ca51 100644
--- a/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java
+++ b/tests/FlickerTests/src/com/android/server/wm/flicker/helpers/PipAppHelper.java
@@ -16,13 +16,14 @@
package com.android.server.wm.flicker.helpers;
-import static com.android.server.wm.flicker.helpers.AutomationUtils.getPipWindowSelector;
+import static com.android.server.wm.flicker.helpers.AutomationUtils.hasPipWindow;
+
+import static org.junit.Assert.assertNotNull;
import android.app.Instrumentation;
import android.support.test.uiautomator.By;
import android.support.test.uiautomator.UiDevice;
import android.support.test.uiautomator.UiObject2;
-import android.support.test.uiautomator.Until;
public class PipAppHelper extends FlickerAppHelper {
@@ -32,12 +33,10 @@
public void clickEnterPipButton(UiDevice device) {
UiObject2 enterPipButton = device.findObject(By.res(getPackage(), "enter_pip"));
+ assertNotNull("Pip button not found, this usually happens when the device was left "
+ + "in an unknown state (e.g. in split screen)", enterPipButton);
enterPipButton.click();
- UiObject2 pipWindow = device.wait(Until.findObject(getPipWindowSelector()), sFindTimeout);
-
- if (pipWindow == null) {
- throw new RuntimeException("Unable to find PIP window");
- }
+ hasPipWindow(device);
}
public void closePipWindow(UiDevice device) {
diff --git a/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java b/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java
index 8f90f13..551498f 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsCollectionTest.java
@@ -319,33 +319,33 @@
assertEntry(18322, 75, 15031, 75, history.getValues(i++, null));
assertEntry(527798, 761, 78570, 652, history.getValues(i++, null));
assertEntry(527797, 760, 78570, 651, history.getValues(i++, null));
- assertEntry(10747, 50, 16838, 55, history.getValues(i++, null));
- assertEntry(10747, 49, 16838, 54, history.getValues(i++, null));
+ assertEntry(10747, 50, 16839, 55, history.getValues(i++, null));
+ assertEntry(10747, 49, 16837, 54, history.getValues(i++, null));
assertEntry(89191, 151, 18021, 140, history.getValues(i++, null));
assertEntry(89190, 150, 18020, 139, history.getValues(i++, null));
- assertEntry(3821, 22, 4525, 26, history.getValues(i++, null));
- assertEntry(3820, 22, 4524, 26, history.getValues(i++, null));
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
+ assertEntry(3821, 23, 4525, 26, history.getValues(i++, null));
+ assertEntry(3820, 21, 4524, 26, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
+ assertEntry(8289, 36, 6864, 39, history.getValues(i++, null));
+ assertEntry(8289, 34, 6862, 37, history.getValues(i++, null));
assertEntry(113914, 174, 18364, 157, history.getValues(i++, null));
assertEntry(113913, 173, 18364, 157, history.getValues(i++, null));
- assertEntry(11378, 49, 9261, 49, history.getValues(i++, null));
- assertEntry(11377, 48, 9261, 49, history.getValues(i++, null));
- assertEntry(201765, 328, 41808, 291, history.getValues(i++, null));
- assertEntry(201765, 328, 41807, 290, history.getValues(i++, null));
- assertEntry(106106, 218, 39917, 201, history.getValues(i++, null));
- assertEntry(106105, 217, 39917, 201, history.getValues(i++, null));
+ assertEntry(11378, 49, 9261, 50, history.getValues(i++, null));
+ assertEntry(11377, 48, 9261, 48, history.getValues(i++, null));
+ assertEntry(201766, 328, 41808, 291, history.getValues(i++, null));
+ assertEntry(201764, 328, 41807, 290, history.getValues(i++, null));
+ assertEntry(106106, 219, 39918, 202, history.getValues(i++, null));
+ assertEntry(106105, 216, 39916, 200, history.getValues(i++, null));
assertEquals(history.size(), i);
// Slice from middle should be untouched
history = getHistory(collection, plan, TIME_B - HOUR_IN_MILLIS,
TIME_B + HOUR_IN_MILLIS); i = 0;
- assertEntry(3821, 22, 4525, 26, history.getValues(i++, null));
- assertEntry(3820, 22, 4524, 26, history.getValues(i++, null));
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
+ assertEntry(3821, 23, 4525, 26, history.getValues(i++, null));
+ assertEntry(3820, 21, 4524, 26, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
assertEquals(history.size(), i);
}
@@ -373,25 +373,25 @@
assertEntry(527797, 760, 78570, 651, history.getValues(i++, null));
// Cycle point; start data normalization
assertEntry(7507, 0, 11763, 0, history.getValues(i++, null));
- assertEntry(7507, 0, 11763, 0, history.getValues(i++, null));
+ assertEntry(7507, 0, 11762, 0, history.getValues(i++, null));
assertEntry(62309, 0, 12589, 0, history.getValues(i++, null));
assertEntry(62309, 0, 12588, 0, history.getValues(i++, null));
assertEntry(2669, 0, 3161, 0, history.getValues(i++, null));
assertEntry(2668, 0, 3160, 0, history.getValues(i++, null));
// Anchor point; end data normalization
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
+ assertEntry(8289, 36, 6864, 39, history.getValues(i++, null));
+ assertEntry(8289, 34, 6862, 37, history.getValues(i++, null));
assertEntry(113914, 174, 18364, 157, history.getValues(i++, null));
assertEntry(113913, 173, 18364, 157, history.getValues(i++, null));
// Cycle point
- assertEntry(11378, 49, 9261, 49, history.getValues(i++, null));
- assertEntry(11377, 48, 9261, 49, history.getValues(i++, null));
- assertEntry(201765, 328, 41808, 291, history.getValues(i++, null));
- assertEntry(201765, 328, 41807, 290, history.getValues(i++, null));
- assertEntry(106106, 218, 39917, 201, history.getValues(i++, null));
- assertEntry(106105, 217, 39917, 201, history.getValues(i++, null));
+ assertEntry(11378, 49, 9261, 50, history.getValues(i++, null));
+ assertEntry(11377, 48, 9261, 48, history.getValues(i++, null));
+ assertEntry(201766, 328, 41808, 291, history.getValues(i++, null));
+ assertEntry(201764, 328, 41807, 290, history.getValues(i++, null));
+ assertEntry(106106, 219, 39918, 202, history.getValues(i++, null));
+ assertEntry(106105, 216, 39916, 200, history.getValues(i++, null));
assertEquals(history.size(), i);
// Slice from middle should be augmented
@@ -399,8 +399,8 @@
TIME_B + HOUR_IN_MILLIS); i = 0;
assertEntry(2669, 0, 3161, 0, history.getValues(i++, null));
assertEntry(2668, 0, 3160, 0, history.getValues(i++, null));
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
assertEquals(history.size(), i);
}
@@ -427,34 +427,34 @@
assertEntry(527798, 761, 78570, 652, history.getValues(i++, null));
assertEntry(527797, 760, 78570, 651, history.getValues(i++, null));
// Cycle point; start data normalization
- assertEntry(15015, 0, 23526, 0, history.getValues(i++, null));
- assertEntry(15015, 0, 23526, 0, history.getValues(i++, null));
+ assertEntry(15015, 0, 23527, 0, history.getValues(i++, null));
+ assertEntry(15015, 0, 23524, 0, history.getValues(i++, null));
assertEntry(124619, 0, 25179, 0, history.getValues(i++, null));
assertEntry(124618, 0, 25177, 0, history.getValues(i++, null));
assertEntry(5338, 0, 6322, 0, history.getValues(i++, null));
assertEntry(5337, 0, 6320, 0, history.getValues(i++, null));
// Anchor point; end data normalization
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
- assertEntry(8289, 35, 6863, 38, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
+ assertEntry(8289, 36, 6864, 39, history.getValues(i++, null));
+ assertEntry(8289, 34, 6862, 37, history.getValues(i++, null));
assertEntry(113914, 174, 18364, 157, history.getValues(i++, null));
assertEntry(113913, 173, 18364, 157, history.getValues(i++, null));
// Cycle point
- assertEntry(11378, 49, 9261, 49, history.getValues(i++, null));
- assertEntry(11377, 48, 9261, 49, history.getValues(i++, null));
- assertEntry(201765, 328, 41808, 291, history.getValues(i++, null));
- assertEntry(201765, 328, 41807, 290, history.getValues(i++, null));
- assertEntry(106106, 218, 39917, 201, history.getValues(i++, null));
- assertEntry(106105, 217, 39917, 201, history.getValues(i++, null));
+ assertEntry(11378, 49, 9261, 50, history.getValues(i++, null));
+ assertEntry(11377, 48, 9261, 48, history.getValues(i++, null));
+ assertEntry(201766, 328, 41808, 291, history.getValues(i++, null));
+ assertEntry(201764, 328, 41807, 290, history.getValues(i++, null));
+ assertEntry(106106, 219, 39918, 202, history.getValues(i++, null));
+ assertEntry(106105, 216, 39916, 200, history.getValues(i++, null));
// Slice from middle should be augmented
history = getHistory(collection, plan, TIME_B - HOUR_IN_MILLIS,
TIME_B + HOUR_IN_MILLIS); i = 0;
assertEntry(5338, 0, 6322, 0, history.getValues(i++, null));
assertEntry(5337, 0, 6320, 0, history.getValues(i++, null));
- assertEntry(91686, 159, 18575, 146, history.getValues(i++, null));
- assertEntry(91685, 159, 18575, 146, history.getValues(i++, null));
+ assertEntry(91686, 159, 18576, 146, history.getValues(i++, null));
+ assertEntry(91685, 159, 18574, 146, history.getValues(i++, null));
assertEquals(history.size(), i);
}
}
diff --git a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
index b346c92..64c0221 100644
--- a/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
+++ b/tests/net/java/com/android/server/net/NetworkStatsServiceTest.java
@@ -42,6 +42,7 @@
import static android.net.NetworkStats.UID_ALL;
import static android.net.NetworkStatsHistory.FIELD_ALL;
import static android.net.NetworkTemplate.buildTemplateMobileAll;
+import static android.net.NetworkTemplate.buildTemplateMobileWithRatType;
import static android.net.NetworkTemplate.buildTemplateWifiWildcard;
import static android.net.TrafficStats.MB_IN_BYTES;
import static android.net.TrafficStats.UID_REMOVED;
@@ -60,11 +61,13 @@
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.annotation.NonNull;
+import android.annotation.Nullable;
import android.app.AlarmManager;
import android.app.usage.NetworkStatsManager;
import android.content.Context;
@@ -92,6 +95,8 @@
import android.os.Messenger;
import android.os.PowerManager;
import android.os.SimpleClock;
+import android.telephony.PhoneStateListener;
+import android.telephony.ServiceState;
import android.telephony.TelephonyManager;
import androidx.test.InstrumentationRegistry;
@@ -163,11 +168,14 @@
private @Mock NetworkStatsSettings mSettings;
private @Mock IBinder mBinder;
private @Mock AlarmManager mAlarmManager;
+ private @Mock TelephonyManager mTelephonyManager;
private HandlerThread mHandlerThread;
private NetworkStatsService mService;
private INetworkStatsSession mSession;
private INetworkManagementEventObserver mNetworkObserver;
+ @Nullable
+ private PhoneStateListener mPhoneStateListener;
private final Clock mClock = new SimpleClock(ZoneOffset.UTC) {
@Override
@@ -195,7 +203,7 @@
mHandlerThread = new HandlerThread("HandlerThread");
final NetworkStatsService.Dependencies deps = makeDependencies();
mService = new NetworkStatsService(mServiceContext, mNetManager, mAlarmManager, wakeLock,
- mClock, mServiceContext.getSystemService(TelephonyManager.class), mSettings,
+ mClock, mTelephonyManager, mSettings,
mStatsFactory, new NetworkStatsObservers(), mStatsDir, getBaseDir(mStatsDir), deps);
mElapsedRealtime = 0L;
@@ -216,6 +224,12 @@
ArgumentCaptor.forClass(INetworkManagementEventObserver.class);
verify(mNetManager).registerObserver(networkObserver.capture());
mNetworkObserver = networkObserver.getValue();
+
+ // Capture the phone state listener that created by service.
+ final ArgumentCaptor<PhoneStateListener> phoneStateListenerCaptor =
+ ArgumentCaptor.forClass(PhoneStateListener.class);
+ verify(mTelephonyManager).listen(phoneStateListenerCaptor.capture(), anyInt());
+ mPhoneStateListener = phoneStateListenerCaptor.getValue();
}
@NonNull
@@ -534,7 +548,7 @@
}
@Test
- public void testUid3g4gCombinedByTemplate() throws Exception {
+ public void testUid3gWimaxCombinedByTemplate() throws Exception {
// pretend that network comes online
expectDefaultSettings();
NetworkState[] states = new NetworkState[] {buildMobile3gState(IMSI_1)};
@@ -558,10 +572,10 @@
assertUidTotal(sTemplateImsi1, UID_RED, 1024L, 8L, 1024L, 8L, 5);
- // now switch over to 4g network
+ // now switch over to wimax network
incrementCurrentTime(HOUR_IN_MILLIS);
expectDefaultSettings();
- states = new NetworkState[] {buildMobile4gState(TEST_IFACE2)};
+ states = new NetworkState[] {buildWimaxState(TEST_IFACE2)};
expectNetworkStatsSummary(buildEmptyStats());
expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
.insertEntry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE, 1024L, 8L, 1024L, 8L, 0L)
@@ -589,6 +603,89 @@
}
@Test
+ public void testMobileStatsByRatType() throws Exception {
+ final NetworkTemplate template3g =
+ buildTemplateMobileWithRatType(null, TelephonyManager.NETWORK_TYPE_UMTS);
+ final NetworkTemplate template4g =
+ buildTemplateMobileWithRatType(null, TelephonyManager.NETWORK_TYPE_LTE);
+ final NetworkTemplate template5g =
+ buildTemplateMobileWithRatType(null, TelephonyManager.NETWORK_TYPE_NR);
+ final NetworkState[] states = new NetworkState[]{buildMobile3gState(IMSI_1)};
+
+ // 3G network comes online.
+ expectNetworkStatsSummary(buildEmptyStats());
+ expectNetworkStatsUidDetail(buildEmptyStats());
+
+ setMobileRatTypeAndWaitForIdle(TelephonyManager.NETWORK_TYPE_UMTS);
+ mService.forceUpdateIfaces(NETWORKS_MOBILE, states, getActiveIface(states),
+ new VpnInfo[0]);
+
+ // Create some traffic.
+ incrementCurrentTime(MINUTE_IN_MILLIS);
+ expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
+ 12L, 18L, 14L, 1L, 0L)));
+ forcePollAndWaitForIdle();
+
+ // Verify 3g templates gets stats.
+ assertUidTotal(sTemplateImsi1, UID_RED, 12L, 18L, 14L, 1L, 0);
+ assertUidTotal(template3g, UID_RED, 12L, 18L, 14L, 1L, 0);
+ assertUidTotal(template4g, UID_RED, 0L, 0L, 0L, 0L, 0);
+ assertUidTotal(template5g, UID_RED, 0L, 0L, 0L, 0L, 0);
+
+ // 4G network comes online.
+ incrementCurrentTime(MINUTE_IN_MILLIS);
+ setMobileRatTypeAndWaitForIdle(TelephonyManager.NETWORK_TYPE_LTE);
+ expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
+ // Append more traffic on existing 3g stats entry.
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
+ 16L, 22L, 17L, 2L, 0L))
+ // Add entry that is new on 4g.
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE,
+ 33L, 27L, 8L, 10L, 1L)));
+ forcePollAndWaitForIdle();
+
+ // Verify ALL_MOBILE template gets all. 3g template counters do not increase.
+ assertUidTotal(sTemplateImsi1, UID_RED, 49L, 49L, 25L, 12L, 1);
+ assertUidTotal(template3g, UID_RED, 12L, 18L, 14L, 1L, 0);
+ // Verify 4g template counts appended stats on existing entry and newly created entry.
+ assertUidTotal(template4g, UID_RED, 4L + 33L, 4L + 27L, 3L + 8L, 1L + 10L, 1);
+ // Verify 5g template doesn't get anything since no traffic is generated on 5g.
+ assertUidTotal(template5g, UID_RED, 0L, 0L, 0L, 0L, 0);
+
+ // 5g network comes online.
+ incrementCurrentTime(MINUTE_IN_MILLIS);
+ setMobileRatTypeAndWaitForIdle(TelephonyManager.NETWORK_TYPE_NR);
+ expectNetworkStatsUidDetail(new NetworkStats(getElapsedRealtime(), 1)
+ // Existing stats remains.
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
+ 16L, 22L, 17L, 2L, 0L))
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_FOREGROUND, TAG_NONE,
+ 33L, 27L, 8L, 10L, 1L))
+ // Add some traffic on 5g.
+ .addEntry(new NetworkStats.Entry(TEST_IFACE, UID_RED, SET_DEFAULT, TAG_NONE,
+ 5L, 13L, 31L, 9L, 2L)));
+ forcePollAndWaitForIdle();
+
+ // Verify ALL_MOBILE template gets all.
+ assertUidTotal(sTemplateImsi1, UID_RED, 54L, 62L, 56L, 21L, 3);
+ // 3g/4g template counters do not increase.
+ assertUidTotal(template3g, UID_RED, 12L, 18L, 14L, 1L, 0);
+ assertUidTotal(template4g, UID_RED, 4L + 33L, 4L + 27L, 3L + 8L, 1L + 10L, 1);
+ // Verify 5g template gets the 5g count.
+ assertUidTotal(template5g, UID_RED, 5L, 13L, 31L, 9L, 2);
+ }
+
+ // TODO: support per IMSI state
+ private void setMobileRatTypeAndWaitForIdle(int ratType) {
+ final ServiceState mockSs = mock(ServiceState.class);
+ when(mockSs.getDataNetworkType()).thenReturn(ratType);
+ mPhoneStateListener.onServiceStateChanged(mockSs);
+
+ HandlerUtilsKt.waitForIdle(mHandlerThread, WAIT_TIMEOUT);
+ }
+
+ @Test
public void testSummaryForAllUid() throws Exception {
// pretend that network comes online
expectDefaultSettings();
@@ -1242,6 +1339,7 @@
final NetworkCapabilities capabilities = new NetworkCapabilities();
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, !isMetered);
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, true);
+ capabilities.addTransportType(NetworkCapabilities.TRANSPORT_WIFI);
return new NetworkState(info, prop, capabilities, WIFI_NETWORK, null, TEST_SSID);
}
@@ -1259,10 +1357,11 @@
final NetworkCapabilities capabilities = new NetworkCapabilities();
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_METERED, false);
capabilities.setCapability(NetworkCapabilities.NET_CAPABILITY_NOT_ROAMING, !isRoaming);
+ capabilities.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);
return new NetworkState(info, prop, capabilities, MOBILE_NETWORK, subscriberId, null);
}
- private static NetworkState buildMobile4gState(String iface) {
+ private static NetworkState buildWimaxState(@NonNull String iface) {
final NetworkInfo info = new NetworkInfo(TYPE_WIMAX, 0, null, null);
info.setDetailedState(DetailedState.CONNECTED, null, null);
final LinkProperties prop = new LinkProperties();
diff --git a/tools/fonts/fontchain_linter.py b/tools/fonts/fontchain_linter.py
index a4a315b..f0b7595 100755
--- a/tools/fonts/fontchain_linter.py
+++ b/tools/fonts/fontchain_linter.py
@@ -316,20 +316,25 @@
def check_emoji_font_coverage(emoji_font, all_emoji, equivalent_emoji):
coverage = get_emoji_map(emoji_font)
+
+ errors = []
+
for sequence in all_emoji:
- assert sequence in coverage, (
- '%s is not supported in the emoji font.' % printable(sequence))
+ if not sequence in coverage:
+ errors.append('%s is not supported in the emoji font.' % printable(sequence))
for sequence in coverage:
if sequence in {0x0000, 0x000D, 0x0020}:
# The font needs to support a few extra characters, which is OK
continue
- assert sequence in all_emoji, (
- 'Emoji font should not support %s.' % printable(sequence))
+ if sequence not in all_emoji:
+ errors.append('%s support unexpected in the emoji font.' % printable(sequence))
for first, second in equivalent_emoji.items():
- assert coverage[first] == coverage[second], (
- '%s and %s should map to the same glyph.' % (
+ if first not in coverage or second not in coverage:
+ continue # sequence will be reported missing
+ if coverage[first] != coverage[second]:
+ errors.append('%s and %s should map to the same glyph.' % (
printable(first),
printable(second)))
@@ -344,11 +349,13 @@
while equivalent_seq in equivalent_emoji:
equivalent_seq = equivalent_emoji[equivalent_seq]
equivalent_seqs.add(equivalent_seq)
- assert len(equivalent_seqs) == 1, (
- 'The sequences %s should not result in the same glyph %s' % (
+ if len(equivalent_seqs) != 1:
+ errors.append('The sequences %s should not result in the same glyph %s' % (
printable(equivalent_seqs),
glyph))
+ assert not errors, '%d emoji font errors:\n%s\n%d emoji font coverage errors' % (len(errors), '\n'.join(errors), len(errors))
+
def check_emoji_defaults(default_emoji):
missing_text_chars = _emoji_properties['Emoji'] - default_emoji